From 94ff4102c5e06620e21d6b8ba2c8838f6c711ddf Mon Sep 17 00:00:00 2001 From: mquinson Date: Sun, 5 Aug 2007 21:51:10 +0000 Subject: [PATCH] Do not push newly created sockets into the dynar before they get initialized, or this dumb listener may use them too early git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3975 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/gras/Transport/transport.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/gras/Transport/transport.c b/src/gras/Transport/transport.c index e2b6ff87e2..41277c1b0e 100644 --- a/src/gras/Transport/transport.c +++ b/src/gras/Transport/transport.c @@ -168,8 +168,6 @@ void gras_trp_socket_new(int incoming, *dst = sock; - xbt_dynar_push(((gras_trp_procdata_t) - gras_libdata_by_id(gras_trp_libdata_id))->sockets,dst); XBT_OUT; } @@ -212,20 +210,15 @@ gras_socket_server_ext(unsigned short port, sock->outgoing?'y':'n', sock->accepting?'y':'n'); } CATCH(e) { - int cursor; - gras_socket_t sock_iter; - xbt_dynar_t socks = ((gras_trp_procdata_t) gras_libdata_by_id(gras_trp_libdata_id))->sockets; - xbt_dynar_foreach(socks, cursor, sock_iter) { - if (sock_iter==sock) { - xbt_dynar_cursor_rm(socks,&cursor); - } - } + free(sock); RETHROW; } if (!measurement) ((gras_trp_procdata_t) gras_libdata_by_id(gras_trp_libdata_id))->myport = port; + xbt_dynar_push(((gras_trp_procdata_t) + gras_libdata_by_id(gras_trp_libdata_id))->sockets,&sock); return sock; } /** @@ -299,13 +292,11 @@ gras_socket_client_ext(const char *host, sock->outgoing?'y':'n', sock->accepting?'y':'n'); } CATCH(e) { - xbt_dynar_pop(((gras_trp_procdata_t) - gras_libdata_by_id(gras_trp_libdata_id))->sockets,NULL); free(sock); - xbt_backtrace_display(&e); - RETHROW; + RETHROW; } - + xbt_dynar_push(((gras_trp_procdata_t) + gras_libdata_by_id(gras_trp_libdata_id))->sockets,&sock); return sock; } -- 2.20.1