~singpolyma/biboumi

45f7396c8d30ed37570c4ecdaa886388f9beba3e — louiz’ 7 years ago b660a47
Cancel the IRC server linger timer when we try to-rejoin a channel on it
2 files changed, 8 insertions(+), 0 deletions(-)

M src/bridge/bridge.cpp
M src/bridge/bridge.hpp
M src/bridge/bridge.cpp => src/bridge/bridge.cpp +7 -0
@@ 169,6 169,7 @@ bool Bridge::join_irc_channel(const Iid& iid, const std::string& nickname, const
                              const std::string& resource)
{
  const auto hostname = iid.get_server();
  this->cancel_linger_timer(hostname);
  IrcClient* irc = this->make_irc_client(hostname, nickname);
  this->add_resource_to_server(hostname, resource);
  auto res_in_chan = this->is_resource_in_chan(ChannelKey{iid.get_local(), hostname}, resource);


@@ 1232,3 1233,9 @@ void Bridge::quit_or_start_linger_timer(const std::string& irc_hostname)
  }, event_name);
  TimedEventsManager::instance().add_event(std::move(event));
}

void Bridge::cancel_linger_timer(const std::string& irc_hostname)
{
  const auto event_name = "IRCLINGER:" + irc_hostname + ".." + this->get_bare_jid();
  TimedEventsManager::instance().cancel(event_name);
}

M src/bridge/bridge.hpp => src/bridge/bridge.hpp +1 -0
@@ 241,6 241,7 @@ public:
   * configured linger time is expired.
   */
  void quit_or_start_linger_timer(const std::string& irc_hostname);
  void cancel_linger_timer(const std::string& irc_hostname);

private:
  /**