diff --git a/src/server/server.c b/src/server/server.c index 7e90d89fd..24747f938 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -145,7 +145,8 @@ static int add_connection(struct service *service, struct command_context *cmd_c ; *p = c; - service->max_connections--; + if (service->max_connections != CONNECTION_LIMIT_UNLIMITED) + service->max_connections--; return ERROR_OK; } @@ -172,7 +173,9 @@ static int remove_connection(struct service *service, struct connection *connect *p = c->next; free(c); - service->max_connections++; + if (service->max_connections != CONNECTION_LIMIT_UNLIMITED) + service->max_connections++; + break; } @@ -446,7 +449,7 @@ int server_loop(struct command_context *command_context) /* handle new connections on listeners */ if ((service->fd != -1) && (FD_ISSET(service->fd, &read_fds))) { - if (service->max_connections > 0) + if (service->max_connections != 0) add_connection(service, command_context); else { if (service->type == CONNECTION_TCP) { diff --git a/src/server/server.h b/src/server/server.h index 34c870aab..061523346 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -39,6 +39,8 @@ enum connection_type { CONNECTION_STDINOUT }; +#define CONNECTION_LIMIT_UNLIMITED (-1) + struct connection { int fd; int fd_out; /* When using pipes we're writing to a different fd */ diff --git a/src/server/tcl_server.c b/src/server/tcl_server.c index 409567c9d..a4270a844 100644 --- a/src/server/tcl_server.c +++ b/src/server/tcl_server.c @@ -250,7 +250,7 @@ int tcl_init(void) return ERROR_OK; } - return add_service("tcl", tcl_port, 1, + return add_service("tcl", tcl_port, CONNECTION_LIMIT_UNLIMITED, &tcl_new_connection, &tcl_input, &tcl_closed, NULL); } diff --git a/src/server/telnet_server.c b/src/server/telnet_server.c index 92d8c5ea6..2187dbe28 100644 --- a/src/server/telnet_server.c +++ b/src/server/telnet_server.c @@ -625,7 +625,7 @@ int telnet_init(char *banner) return add_service("telnet", telnet_port, - 1, + CONNECTION_LIMIT_UNLIMITED, telnet_new_connection, telnet_input, telnet_connection_closed,