X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fserver%2Fserver.c;h=f8273d42d9effd559c03dd4269042bf8e2bf5f87;hp=bc5856cccbc88c03ce91ee0c18d052559fdd6aae;hb=9bcd2b2fa3709a6653ff2f7ea8d0af5d4be790f0;hpb=9ec306e95a07ca9a5a72619618f5ed54e1fc8920 diff --git a/src/server/server.c b/src/server/server.c index bc5856cccb..f8273d42d9 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -364,6 +364,35 @@ static void remove_connections(struct service *service) } } +int remove_service(const char *name, const char *port) +{ + struct service *tmp; + struct service *prev; + + prev = services; + + for (tmp = services; tmp; prev = tmp, tmp = tmp->next) { + if (!strcmp(tmp->name, name) && !strcmp(tmp->port, port)) { + remove_connections(tmp); + + if (tmp == services) + services = tmp->next; + else + prev->next = tmp->next; + + if (tmp->type != CONNECTION_STDINOUT) + close_socket(tmp->fd); + + free(tmp->priv); + free_service(tmp); + + return ERROR_OK; + } + } + + return ERROR_OK; +} + static int remove_services(void) { struct service *c = services;