From 8bffcc0cd4fd6a92c8f9bbb28ccc14e4b51a576a Mon Sep 17 00:00:00 2001 From: Austin Morton Date: Thu, 13 Aug 2015 14:45:29 -0400 Subject: [PATCH] server: remove connection limit from tcl and telnet servers Add constant CONNECTION_LIMIT_UNLIMITED which indicates a service has no connection limit Change-Id: I008d31264010c25fa44ca74eb6d5740eca38bee1 Signed-off-by: Austin Morton Reviewed-on: http://openocd.zylin.com/2937 Tested-by: jenkins Reviewed-by: Paul Fertser --- src/server/server.c | 9 ++++++--- src/server/server.h | 2 ++ src/server/tcl_server.c | 2 +- src/server/telnet_server.c | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/server/server.c b/src/server/server.c index 7e90d89fd2..24747f9387 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 34c870aabc..061523346c 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 409567c9d9..a4270a8445 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 92d8c5ea69..2187dbe280 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, -- 2.30.2