]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Handle unknown channel modes on server links
authorAlexander Barton <alex@barton.de>
Mon, 1 Aug 2011 20:30:00 +0000 (22:30 +0200)
committerAlexander Barton <alex@barton.de>
Mon, 1 Aug 2011 20:30:00 +0000 (22:30 +0200)
src/ngircd/irc-mode.c

index b469a16911f65292b0fddb3df21574dcaee0c642..326c1046f6d5f82597212ea4ae38f88bee104e82 100644 (file)
@@ -650,18 +650,25 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
                        }
                        break;
                default:
-                       Log(LOG_DEBUG,
-                           "Unknown mode \"%c%c\" from \"%s\" on %s!?",
-                           set ? '+' : '-', *mode_ptr, Client_ID(Origin),
-                           Channel_Name(Channel));
-                       if (Client_Type(Client) != CLIENT_SERVER)
+                       if (Client_Type(Client) != CLIENT_SERVER) {
+                               Log(LOG_DEBUG,
+                                   "Unknown mode \"%c%c\" from \"%s\" on %s!?",
+                                   set ? '+' : '-', *mode_ptr,
+                                   Client_ID(Origin), Channel_Name(Channel));
                                connected = IRC_WriteStrClient(Origin,
                                        ERR_UMODEUNKNOWNFLAG2_MSG,
                                        Client_ID(Origin),
                                        set ? '+' : '-', *mode_ptr);
-                       x[0] = '\0';
-                       goto chan_exit;
-               }       /* switch() */
+                               x[0] = '\0';
+                               goto chan_exit;
+                       } else {
+                               Log(LOG_DEBUG,
+                                   "Handling unknown mode \"%c%c\" from \"%s\" on %s ...",
+                                   set ? '+' : '-', *mode_ptr,
+                                   Client_ID(Origin), Channel_Name(Channel));
+                               x[0] = *mode_ptr;
+                       }
+               }
 
                if (!connected)
                        break;