diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index df6d6d9f26d9835e80c62c4e47e6b8ad01538a77..b662ccd5f6ea1078983b1bce4f529cbc0182bcf8 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -106,6 +106,7 @@ char* genvpath(int lib, int dir, char* str); typedef struct { SOCKET socket; SOCKADDR_IN client_addr; + socklen_t client_addr_len; } ftp_t; @@ -2425,7 +2426,7 @@ static void ctrl_thread(void* arg) host=NULL; else host=gethostbyaddr ((char *)&ftp.client_addr.sin_addr - ,sizeof(ftp.client_addr.sin_addr),AF_INET); + ,ftp.client_addr_len,AF_INET); if(host!=NULL && host->h_name!=NULL) host_name=host->h_name; @@ -4899,6 +4900,7 @@ void DLLCALL ftp_server(void* arg) ftp->socket=client_socket; ftp->client_addr=client_addr; + ftp->client_addr_len=client_addr_len; _beginthread (ctrl_thread, 0, ftp); served++; diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 089ccc0a5f93eb607a0e0cec2d118413ff2ac6fe..1a0dce74c97c92c078a7c9cbabced1d5609444a9 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -99,6 +99,7 @@ typedef struct { typedef struct { SOCKET socket; SOCKADDR_IN addr; + socklen_t addr_len; time_t logintime; user_t user; client_t* client; @@ -1018,7 +1019,7 @@ static void js_service_thread(void* arg) host=NULL; else host=gethostbyaddr((char *)&service_client.addr.sin_addr - ,sizeof(service_client.addr.sin_addr),AF_INET); + ,service_client.addr_len,AF_INET); if(host!=NULL && host->h_name!=NULL) host_name=host->h_name; @@ -1338,7 +1339,7 @@ static void native_service_thread(void* arg) host=NULL; else host=gethostbyaddr((char *)&service_client.addr.sin_addr - ,sizeof(service_client.addr.sin_addr),AF_INET); + ,service_client.addr_len,AF_INET); if(host!=NULL && host->h_name!=NULL) host_name=host->h_name; @@ -2097,6 +2098,7 @@ void DLLCALL services_thread(void* arg) memset(client,0,sizeof(service_client_t)); client->socket=client_socket; client->addr=client_addr; + client->addr_len=client_addr_len; client->service=&service[i]; client->service->clients++; /* this should be mutually exclusive */ client->udp_buf=udp_buf; diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index 1baf950493900948e656a84626fd58ad595667e2..97f0e69c26f89cd269945704fa47a8f46c93741f 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -228,6 +228,7 @@ typedef struct { typedef struct { SOCKET socket; SOCKADDR_IN addr; + socklen_t addr_len; http_request_t req; char host_ip[64]; char host_name[128]; /* Resolved remote host */ @@ -4814,7 +4815,7 @@ void http_session_thread(void* arg) host=NULL; else host=gethostbyaddr ((char *)&session.addr.sin_addr - ,sizeof(session.addr.sin_addr),AF_INET); + ,session.addr_len,AF_INET); if(host!=NULL && host->h_name!=NULL) host_name=host->h_name; @@ -5585,6 +5586,7 @@ void DLLCALL web_server(void* arg) SAFECOPY(session->host_ip,host_ip); session->addr=client_addr; + session->addr_len=client_addr_len; session->socket=client_socket; session->js_branch.auto_terminate=TRUE; session->js_branch.terminated=&terminate_server;