Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2017-09-28 19:21:02 +0000
committerEugene Tarassov2017-09-28 19:21:02 +0000
commitd1e1ba5db5634572df3dbe4c268168fbc860bf64 (patch)
treef80e4d8857fdde3f1cd75ce8cea9c9f5927d7df0
parent93d19e5f872f271490d5f5fe62f89368e2423eeb (diff)
downloadorg.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.c13
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;

Back to the top