From: John Hodge Date: Sun, 11 Sep 2011 05:58:31 +0000 (+0800) Subject: Applied fixes to AUTHIDENT - works X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=bf1bc7b08525b09a783c0c9794542dbda7b52fd2;p=tpg%2Fopendispense2.git Applied fixes to AUTHIDENT - works - Thanks goes to Zanchey [DAA] for AUTHIDENT - Also disabled coke debug --- diff --git a/src/server/handler_coke.c b/src/server/handler_coke.c index 79d0a46..15cb8d3 100644 --- a/src/server/handler_coke.c +++ b/src/server/handler_coke.c @@ -21,7 +21,7 @@ #include #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) diff --git a/src/server/main.c b/src/server/main.c index faf07e3..590e197 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -151,7 +151,8 @@ int main(int argc, char *argv[]) Server_Start(); - pthread_kill(gTimerThread, SIGKILL); + if(gTimerThread) + pthread_kill(gTimerThread, SIGKILL); return 0; } diff --git a/src/server/server.c b/src/server/server.c index 21740fd..32e4c10 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -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