]> jfr.im git - irc/irssi/irssi.git/commitdiff
Merge pull request #438 from dequis/sasl-timeout-disconnect
authorailin-nemui <redacted>
Thu, 17 Mar 2016 15:14:34 +0000 (16:14 +0100)
committerailin-nemui <redacted>
Tue, 22 Mar 2016 23:08:35 +0000 (00:08 +0100)
Remove sasl timeout source when the server disconnects

src/irc/core/sasl.c

index 8fba9ba274d4cda5405fb726aac4b84c03a570d4..db0993680c762d23a4b72bb5169c1f33038ac2f9 100644 (file)
@@ -153,6 +153,20 @@ static void sasl_step(IRC_SERVER_REC *server, const char *data, const char *from
        server->sasl_timeout = g_timeout_add(SASL_TIMEOUT, (GSourceFunc) sasl_timeout, server);
 }
 
+static void sasl_disconnected(IRC_SERVER_REC *server)
+{
+       g_return_if_fail(server != NULL);
+
+       if (!IS_IRC_SERVER(server)) {
+               return;
+       }
+
+       if (server->sasl_timeout != -1) {
+               g_source_remove(server->sasl_timeout);
+               server->sasl_timeout = -1;
+       }
+}
+
 void sasl_init(void)
 {
        signal_add_first("server cap ack sasl", (SIGNAL_FUNC) sasl_start);
@@ -163,6 +177,7 @@ void sasl_init(void)
        signal_add_first("event 905", (SIGNAL_FUNC) sasl_fail);
        signal_add_first("event 906", (SIGNAL_FUNC) sasl_fail);
        signal_add_first("event 907", (SIGNAL_FUNC) sasl_already);
+       signal_add_first("server disconnected", (SIGNAL_FUNC) sasl_disconnected);
 }
 
 void sasl_deinit(void)
@@ -175,4 +190,5 @@ void sasl_deinit(void)
        signal_remove("event 905", (SIGNAL_FUNC) sasl_fail);
        signal_remove("event 906", (SIGNAL_FUNC) sasl_fail);
        signal_remove("event 907", (SIGNAL_FUNC) sasl_already);
+       signal_remove("server disconnected", (SIGNAL_FUNC) sasl_disconnected);
 }