mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	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!
This commit is contained in:
		| @@ -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 ...", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alexander Barton
					Alexander Barton