about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/irc-login.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index 79c0dcd4..10885f28 100644
--- a/src/ngircd/irc-login.c
+++ b/src/ngircd/irc-login.c
@@ -262,16 +262,17 @@ 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_HasMode(Client, 'o')) {
+				chan = Channel_First();
+				while (chan) {
+					if(Channel_IsMemberOf(chan, Client) &&
+					   Channel_HasMode(chan, 'N'))
+						return IRC_WriteErrClient(Client,
+									  ERR_NONICKCHANGE_MSG,
+									  Client_ID(Client),
+									  Channel_Name(chan));
+					chan = Channel_Next(chan);
+				}
 			}
 
 			Change_Nick(Client, target, Req->argv[0],