about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2011-12-28 14:39:47 +0100
committerAlexander Barton <alex@barton.de>2011-12-28 14:46:17 +0100
commita71abfef4b82aace4989db6a4ed3c94d1266b287 (patch)
tree24e9720d3b305a8ac86c1ddb7f7c2e344cfc650f
parent8a8e8a3a23576ccdf06aec7d0a2e6a0d8584a9d8 (diff)
downloadngircd-a71abfef4b82aace4989db6a4ed3c94d1266b287.tar.gz
ngircd-a71abfef4b82aace4989db6a4ed3c94d1266b287.zip
Don't stop mode handling on unknown modes; skip it
Unknown user and channel modes no longer stop the mode parser, but are
simply ignored. Therefore modes after the unknown one are now handled.

This is how ircd2.10/ircd2.11/ircd-seven behave, at least.

Reported by Cahata -- thanks!
-rw-r--r--src/ngircd/irc-mode.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c
index ba44a3ba..d8329b16 100644
--- a/src/ngircd/irc-mode.c
+++ b/src/ngircd/irc-mode.c
@@ -253,7 +253,6 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target )
 							set ? '+' : '-',
 							*mode_ptr);
 				x[0] = '\0';
-				goto client_exit;
 			} else {
 				Log(LOG_DEBUG,
 				    "Handling unknown mode \"%c%c\" from \"%s\" for \"%s\" ...",
@@ -278,7 +277,6 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target )
 				strlcat(the_modes, x, sizeof(the_modes));
 		}
 	}
-client_exit:
 
 	/* Are there changed modes? */
 	if (the_modes[1]) {
@@ -671,7 +669,6 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 					Client_ID(Origin),
 					set ? '+' : '-', *mode_ptr);
 				x[0] = '\0';
-				goto chan_exit;
 			} else {
 				Log(LOG_DEBUG,
 				    "Handling unknown mode \"%c%c\" from \"%s\" on %s ...",