]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-channel.c
Display correct error message when "Server{UID|GID}" is invalid
[ngircd-alex.git] / src / ngircd / irc-channel.c
index cc70eb47d5d25e77bdf170e8117828ec8e92a6f1..6ddad88b1a9f3817d28a6c3962f03064348eaf3a 100644 (file)
@@ -301,9 +301,9 @@ join_send_topic(CLIENT *Client, CLIENT *target, CHANNEL *chan,
  *
  * See RFC 2812, 3.2.1 "Join message"; RFC 2813, 4.2.1 "Join message".
  *
- * @param Client       The client from which this command has been received
- * @param Req          Request structure with prefix and all parameters
- * @returns            CONNECTED or DISCONNECTED
+ * @param Client The client from which this command has been received
+ * @param Req Request structure with prefix and all parameters
+ * @returns CONNECTED or DISCONNECTED
  */
 GLOBAL bool
 IRC_JOIN( CLIENT *Client, REQUEST *Req )
@@ -312,8 +312,8 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
        CLIENT *target;
        CHANNEL *chan;
 
-       assert( Client != NULL );
-       assert( Req != NULL );
+       assert (Client != NULL);
+       assert (Req != NULL);
 
        /* Bad number of arguments? */
        if (Req->argc < 1 || Req->argc > 2)
@@ -327,7 +327,8 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
                target = Client;
 
        if (!target)
-               return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG, Client_ID(Client), Req->prefix);
+               return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+                                         Client_ID(Client), Req->prefix);
 
        /* Is argument "0"? */
        if (Req->argc == 1 && !strncmp("0", Req->argv[0], 2))
@@ -359,8 +360,9 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 
                chan = Channel_Search(channame);
                if (!chan && Conf_PredefChannelsOnly) {
-                        /* channel must be created, but server does not allow this */
-                       IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG, Client_ID(Client), channame);
+                        /* channel must be created, but forbidden by config */
+                       IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG,
+                                          Client_ID(Client), channame);
                        break;
                }
 
@@ -399,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);
@@ -418,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)