]> jfr.im git - irc/weechat/weechat.git/commitdiff
irc: do not join channels in server autojoin option after reconnection to the server...
authorSébastien Helleu <redacted>
Sat, 17 Dec 2022 11:55:39 +0000 (12:55 +0100)
committerSébastien Helleu <redacted>
Sat, 17 Dec 2022 11:55:39 +0000 (12:55 +0100)
ChangeLog.adoc
src/plugins/irc/irc-server.c

index 805474a24bea38c995f426fe547126911ba25d05..599b22eaca75fbf7f608f30b80796c4b83b89777 100644 (file)
@@ -37,6 +37,7 @@ Bug fixes::
   * api: send NULL values to config section callbacks in scripting API (issue #1843)
   * api: fix function string_cut when there are non printable chars in suffix
   * api: do not expect any return value in callbacks "callback_change" and "callback_delete" of function config_new_option (scripting API)
+  * irc: do not join channels in server autojoin option after reconnection to the server (issue #560, bug #21529)
   * irc: escape backslashes in raw buffer (issue #1838)
   * trigger: fix variables sent to focus callback (issue #1858)
 
index 499dd151a9e83ebfe07a1eeb142412e39d736005..45c3519ccd5fe3c9b9e2cd16a464fa0ee99d990a 100644 (file)
@@ -5707,30 +5707,36 @@ irc_server_autojoin_channels (struct t_irc_server *server)
 {
     char *autojoin;
 
-    /* auto-join after disconnection (only rejoins opened channels) */
-    if (!server->disable_autojoin && server->reconnect_join && server->channels)
+    if (!server->disable_autojoin)
     {
-        autojoin = irc_server_build_autojoin (server);
-        if (autojoin)
+        /* auto-join after disconnection (only rejoins opened channels) */
+        if (server->reconnect_join)
         {
-            irc_server_sendf (server,
-                              IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL,
-                              "JOIN %s",
-                              autojoin);
-            free (autojoin);
+            if (server->channels)
+            {
+                autojoin = irc_server_build_autojoin (server);
+                if (autojoin)
+                {
+                    irc_server_sendf (server,
+                                      IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL,
+                                      "JOIN %s",
+                                      autojoin);
+                    free (autojoin);
+                }
+            }
+            server->reconnect_join = 0;
+        }
+        else
+        {
+            /* auto-join when connecting to server for first time */
+            autojoin = irc_server_eval_expression (
+                server,
+                IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_AUTOJOIN));
+            if (autojoin && autojoin[0])
+                irc_command_join_server (server, autojoin, 0, 0);
+            if (autojoin)
+                free (autojoin);
         }
-        server->reconnect_join = 0;
-    }
-    else
-    {
-        /* auto-join when connecting to server for first time */
-        autojoin = irc_server_eval_expression (
-            server,
-            IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_AUTOJOIN));
-        if (!server->disable_autojoin && autojoin && autojoin[0])
-            irc_command_join_server (server, autojoin, 0, 0);
-        if (autojoin)
-            free (autojoin);
     }
 
     server->disable_autojoin = 0;