Don't stop join handling on faulty channel, skip it
authorAlexander Barton <alex@barton.de>
Mon, 2 Jan 2012 14:23:17 +0000 (15:23 +0100)
committerAlexander Barton <alex@barton.de>
Mon, 2 Jan 2012 14:23:17 +0000 (15:23 +0100)
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!

src/ngircd/irc-channel.c

index a41f1d48e15cc9ddf66e959cdbc8a22386921b42..6ddad88b1a9f3817d28a6c3962f03064348eaf3a 100644 (file)
@@ -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)