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:
parent
d28ab08cfa
commit
8bffcc0cd4
|
@ -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) {
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue