]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-login.c
First check if channel has mode "N", then check membership
[ngircd-alex.git] / src / ngircd / irc-login.c
index 79c0dcd42cb3eb108410077fba0e62a25889d724..9fca622ba0ea66422940e2d71dc2dff0d5f2eee4 100644 (file)
@@ -262,16 +262,18 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
                        /* Nickname change */
 
                        /* Check that the user isn't on any channels set +N */
-                       chan = Channel_First();
-                       while (chan) {
-                               if(Channel_IsMemberOf(chan, Client) &&
-                                  Channel_HasMode(chan, 'N') &&
-                                  !Client_HasMode(Client, 'o'))
-                                       return IRC_WriteErrClient(Client,
-                                                                 ERR_NONICKCHANGE_MSG,
-                                                                 Client_ID(Client),
-                                                                 Channel_Name(chan));
-                               chan = Channel_Next(chan);
+                       if(Client_Type(Client) == CLIENT_USER &&
+                          !Client_HasMode(Client, 'o')) {
+                               chan = Channel_First();
+                               while (chan) {
+                                       if(Channel_HasMode(chan, 'N') &&
+                                          Channel_IsMemberOf(chan, Client))
+                                               return IRC_WriteErrClient(Client,
+                                                                         ERR_NONICKCHANGE_MSG,
+                                                                         Client_ID(Client),
+                                                                         Channel_Name(chan));
+                                       chan = Channel_Next(chan);
+                               }
                        }
 
                        Change_Nick(Client, target, Req->argv[0],