Cancel the IRC server linger timer when we try to-rejoin a channel on it
This commit is contained in:
@@ -169,6 +169,7 @@ bool Bridge::join_irc_channel(const Iid& iid, const std::string& nickname, const
|
|||||||
const std::string& resource)
|
const std::string& resource)
|
||||||
{
|
{
|
||||||
const auto hostname = iid.get_server();
|
const auto hostname = iid.get_server();
|
||||||
|
this->cancel_linger_timer(hostname);
|
||||||
IrcClient* irc = this->make_irc_client(hostname, nickname);
|
IrcClient* irc = this->make_irc_client(hostname, nickname);
|
||||||
this->add_resource_to_server(hostname, resource);
|
this->add_resource_to_server(hostname, resource);
|
||||||
auto res_in_chan = this->is_resource_in_chan(ChannelKey{iid.get_local(), 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);
|
}, event_name);
|
||||||
TimedEventsManager::instance().add_event(std::move(event));
|
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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -241,6 +241,7 @@ public:
|
|||||||
* configured linger time is expired.
|
* configured linger time is expired.
|
||||||
*/
|
*/
|
||||||
void quit_or_start_linger_timer(const std::string& irc_hostname);
|
void quit_or_start_linger_timer(const std::string& irc_hostname);
|
||||||
|
void cancel_linger_timer(const std::string& irc_hostname);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user