diff options
author | Eugene Tarassov | 2017-09-28 19:21:02 +0000 |
---|---|---|
committer | Eugene Tarassov | 2017-09-28 19:21:02 +0000 |
commit | d1e1ba5db5634572df3dbe4c268168fbc860bf64 (patch) | |
tree | f80e4d8857fdde3f1cd75ce8cea9c9f5927d7df0 | |
parent | 93d19e5f872f271490d5f5fe62f89368e2423eeb (diff) | |
download | org.eclipse.tcf.agent-d1e1ba5db5634572df3dbe4c268168fbc860bf64.tar.gz org.eclipse.tcf.agent-d1e1ba5db5634572df3dbe4c268168fbc860bf64.tar.xz org.eclipse.tcf.agent-d1e1ba5db5634572df3dbe4c268168fbc860bf64.zip |
TCF Agent: ini_gdb_rsp() changed to check if the server already created
-rw-r--r-- | agent/tcf/main/gdb-rsp.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/agent/tcf/main/gdb-rsp.c b/agent/tcf/main/gdb-rsp.c index 0d0b5ef7..d8350ae5 100644 --- a/agent/tcf/main/gdb-rsp.c +++ b/agent/tcf/main/gdb-rsp.c @@ -64,6 +64,7 @@ typedef struct GdbServer { LINK link_s2c; int disposed; AsyncReqInfo req; + char port[32]; char isa[32]; } GdbServer; @@ -1868,6 +1869,17 @@ int ini_gdb_rsp(const char * conf) { isa = "i386"; #endif } + if (ini_done) { + LINK * l; + for (l = link_a2s.next; l != &link_a2s; l = l->next) { + GdbServer * g = link_a2s(l); + if (strcmp(g->port, port) == 0) { + if (strcmp(g->isa, isa) == 0) return 0; + set_fmt_errno(ERR_OTHER, "Port is used by '%s:%s' server", g->port, g->isa); + return -1; + } + } + } sock = open_server(port); if (sock < 0) return -1; if (!ini_done) { @@ -1886,6 +1898,7 @@ int ini_gdb_rsp(const char * conf) { s->req.done = accept_done; s->req.u.acc.sock = sock; s->req.u.acc.rval = 0; + strlcpy(s->port, port, sizeof(s->port)); strlcpy(s->isa, isa, sizeof(s->isa)); async_req_post(&s->req); return 0; |