Added SILC Thread Queue API
[crypto.git] / apps / irssi / src / core / chatnets.c
index a2cff529c9a167e20691e5294e3f0b695251428c..9e43f859a81ec01335017d8b3f6644b1c3ff8452 100644 (file)
@@ -118,7 +118,8 @@ static void sig_connected(SERVER_REC *server)
 
        g_return_if_fail(IS_SERVER(server));
 
-       if (server->connrec->chatnet == NULL)
+       if (server->connrec->chatnet == NULL || server->session_reconnect ||
+           server->connrec->no_autojoin_channels)
                return;
 
        rec = chatnet_find(server->connrec->chatnet);
@@ -162,39 +163,30 @@ static void chatnet_read(CONFIG_NODE *node)
 static void read_chatnets(void)
 {
        CONFIG_NODE *node;
+        GSList *tmp;
 
        while (chatnets != NULL)
                 chatnet_destroy(chatnets->data);
 
        node = iconfig_node_traverse("chatnets", FALSE);
-       if (node == NULL) {
-               /* FIXME: remove after .98 */
-               node = iconfig_node_traverse("ircnets", FALSE);
-               if (node != NULL) {
-                       /* very dirty method - doesn't update hashtables
-                          but this will do temporarily.. */
-                       g_free(node->key);
-                        node->key = g_strdup("chatnets");
-               }
+       if (node != NULL) {
+               tmp = config_node_first(node->value);
+               for (; tmp != NULL; tmp = config_node_next(tmp))
+                        chatnet_read(tmp->data);
        }
-
-       if (node != NULL)
-                g_slist_foreach(node->value, (GFunc) chatnet_read, NULL);
 }
 
 void chatnets_init(void)
 {
        chatnets = NULL;
 
-       signal_add("event connected", (SIGNAL_FUNC) sig_connected);
+       signal_add_first("event connected", (SIGNAL_FUNC) sig_connected);
        signal_add("setup reread", (SIGNAL_FUNC) read_chatnets);
         signal_add_first("irssi init read settings", (SIGNAL_FUNC) read_chatnets);
 }
 
 void chatnets_deinit(void)
 {
-       while (chatnets != NULL)
-               chatnet_destroy(chatnets->data);
        module_uniq_destroy("CHATNET");
 
        signal_remove("event connected", (SIGNAL_FUNC) sig_connected);