mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-30 21:42:59 +00:00 
			
		
		
		
	Channel_Mode(): code cleanup (no functional changes)
This commit is contained in:
		| @@ -276,12 +276,14 @@ Channel_Mode_Answer_Request(CLIENT *Origin, CHANNEL *Channel) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Handle channel mode and channel-user mode changes | ||||||
|  |  */ | ||||||
| static bool | static bool | ||||||
| Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel) | ||||||
| { | { | ||||||
| 	/* Handle channel and channel-user modes */ | 	char the_modes[COMMAND_LEN], the_args[COMMAND_LEN], x[2], | ||||||
|  | 	    argadd[CLIENT_PASS_LEN], *mode_ptr; | ||||||
| 	char the_modes[COMMAND_LEN], the_args[COMMAND_LEN], x[2], argadd[CLIENT_PASS_LEN], *mode_ptr; |  | ||||||
| 	bool ok, set, modeok = true, skiponce, use_servermode = false, retval; | 	bool ok, set, modeok = true, skiponce, use_servermode = false, retval; | ||||||
| 	int mode_arg, arg_arg; | 	int mode_arg, arg_arg; | ||||||
| 	CLIENT *client; | 	CLIENT *client; | ||||||
| @@ -307,7 +309,7 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 		/* channel operator? */ | 		/* channel operator? */ | ||||||
| 		if (strchr(Channel_UserModes(Channel, Origin), 'o')) | 		if (strchr(Channel_UserModes(Channel, Origin), 'o')) | ||||||
| 			modeok = true; | 			modeok = true; | ||||||
| 		else if(Conf_OperCanMode) { | 		else if (Conf_OperCanMode) { | ||||||
| 			/* IRC-Operators can use MODE as well */ | 			/* IRC-Operators can use MODE as well */ | ||||||
| 			if (Client_OperByMe(Origin)) { | 			if (Client_OperByMe(Origin)) { | ||||||
| 				modeok = true; | 				modeok = true; | ||||||
| @@ -327,8 +329,12 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 	/* Initial state: set or unset modes? */ | 	/* Initial state: set or unset modes? */ | ||||||
| 	skiponce = false; | 	skiponce = false; | ||||||
| 	switch (*mode_ptr) { | 	switch (*mode_ptr) { | ||||||
| 	case '-': set = false; break; | 	case '-': | ||||||
| 	case '+': set = true; break; | 		set = false; | ||||||
|  | 		break; | ||||||
|  | 	case '+': | ||||||
|  | 		set = true; | ||||||
|  | 		break; | ||||||
| 	default: | 	default: | ||||||
| 		set = true; | 		set = true; | ||||||
| 		skiponce = true; | 		skiponce = true; | ||||||
| @@ -341,7 +347,7 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 	x[1] = '\0'; | 	x[1] = '\0'; | ||||||
| 	ok = CONNECTED; | 	ok = CONNECTED; | ||||||
| 	while (mode_ptr) { | 	while (mode_ptr) { | ||||||
| 		if (! skiponce) | 		if (!skiponce) | ||||||
| 			mode_ptr++; | 			mode_ptr++; | ||||||
| 		if (!*mode_ptr) { | 		if (!*mode_ptr) { | ||||||
| 			/* Try next argument if there's any */ | 			/* Try next argument if there's any */ | ||||||
| @@ -364,10 +370,11 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 		switch (*mode_ptr) { | 		switch (*mode_ptr) { | ||||||
| 		case '+': | 		case '+': | ||||||
| 		case '-': | 		case '-': | ||||||
| 			if (((*mode_ptr == '+') && !set) || ((*mode_ptr == '-') && set)) { | 			if (((*mode_ptr == '+') && !set) | ||||||
|  | 			    || ((*mode_ptr == '-') && set)) { | ||||||
| 				/* Action modifier ("+"/"-") must be changed ... */ | 				/* Action modifier ("+"/"-") must be changed ... */ | ||||||
| 				len = strlen( the_modes ) - 1; | 				len = strlen(the_modes) - 1; | ||||||
| 				if ((the_modes[len] == '+') || (the_modes[len] == '-')) { | 				if (the_modes[len] == '+' || the_modes[len] == '-') { | ||||||
| 					/* Adjust last action modifier in result */ | 					/* Adjust last action modifier in result */ | ||||||
| 					the_modes[len] = *mode_ptr; | 					the_modes[len] = *mode_ptr; | ||||||
| 				} else { | 				} else { | ||||||
| @@ -381,7 +388,8 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		/* Are there arguments left? */ | 		/* Are there arguments left? */ | ||||||
| 		if( arg_arg >= Req->argc ) arg_arg = -1; | 		if (arg_arg >= Req->argc) | ||||||
|  | 			arg_arg = -1; | ||||||
|  |  | ||||||
| 		/* Validate modes */ | 		/* Validate modes */ | ||||||
| 		x[0] = '\0'; | 		x[0] = '\0'; | ||||||
| @@ -397,29 +405,41 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 			if (modeok) | 			if (modeok) | ||||||
| 				x[0] = *mode_ptr; | 				x[0] = *mode_ptr; | ||||||
| 			else | 			else | ||||||
| 				ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID(Origin), Channel_Name(Channel)); | 				ok = IRC_WriteStrClient(Origin, | ||||||
|  | 					ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 					Client_ID(Origin), Channel_Name(Channel)); | ||||||
| 			break; | 			break; | ||||||
| 		case 'k': /* Channel key */ | 		case 'k': /* Channel key */ | ||||||
| 			if (! set) { | 			if (!set) { | ||||||
| 				if (modeok) | 				if (modeok) | ||||||
| 					x[0] = *mode_ptr; | 					x[0] = *mode_ptr; | ||||||
| 				else | 				else | ||||||
| 					ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID(Origin), Channel_Name(Channel)); | 					ok = IRC_WriteStrClient(Origin, | ||||||
|  | 						ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 						Client_ID(Origin), | ||||||
|  | 						Channel_Name(Channel)); | ||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
| 			if (arg_arg > mode_arg) { | 			if (arg_arg > mode_arg) { | ||||||
| 				if (modeok) { | 				if (modeok) { | ||||||
| 					Channel_ModeDel(Channel, 'k'); | 					Channel_ModeDel(Channel, 'k'); | ||||||
| 					Channel_SetKey(Channel, Req->argv[arg_arg]); | 					Channel_SetKey(Channel, | ||||||
| 					strlcpy(argadd, Channel_Key(Channel), sizeof(argadd)); | 						       Req->argv[arg_arg]); | ||||||
|  | 					strlcpy(argadd, Channel_Key(Channel), | ||||||
|  | 						sizeof(argadd)); | ||||||
| 					x[0] = *mode_ptr; | 					x[0] = *mode_ptr; | ||||||
| 				} else { | 				} else { | ||||||
| 					ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID(Origin), Channel_Name(Channel)); | 					ok = IRC_WriteStrClient(Origin, | ||||||
|  | 						ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 						Client_ID(Origin), | ||||||
|  | 						Channel_Name(Channel)); | ||||||
| 				} | 				} | ||||||
| 				Req->argv[arg_arg][0] = '\0'; | 				Req->argv[arg_arg][0] = '\0'; | ||||||
| 				arg_arg++; | 				arg_arg++; | ||||||
| 			} else { | 			} else { | ||||||
| 				ok = IRC_WriteStrClient(Origin, ERR_NEEDMOREPARAMS_MSG, Client_ID(Origin), Req->command); | 				ok = IRC_WriteStrClient(Origin, | ||||||
|  | 					ERR_NEEDMOREPARAMS_MSG, | ||||||
|  | 					Client_ID(Origin), Req->command); | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		case 'l': /* Member limit */ | 		case 'l': /* Member limit */ | ||||||
| @@ -427,7 +447,10 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 				if (modeok) | 				if (modeok) | ||||||
| 					x[0] = *mode_ptr; | 					x[0] = *mode_ptr; | ||||||
| 				else | 				else | ||||||
| 					ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID(Origin), Channel_Name(Channel)); | 					ok = IRC_WriteStrClient(Origin, | ||||||
|  | 						ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 						Client_ID(Origin), | ||||||
|  | 						Channel_Name(Channel)); | ||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
| 			if (arg_arg > mode_arg) { | 			if (arg_arg > mode_arg) { | ||||||
| @@ -436,28 +459,40 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 					if (l > 0 && l < 0xFFFF) { | 					if (l > 0 && l < 0xFFFF) { | ||||||
| 						Channel_ModeDel(Channel, 'l'); | 						Channel_ModeDel(Channel, 'l'); | ||||||
| 						Channel_SetMaxUsers(Channel, l); | 						Channel_SetMaxUsers(Channel, l); | ||||||
| 						snprintf(argadd, sizeof(argadd), "%ld", l); | 						snprintf(argadd, sizeof(argadd), | ||||||
|  | 							 "%ld", l); | ||||||
| 						x[0] = *mode_ptr; | 						x[0] = *mode_ptr; | ||||||
| 					} | 					} | ||||||
| 				} else { | 				} else { | ||||||
| 					ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID(Origin), Channel_Name(Channel)); | 					ok = IRC_WriteStrClient(Origin, | ||||||
|  | 						ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 						Client_ID(Origin), | ||||||
|  | 						Channel_Name(Channel)); | ||||||
| 				} | 				} | ||||||
| 				Req->argv[arg_arg][0] = '\0'; | 				Req->argv[arg_arg][0] = '\0'; | ||||||
| 				arg_arg++; | 				arg_arg++; | ||||||
| 			} else { | 			} else { | ||||||
| 				ok = IRC_WriteStrClient(Origin, ERR_NEEDMOREPARAMS_MSG, Client_ID(Origin), Req->command); | 				ok = IRC_WriteStrClient(Origin, | ||||||
|  | 					ERR_NEEDMOREPARAMS_MSG, | ||||||
|  | 					Client_ID(Origin), Req->command); | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		case 'P': /* Persistent channel */ | 		case 'P': /* Persistent channel */ | ||||||
| 			if (modeok) { | 			if (modeok) { | ||||||
| 				/* Only IRC operators are allowed to | 				/* Only IRC operators are allowed to | ||||||
| 				 * set the 'P' channel mode! */ | 				 * set the 'P' channel mode! */ | ||||||
| 				if (set && !(Client_OperByMe(Client) || Client_Type(Client) == CLIENT_SERVER)) | 				if (set && !(Client_OperByMe(Client) | ||||||
| 					ok = IRC_WriteStrClient(Origin, ERR_NOPRIVILEGES_MSG, Client_ID(Origin)); | 				    || Client_Type(Client) == CLIENT_SERVER)) | ||||||
|  | 					ok = IRC_WriteStrClient(Origin, | ||||||
|  | 						ERR_NOPRIVILEGES_MSG, | ||||||
|  | 						Client_ID(Origin)); | ||||||
| 				else | 				else | ||||||
| 					x[0] = 'P'; | 					x[0] = 'P'; | ||||||
| 			} else | 			} else | ||||||
| 				ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID(Origin), Channel_Name(Channel)); | 				ok = IRC_WriteStrClient(Origin, | ||||||
|  | 					ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 					Client_ID(Origin), | ||||||
|  | 					Channel_Name(Channel)); | ||||||
| 			break; | 			break; | ||||||
| 		/* --- Channel user modes --- */ | 		/* --- Channel user modes --- */ | ||||||
| 		case 'o': /* Channel operator */ | 		case 'o': /* Channel operator */ | ||||||
| @@ -468,14 +503,22 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 					if (client) | 					if (client) | ||||||
| 						x[0] = *mode_ptr; | 						x[0] = *mode_ptr; | ||||||
| 					else | 					else | ||||||
| 						ok = IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG, Client_ID(Client), Req->argv[arg_arg]); | 						ok = IRC_WriteStrClient(Client, | ||||||
|  | 							ERR_NOSUCHNICK_MSG, | ||||||
|  | 							Client_ID(Client), | ||||||
|  | 							Req->argv[arg_arg]); | ||||||
| 				} else { | 				} else { | ||||||
| 					ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID(Origin), Channel_Name(Channel)); | 					ok = IRC_WriteStrClient(Origin, | ||||||
|  | 						ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 						Client_ID(Origin), | ||||||
|  | 						Channel_Name(Channel)); | ||||||
| 				} | 				} | ||||||
| 				Req->argv[arg_arg][0] = '\0'; | 				Req->argv[arg_arg][0] = '\0'; | ||||||
| 				arg_arg++; | 				arg_arg++; | ||||||
| 			} else { | 			} else { | ||||||
| 				ok = IRC_WriteStrClient(Origin, ERR_NEEDMOREPARAMS_MSG, Client_ID(Origin), Req->command); | 				ok = IRC_WriteStrClient(Origin, | ||||||
|  | 					ERR_NEEDMOREPARAMS_MSG, | ||||||
|  | 					Client_ID(Origin), Req->command); | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		/* --- Channel lists --- */ | 		/* --- Channel lists --- */ | ||||||
| @@ -484,11 +527,18 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 			if (arg_arg > mode_arg) { | 			if (arg_arg > mode_arg) { | ||||||
| 				/* modify list */ | 				/* modify list */ | ||||||
| 				if (modeok) { | 				if (modeok) { | ||||||
| 					ok = set ? Add_Ban_Invite(*mode_ptr, Origin, Client, Channel, Req->argv[arg_arg]) | 					ok = set | ||||||
| 						 : Del_Ban_Invite(*mode_ptr, Origin, Client, Channel, Req->argv[arg_arg]); | 					   ? Add_Ban_Invite(*mode_ptr, Origin, | ||||||
|  | 						Client, Channel, | ||||||
|  | 						Req->argv[arg_arg]) | ||||||
|  | 					   : Del_Ban_Invite(*mode_ptr, Origin, | ||||||
|  | 						Client, Channel, | ||||||
|  | 						Req->argv[arg_arg]); | ||||||
| 				} else { | 				} else { | ||||||
| 					ok = IRC_WriteStrClient(Origin, ERR_CHANOPRIVSNEEDED_MSG, | 					ok = IRC_WriteStrClient(Origin, | ||||||
| 							Client_ID(Origin), Channel_Name(Channel)); | 						ERR_CHANOPRIVSNEEDED_MSG, | ||||||
|  | 						Client_ID(Origin), | ||||||
|  | 						Channel_Name(Channel)); | ||||||
| 				} | 				} | ||||||
| 				Req->argv[arg_arg][0] = '\0'; | 				Req->argv[arg_arg][0] = '\0'; | ||||||
| 				arg_arg++; | 				arg_arg++; | ||||||
| @@ -500,10 +550,15 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		default: | 		default: | ||||||
| 			Log(LOG_DEBUG, "Unknown mode \"%c%c\" from \"%s\" on %s!?", | 			Log(LOG_DEBUG, | ||||||
| 				set ? '+' : '-', *mode_ptr, Client_ID(Origin), Channel_Name(Channel)); | 			    "Unknown mode \"%c%c\" from \"%s\" on %s!?", | ||||||
|  | 			    set ? '+' : '-', *mode_ptr, Client_ID(Origin), | ||||||
|  | 			    Channel_Name(Channel)); | ||||||
| 			if (Client_Type(Client) != CLIENT_SERVER) | 			if (Client_Type(Client) != CLIENT_SERVER) | ||||||
| 				ok = IRC_WriteStrClient(Origin, ERR_UMODEUNKNOWNFLAG2_MSG, Client_ID(Origin), set ? '+' : '-', *mode_ptr); | 				ok = IRC_WriteStrClient(Origin, | ||||||
|  | 					ERR_UMODEUNKNOWNFLAG2_MSG, | ||||||
|  | 					Client_ID(Origin), | ||||||
|  | 					set ? '+' : '-', *mode_ptr); | ||||||
| 			x[0] = '\0'; | 			x[0] = '\0'; | ||||||
| 			goto chan_exit; | 			goto chan_exit; | ||||||
| 		}	/* switch() */ | 		}	/* switch() */ | ||||||
| @@ -517,8 +572,10 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
|  |  | ||||||
| 		/* Validate target client */ | 		/* Validate target client */ | ||||||
| 		if (client && (!Channel_IsMemberOf(Channel, client))) { | 		if (client && (!Channel_IsMemberOf(Channel, client))) { | ||||||
| 			if (!IRC_WriteStrClient(Origin, ERR_USERNOTINCHANNEL_MSG, | 			if (!IRC_WriteStrClient | ||||||
| 				Client_ID(Origin), Client_ID(client), Channel_Name(Channel))) | 			    (Origin, ERR_USERNOTINCHANNEL_MSG, | ||||||
|  | 			     Client_ID(Origin), Client_ID(client), | ||||||
|  | 			     Channel_Name(Channel))) | ||||||
| 				break; | 				break; | ||||||
|  |  | ||||||
| 			continue; | 			continue; | ||||||
| @@ -526,20 +583,29 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
|  |  | ||||||
| 		if (client) { | 		if (client) { | ||||||
| 			/* Channel-User-Mode */ | 			/* Channel-User-Mode */ | ||||||
| 			retval = set ? Channel_UserModeAdd(Channel, client, x[0]) : Channel_UserModeDel(Channel, client, x[0]); | 			retval = set | ||||||
|  | 			       ? Channel_UserModeAdd(Channel, client, x[0]) | ||||||
|  | 			       : Channel_UserModeDel(Channel, client, x[0]); | ||||||
| 			if (retval) { | 			if (retval) { | ||||||
| 				strlcat(the_args, " ", sizeof(the_args)); | 				strlcat(the_args, " ", sizeof(the_args)); | ||||||
| 				strlcat(the_args, Client_ID(client), sizeof(the_args)); | 				strlcat(the_args, Client_ID(client), | ||||||
|  | 					sizeof(the_args)); | ||||||
| 				strlcat(the_modes, x, sizeof(the_modes)); | 				strlcat(the_modes, x, sizeof(the_modes)); | ||||||
| 				LogDebug("User \"%s\": Mode change on %s, now \"%s\"", | 				LogDebug | ||||||
| 					Client_Mask(client), Channel_Name(Channel), Channel_UserModes(Channel, client)); | 				    ("User \"%s\": Mode change on %s, now \"%s\"", | ||||||
|  | 				     Client_Mask(client), Channel_Name(Channel), | ||||||
|  | 				     Channel_UserModes(Channel, client)); | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			/* Channel-Mode */ | 			/* Channel-Mode */ | ||||||
| 			retval = set ? Channel_ModeAdd(Channel, x[0]) : Channel_ModeDel(Channel, x[0]); | 			retval = set | ||||||
|  | 			       ? Channel_ModeAdd(Channel, x[0]) | ||||||
|  | 			       : Channel_ModeDel(Channel, x[0]); | ||||||
| 			if (retval) { | 			if (retval) { | ||||||
| 				strlcat(the_modes, x, sizeof(the_modes)); | 				strlcat(the_modes, x, sizeof(the_modes)); | ||||||
| 				LogDebug("Channel %s: Mode change, now \"%s\".", Channel_Name(Channel), Channel_Modes(Channel)); | 				LogDebug("Channel %s: Mode change, now \"%s\".", | ||||||
|  | 					 Channel_Name(Channel), | ||||||
|  | 					 Channel_Modes(Channel)); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -549,7 +615,8 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ) | |||||||
| 			strlcat(the_args, argadd, sizeof(the_args)); | 			strlcat(the_args, argadd, sizeof(the_args)); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| chan_exit: |  | ||||||
|  |       chan_exit: | ||||||
| 	/* Are there changed modes? */ | 	/* Are there changed modes? */ | ||||||
| 	if (the_modes[1]) { | 	if (the_modes[1]) { | ||||||
| 		/* Clean up mode string */ | 		/* Clean up mode string */ | ||||||
| @@ -567,14 +634,19 @@ chan_exit: | |||||||
|  |  | ||||||
| 			/* Forward mode changes to channel users and all the | 			/* Forward mode changes to channel users and all the | ||||||
| 			 * other remote servers: */ | 			 * other remote servers: */ | ||||||
| 			IRC_WriteStrServersPrefix(Client, Origin, "MODE %s %s%s", Channel_Name( Channel ), the_modes, the_args); | 			IRC_WriteStrServersPrefix(Client, Origin, | ||||||
| 			IRC_WriteStrChannelPrefix(Client, Channel, Origin, false, "MODE %s %s%s", Channel_Name(Channel), the_modes, the_args); | 				"MODE %s %s%s", Channel_Name(Channel), | ||||||
|  | 				the_modes, the_args); | ||||||
|  | 			IRC_WriteStrChannelPrefix(Client, Channel, Origin, | ||||||
|  | 				false, "MODE %s %s%s", Channel_Name(Channel), | ||||||
|  | 				the_modes, the_args); | ||||||
| 		} else { | 		} else { | ||||||
| 			if (use_servermode) | 			if (use_servermode) | ||||||
| 				Origin = Client_ThisServer(); | 				Origin = Client_ThisServer(); | ||||||
| 			/* Send reply to client and inform other servers and channel users */ | 			/* Send reply to client and inform other servers and channel users */ | ||||||
| 			ok = IRC_WriteStrClientPrefix(Client, Origin, "MODE %s %s%s", | 			ok = IRC_WriteStrClientPrefix(Client, Origin, | ||||||
| 					Channel_Name(Channel), the_modes, the_args); | 					"MODE %s %s%s", Channel_Name(Channel), | ||||||
|  | 					the_modes, the_args); | ||||||
| 			/* Only forward requests for non-local channels */ | 			/* Only forward requests for non-local channels */ | ||||||
| 			if (!Channel_IsLocal(Channel)) | 			if (!Channel_IsLocal(Channel)) | ||||||
| 				IRC_WriteStrServersPrefix(Client, Origin, | 				IRC_WriteStrServersPrefix(Client, Origin, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Alexander Barton
					Alexander Barton