repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 0a9608a26f4c5fec7d09f13a814bf4e384b17759:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 0a9608a26f4c5fec7d09f13a814bf4e384b17759
Author: Alexander Barton 
Date:   Tue Mar 3 16:33:40 2009 +0100

    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.

diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c
index 2c142288fd446d04dd48322c9da121a960a138a5..
index ..9ada4f13c7f1e437733b4e2ea42bd89273bc4ba4 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 --- */

-----END OF PAGE-----