]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/client.c
Fix hostmask cloaking bug, don't cloak multiple times
[ngircd-alex.git] / src / ngircd / client.c
index 9795662ecc66899f642f66aa9632ac6a2c00b1e6..a453312c3e93473a8a0ee7c2c8cf1c4a5b652660 100644 (file)
@@ -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) {
@@ -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,9 @@ 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
+        * indicates it's still an IP address). */
+       if (Conf_CloakHost[0] && strchr(Client->host, '.')) {
                char cloak[GETID_LEN];
 
                strlcpy(cloak, Hostname, GETID_LEN);
@@ -381,7 +383,7 @@ Client_SetID( CLIENT *Client, const char *ID )
 {
        assert( Client != NULL );
        assert( ID != NULL );
-       
+
        strlcpy( Client->id, ID, sizeof( Client->id ));
 
        if (Conf_CloakUserToNick) {
@@ -427,7 +429,7 @@ Client_SetOrigUser(CLIENT UNUSED *Client, const char UNUSED *User)
        assert(Client != NULL);
        assert(User != NULL);
 
-#if defined(PAM) && defined(IDENTAUTH)
+#if defined(PAM)
        strlcpy(Client->orig_user, User, sizeof(Client->orig_user));
 #endif
 } /* Client_SetOrigUser */
@@ -698,7 +700,7 @@ Client_ID( CLIENT *Client )
        if(Client->type == CLIENT_USER)
                assert(strlen(Client->id) < Conf_MaxNickLength);
 #endif
-                                                  
+
        if( Client->id[0] ) return Client->id;
        else return "*";
 } /* Client_ID */
@@ -731,15 +733,7 @@ Client_User( CLIENT *Client )
  */
 GLOBAL char *
 Client_OrigUser(CLIENT *Client) {
-#ifndef IDENTAUTH
-       char *user = Client->user;
-
-       if (user[0] == '~')
-               user++;
-       return user;
-#else
        return Client->orig_user;
-#endif
 } /* Client_OrigUser */
 
 #endif