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 <austinpmorton@gmail.com>
Reviewed-on: http://openocd.zylin.com/2937
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
This commit is contained in:
Austin Morton 2015-08-13 14:45:29 -04:00 committed by Paul Fertser
parent d28ab08cfa
commit 8bffcc0cd4
4 changed files with 10 additions and 5 deletions

View File

@ -145,7 +145,8 @@ static int add_connection(struct service *service, struct command_context *cmd_c
; ;
*p = c; *p = c;
service->max_connections--; if (service->max_connections != CONNECTION_LIMIT_UNLIMITED)
service->max_connections--;
return ERROR_OK; return ERROR_OK;
} }
@ -172,7 +173,9 @@ static int remove_connection(struct service *service, struct connection *connect
*p = c->next; *p = c->next;
free(c); free(c);
service->max_connections++; if (service->max_connections != CONNECTION_LIMIT_UNLIMITED)
service->max_connections++;
break; break;
} }
@ -446,7 +449,7 @@ int server_loop(struct command_context *command_context)
/* handle new connections on listeners */ /* handle new connections on listeners */
if ((service->fd != -1) if ((service->fd != -1)
&& (FD_ISSET(service->fd, &read_fds))) { && (FD_ISSET(service->fd, &read_fds))) {
if (service->max_connections > 0) if (service->max_connections != 0)
add_connection(service, command_context); add_connection(service, command_context);
else { else {
if (service->type == CONNECTION_TCP) { if (service->type == CONNECTION_TCP) {

View File

@ -39,6 +39,8 @@ enum connection_type {
CONNECTION_STDINOUT CONNECTION_STDINOUT
}; };
#define CONNECTION_LIMIT_UNLIMITED (-1)
struct connection { struct connection {
int fd; int fd;
int fd_out; /* When using pipes we're writing to a different fd */ int fd_out; /* When using pipes we're writing to a different fd */

View File

@ -250,7 +250,7 @@ int tcl_init(void)
return ERROR_OK; 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_new_connection, &tcl_input,
&tcl_closed, NULL); &tcl_closed, NULL);
} }

View File

@ -625,7 +625,7 @@ int telnet_init(char *banner)
return add_service("telnet", return add_service("telnet",
telnet_port, telnet_port,
1, CONNECTION_LIMIT_UNLIMITED,
telnet_new_connection, telnet_new_connection,
telnet_input, telnet_input,
telnet_connection_closed, telnet_connection_closed,