mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-31 22:13:00 +00:00 
			
		
		
		
	Allow IRC services to change their nick names.
This commit is contained in:
		| @@ -180,22 +180,17 @@ IRC_NICK( CLIENT *Client, REQUEST *Req ) | |||||||
| 	assert( Client != NULL ); | 	assert( Client != NULL ); | ||||||
| 	assert( Req != NULL ); | 	assert( Req != NULL ); | ||||||
|  |  | ||||||
| #ifndef STRICT_RFC |  | ||||||
| 	/* Some IRC clients, for example BitchX, send the NICK and USER | 	/* Some IRC clients, for example BitchX, send the NICK and USER | ||||||
| 	 * commands in the wrong order ... */ | 	 * commands in the wrong order ... */ | ||||||
| 	if( Client_Type( Client ) == CLIENT_UNKNOWN | 	if(Client_Type(Client) == CLIENT_UNKNOWN | ||||||
| 	    || Client_Type( Client ) == CLIENT_GOTPASS | 	    || Client_Type(Client) == CLIENT_GOTPASS | ||||||
| 	    || Client_Type( Client ) == CLIENT_GOTNICK | 	    || Client_Type(Client) == CLIENT_GOTNICK | ||||||
| 	    || Client_Type( Client ) == CLIENT_GOTUSER | #ifndef STRICT_RFC | ||||||
| 	    || Client_Type( Client ) == CLIENT_USER | 	    || Client_Type(Client) == CLIENT_GOTUSER | ||||||
| 	    || ( Client_Type( Client ) == CLIENT_SERVER && Req->argc == 1 )) |  | ||||||
| #else |  | ||||||
| 	if( Client_Type( Client ) == CLIENT_UNKNOWN |  | ||||||
| 	    || Client_Type( Client ) == CLIENT_GOTPASS |  | ||||||
| 	    || Client_Type( Client ) == CLIENT_GOTNICK |  | ||||||
| 	    || Client_Type( Client ) == CLIENT_USER |  | ||||||
| 	    || ( Client_Type( Client ) == CLIENT_SERVER && Req->argc == 1 )) |  | ||||||
| #endif | #endif | ||||||
|  | 	    || Client_Type(Client) == CLIENT_USER | ||||||
|  | 	    || Client_Type(Client) == CLIENT_SERVICE | ||||||
|  | 	    || (Client_Type(Client) == CLIENT_SERVER && Req->argc == 1)) | ||||||
| 	{ | 	{ | ||||||
| 		/* User registration or change of nickname */ | 		/* User registration or change of nickname */ | ||||||
|  |  | ||||||
| @@ -243,9 +238,9 @@ IRC_NICK( CLIENT *Client, REQUEST *Req ) | |||||||
| 				return CONNECTED; | 				return CONNECTED; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if(( Client_Type( target ) != CLIENT_USER ) | 		if (Client_Type(target) != CLIENT_USER && | ||||||
| 		   && ( Client_Type( target ) != CLIENT_SERVER )) | 		    Client_Type(target) != CLIENT_SERVICE && | ||||||
| 		{ | 		    Client_Type(target) != CLIENT_SERVER) { | ||||||
| 			/* New client */ | 			/* New client */ | ||||||
| 			Log( LOG_DEBUG, "Connection %d: got valid NICK command ...",  | 			Log( LOG_DEBUG, "Connection %d: got valid NICK command ...",  | ||||||
| 			     Client_Conn( Client )); | 			     Client_Conn( Client )); | ||||||
| @@ -259,25 +254,22 @@ IRC_NICK( CLIENT *Client, REQUEST *Req ) | |||||||
| 				return Hello_User( Client ); | 				return Hello_User( Client ); | ||||||
| 			else | 			else | ||||||
| 				Client_SetType( Client, CLIENT_GOTNICK ); | 				Client_SetType( Client, CLIENT_GOTNICK ); | ||||||
| 		} | 		} else { | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 			/* Nickname change */ | 			/* Nickname change */ | ||||||
| 			if (Client_Conn(target) > NONE) { | 			if (Client_Conn(target) > NONE) { | ||||||
| 				/* Local client */ | 				/* Local client */ | ||||||
| 				Log(LOG_INFO, | 				Log(LOG_INFO, | ||||||
| 				    "User \"%s\" changed nick (connection %d): \"%s\" -> \"%s\".", | 				    "%s \"%s\" changed nick (connection %d): \"%s\" -> \"%s\".", | ||||||
| 				    Client_Mask(target), Client_Conn(target), | 				    Client_TypeText(target), Client_Mask(target), | ||||||
| 				    Client_ID(target), Req->argv[0]); | 				    Client_Conn(target), Client_ID(target), | ||||||
|  | 				    Req->argv[0]); | ||||||
| 				Conn_UpdateIdle(Client_Conn(target)); | 				Conn_UpdateIdle(Client_Conn(target)); | ||||||
| 			} | 			} else { | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				/* Remote client */ | 				/* Remote client */ | ||||||
| 				Log( LOG_DEBUG, | 				LogDebug("%s \"%s\" changed nick: \"%s\" -> \"%s\".", | ||||||
| 				     "User \"%s\" changed nick: \"%s\" -> \"%s\".", | 					 Client_TypeText(target), | ||||||
| 				     Client_Mask( target ), Client_ID( target ), | 					 Client_Mask(target), Client_ID(target), | ||||||
| 				     Req->argv[0] ); | 					 Req->argv[0]); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			/* Inform all users and servers (which have to know) | 			/* Inform all users and servers (which have to know) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Alexander Barton
					Alexander Barton