X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fclient.c;h=70ac28f07904bc82f97391a9db675d48505dae85;hb=HEAD;hp=07d448fdbaf9a84873f32e22584636251e2d3fd5;hpb=bf2eae3249cd7890c0189dfcf1a50b0e40e199b2;p=ngircd-alex.git diff --git a/src/ngircd/client.c b/src/ngircd/client.c index 07d448fd..70ac28f0 100644 --- a/src/ngircd/client.c +++ b/src/ngircd/client.c @@ -72,7 +72,7 @@ GLOBAL void Client_Init( void ) { struct hostent *h; - + This_Server = New_Client_Struct( ); if( ! This_Server ) { @@ -98,7 +98,7 @@ Client_Init( void ) Client_SetInfo( This_Server, Conf_ServerInfo ); My_Clients = This_Server; - + memset( &My_Whowas, 0, sizeof( My_Whowas )); } /* Client_Init */ @@ -111,7 +111,7 @@ Client_Exit( void ) if( NGIRCd_SignalRestart ) Client_Destroy( This_Server, "Server going down (restarting).", NULL, false ); else Client_Destroy( This_Server, "Server going down.", NULL, false ); - + cnt = 0; c = My_Clients; while(c) { @@ -213,7 +213,7 @@ Init_New_Client(CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer, Generate_MyToken(client); if (Client_HasMode(client, 'a')) - client->away = strndup(DEFAULT_AWAY_MSG, CLIENT_AWAY_LEN - 1); + client->away = strdup(DEFAULT_AWAY_MSG); client->next = (POINTER *)My_Clients; My_Clients = client; @@ -228,7 +228,7 @@ GLOBAL void Client_Destroy( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit ) { /* remove a client */ - + CLIENT *last, *c; char msg[COMMAND_LEN]; const char *txt; @@ -337,7 +337,11 @@ Client_SetHostname( CLIENT *Client, const char *Hostname ) assert(Client != NULL); assert(Hostname != NULL); - if (Conf_CloakHost[0]) { + /* Only cloak the hostmask if it has not yet been cloaked. + * The period or colon indicates it's still an IP address. + * An empty string means a rDNS lookup did not happen (yet). */ + if (Conf_CloakHost[0] && (!Client->host[0] || strchr(Client->host, '.') + || strchr(Client->host, ':'))) { char cloak[GETID_LEN]; strlcpy(cloak, Hostname, GETID_LEN); @@ -381,7 +385,7 @@ Client_SetID( CLIENT *Client, const char *ID ) { assert( Client != NULL ); assert( ID != NULL ); - + strlcpy( Client->id, ID, sizeof( Client->id )); if (Conf_CloakUserToNick) { @@ -649,7 +653,7 @@ Client_SearchServer(const char *Mask) /** - * Get client structure ("introducer") identfied by a server token. + * Get client structure ("introducer") identified by a server token. * @return CLIENT structure or NULL if none could be found. */ GLOBAL CLIENT * @@ -694,11 +698,9 @@ Client_ID( CLIENT *Client ) { assert( Client != NULL ); -#ifdef DEBUG if(Client->type == CLIENT_USER) assert(strlen(Client->id) < Conf_MaxNickLength); -#endif - + if( Client->id[0] ) return Client->id; else return "*"; } /* Client_ID */ @@ -1311,12 +1313,14 @@ Client_Reject(CLIENT *Client, const char *Reason, bool InformClient) GLOBAL void Client_Introduce(CLIENT *From, CLIENT *Client, int Type) { + int server; + /* Set client type (user or service) */ Client_SetType(Client, Type); if (From) { - if (Conf_NickIsService(Conf_GetServer(Client_Conn(From)), - Client_ID(Client))) + server = Conf_GetServer(Client_Conn(From)); + if (server > NONE && Conf_NickIsService(server, Client_ID(Client))) Client_SetType(Client, CLIENT_SERVICE); LogDebug("%s \"%s\" (+%s) registered (via %s, on %s, %d hop%s).", Client_TypeText(Client), Client_Mask(Client), @@ -1374,7 +1378,7 @@ MyCount( CLIENT_TYPE Type ) /** - * Allocate and initialize new CLIENT strcuture. + * Allocate and initialize new CLIENT structure. * * @return Pointer to CLIENT structure or NULL on error. */ @@ -1493,9 +1497,7 @@ Client_RegisterWhowas( CLIENT *Client ) slot = Last_Whowas + 1; if( slot >= MAX_WHOWAS || slot < 0 ) slot = 0; -#ifdef DEBUG - Log( LOG_DEBUG, "Saving WHOWAS information to slot %d ...", slot ); -#endif + LogDebug( "Saving WHOWAS information to slot %d ...", slot ); My_Whowas[slot].time = now; strlcpy( My_Whowas[slot].id, Client_ID( Client ), @@ -1690,17 +1692,16 @@ Client_Announce(CLIENT * Client, CLIENT * Prefix, CLIENT * User) } /* Client_Announce */ -#ifdef DEBUG GLOBAL void Client_DebugDump(void) { CLIENT *c; - Log(LOG_DEBUG, "Client status:"); + LogDebug("Client status:"); c = My_Clients; while (c) { - Log(LOG_DEBUG, + LogDebug( " - %s: type=%d, host=%s, user=%s, conn=%d, start=%ld, flags=%s", Client_ID(c), Client_Type(c), Client_Hostname(c), Client_User(c), Client_Conn(c), Client_StartTime(c), @@ -1709,7 +1710,6 @@ Client_DebugDump(void) } } /* Client_DumpClients */ -#endif /* -eof- */