Applied fixes to AUTHIDENT - works
authorJohn Hodge <[email protected]>
Sun, 11 Sep 2011 05:58:31 +0000 (13:58 +0800)
committerJohn Hodge <[email protected]>
Sun, 11 Sep 2011 05:59:03 +0000 (13:59 +0800)
- Thanks goes to Zanchey [DAA] for AUTHIDENT
- Also disabled coke debug

src/server/handler_coke.c
src/server/main.c
src/server/server.c

index 79d0a46..15cb8d3 100644 (file)
@@ -21,7 +21,7 @@
 #include <pthread.h>
 
 #define READ_TIMEOUT   2       // 2 seconds for ReadChar
-#define TRACE_COKE     1
+#define TRACE_COKE     0
 
 #if TRACE_COKE
 # define TRACE(v...) do{printf("%s: ",__func__);printf(v);}while(0)
index faf07e3..590e197 100644 (file)
@@ -151,7 +151,8 @@ int main(int argc, char *argv[])
        
        Server_Start();
        
-       pthread_kill(gTimerThread, SIGKILL);
+       if(gTimerThread)
+               pthread_kill(gTimerThread, SIGKILL);
 
        return 0;
 }
index 21740fd..32e4c10 100644 (file)
@@ -555,12 +555,18 @@ void Server_Cmd_AUTHIDENT(tClient *Client, char *Args)
 
        // Check if trusted (only works with INET sockets at present)
        len = sizeof(client_addr);
-       if ( ! getpeername(Client->Socket, (struct sockaddr*)&client_addr, &len) ) {
-               // throw an error
+       if( getpeername(Client->Socket, (struct sockaddr*)&client_addr, &len) == -1 ) {
+               Debug(Client, "500 getpeername() failed\n");
+               perror("Getting AUTHIDENT peer name");
+               sendf(Client->Socket, "500 getpeername() failed\n");
+               return ;
        }
 
        client_ip = client_addr.sin_addr.s_addr;
-       if ( ! (ntohl(client_ip) == 0x7F000001 || ( (ntohl(client_ip) & IDENT_TRUSTED_NETMASK) == IDENT_TRUSTED_NETWORK ) )) {
+       if(giDebugLevel >= 2) {
+               Debug(Client, "client_ip = %x, ntohl(client_ip) = %x", client_ip, ntohl(client_ip));
+       }
+       if( ntohl(client_ip) != 0x7F000001 && (ntohl(client_ip) & IDENT_TRUSTED_NETMASK) != IDENT_TRUSTED_NETWORK ) {
                        if(giDebugLevel)
                                Debug(Client, "Untrusted client attempting to AUTHIDENT");
                        sendf(Client->Socket, "401 Untrusted\n");
@@ -569,8 +575,9 @@ void Server_Cmd_AUTHIDENT(tClient *Client, char *Args)
 
        // Get username via IDENT
        username = ident_id(Client->Socket, ident_timeout);
-       if (!username) {
+       if( !username ) {
                sendf(Client->Socket, "403 Authentication failure: IDENT auth timed out\n");
+               return ;
        }
 
        // Get UID

UCC git Repository :: git.ucc.asn.au