repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 565523cbb4a5e2f34d584002916faba411a94187:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 565523cbb4a5e2f34d584002916faba411a94187
Author: Alexander Barton 
Date:   Mon Jan 2 15:23:17 2012 +0100

    Don't stop join handling on faulty channel, skip it

    When JOIN is received with more than one channel name, don't stop
    processing on the first error (e.g. bad name, wrong channel key, ...)
    but report an error and continue with the other given channel names.

    Reported by Cahata -- thanks!

diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c
index a41f1d48e15cc9ddf66e959cdbc8a22386921b42..
index ..6ddad88b1a9f3817d28a6c3962f03064348eaf3a 100644
--- a/src/ngircd/irc-channel.c
+++ b/src/ngircd/irc-channel.c
@@ -401,7 +401,7 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )

 		/* Join channel (and create channel if it doesn't exist) */
 		if (!Channel_Join(target, channame))
-			break;
+			goto join_next;

 		if (!chan) { /* channel is new; it has been created above */
 			chan = Channel_Search(channame);
@@ -420,6 +420,7 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 		if (!join_send_topic(Client, target, chan, channame))
 			break; /* write error */

+	join_next:
 		/* next channel? */
 		channame = strtok_r(NULL, ",", &lastchan);
 		if (channame && key)

-----END OF PAGE-----