summary refs log tree commit diff stats
path: root/src/common/inbound.c
diff options
context:
space:
mode:
authorBerke Viktor <berkeviktor@aol.com>2012-06-02 04:33:53 +0200
committerBerke Viktor <berkeviktor@aol.com>2012-06-02 04:33:53 +0200
commit23f20cc230f0d98d8f4ffb2d2439d1472cc735e3 (patch)
tree36febcaad3fa2aa6e79d28aa5d2112f21059f7bc /src/common/inbound.c
parent3f556398b3de500bf045f561f7a8d1a517a58dae (diff)
Update XChat to r1508
Diffstat (limited to 'src/common/inbound.c')
-rw-r--r--src/common/inbound.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/common/inbound.c b/src/common/inbound.c
index 1d621583..719bbe60 100644
--- a/src/common/inbound.c
+++ b/src/common/inbound.c
@@ -1025,6 +1025,8 @@ check_autojoin_channels (server *serv)
 
 	/* this is really only for re-connects when you
     * join channels not in the auto-join list. */
+	channels = NULL;
+	keys = NULL;
 	while (list)
 	{
 		sess = list->data;
@@ -1034,18 +1036,28 @@ check_autojoin_channels (server *serv)
 			{
 				strcpy (sess->waitchannel, sess->willjoinchannel);
 				sess->willjoinchannel[0] = 0;
-				serv->p_join (serv, sess->waitchannel, sess->channelkey);
+
 				po = strchr (sess->waitchannel, ',');
 				if (po)
 					*po = 0;
 				po = strchr (sess->waitchannel, ' ');
 				if (po)
 					*po = 0;
+
+				channels = g_slist_append (channels, g_strdup (sess->waitchannel));
+				keys = g_slist_append (keys, g_strdup (sess->channelkey));
 				i++;
 			}
 		}
 		list = list->next;
 	}
+
+	if (channels)
+	{
+		serv->p_join_list (serv, channels, keys);
+		joinlist_free (channels, keys);
+	}
+
 	serv->joindelay_tag = 0;
 	fe_server_event (serv, FE_SE_LOGGEDIN, i);
 	return FALSE;