diff --git a/src/common/socket.c b/src/common/socket.c index f6d5849befad85bfc6de98827e4cb562725fd82f..7181c7703a09057b818ce97ccf91c479476b4d4a 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -239,7 +239,7 @@ char* sErr(int code) // The connection is closed if it goes over the limit. #define WFIFO_MAX (1*1024*1024) -struct socket_data* session[FD_SETSIZE]; +struct socket_data **session; #ifdef SEND_SHORTLIST int send_shortlist_array[FD_SETSIZE];// we only support FD_SETSIZE sockets, limit the array to that @@ -1214,6 +1214,8 @@ void socket_final(void) aFree(session[0]->rdata); aFree(session[0]->wdata); aFree(session[0]); + + aFree(session); } /// Closes a socket. @@ -1375,6 +1377,9 @@ void socket_init(void) memset(send_shortlist_set, 0, sizeof(send_shortlist_set)); #endif + CREATE(session, struct socket_data *, FD_SETSIZE); + memset(session, 0, sizeof(struct socket_data *) * FD_SETSIZE); + socket_config_read(SOCKET_CONF_FILENAME); // initialise last send-receive tick diff --git a/src/common/socket.h b/src/common/socket.h index 82f8b84c3f485cb6fe28d04b9c910b45c73bbfcb..8dbddea8cc9732c32d16b19ba2d21c8a401e0b19 100644 --- a/src/common/socket.h +++ b/src/common/socket.h @@ -105,7 +105,7 @@ struct hSockOpt { // Data prototype declaration -extern struct socket_data* session[FD_SETSIZE]; +extern struct socket_data **session; extern int fd_max;