about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2009-03-03 16:33:40 +0100
committerAlexander Barton <alex@barton.de>2009-03-03 16:33:40 +0100
commit0a9608a26f4c5fec7d09f13a814bf4e384b17759 (patch)
tree156705f58634451bb1c6859138b06f29e4d886c5
parentdee89c2355f973db0ba7c7ca81c83940caefc3d4 (diff)
downloadngircd-0a9608a26f4c5fec7d09f13a814bf4e384b17759.tar.gz
ngircd-0a9608a26f4c5fec7d09f13a814bf4e384b17759.zip
Channel mode changes: break on error
Don't echo multiple syntax error messages (461) on invalid commands,
but break after the first one.
In addition, this solves corrupted 'Unknown mode "+' messages.
-rw-r--r--src/ngircd/irc-mode.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c
index 2c142288..9ada4f13 100644
--- a/src/ngircd/irc-mode.c
+++ b/src/ngircd/irc-mode.c
@@ -440,6 +440,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 				ok = IRC_WriteStrClient(Origin,
 					ERR_NEEDMOREPARAMS_MSG,
 					Client_ID(Origin), Req->command);
+				goto chan_exit;
 			}
 			break;
 		case 'l': /* Member limit */
@@ -475,6 +476,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 				ok = IRC_WriteStrClient(Origin,
 					ERR_NEEDMOREPARAMS_MSG,
 					Client_ID(Origin), Req->command);
+				goto chan_exit;
 			}
 			break;
 		case 'P': /* Persistent channel */
@@ -519,6 +521,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 				ok = IRC_WriteStrClient(Origin,
 					ERR_NEEDMOREPARAMS_MSG,
 					Client_ID(Origin), Req->command);
+				goto chan_exit;
 			}
 			break;
 		/* --- Channel lists --- */