- errcode = trp->socket_server(trp, sock);
- DEBUG3("in=%c out=%c accept=%c",
- sock->incoming?'y':'n',
- sock->outgoing?'y':'n',
- sock->accepting?'y':'n');
-
- if (errcode != no_error) {
+ TRY {
+ trp->socket_server(trp, sock);
+ DEBUG3("in=%c out=%c accept=%c",
+ sock->incoming?'y':'n',
+ 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);
+ }