X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fd950e3c32576276db6406a6af962e5ef72b7327..548c6b2142ac766395e10567352c3887a1b897a0:/src/gras/Transport/rl_transport.c diff --git a/src/gras/Transport/rl_transport.c b/src/gras/Transport/rl_transport.c index 68d01bb6c4..e9eba7e285 100644 --- a/src/gras/Transport/rl_transport.c +++ b/src/gras/Transport/rl_transport.c @@ -70,8 +70,10 @@ gras_trp_select(double timeout, /* construct the set of socket to ear from */ FD_ZERO(&FDS); + max_fds = -1; xbt_dynar_foreach(sockets,cursor,sock_iter) { if (sock_iter->incoming) { + DEBUG1("Considering socket %d for select",sock_iter->sd); #ifndef HAVE_WINSOCK_H if (max_fds < sock_iter->sd) max_fds = sock_iter->sd; @@ -82,6 +84,17 @@ gras_trp_select(double timeout, } } + if (max_fds == -1) { + if (timeout > 0) { + DEBUG0("No socket to select onto. Sleep instead."); + gras_os_sleep(timeout,0); + return timeout_error; + } else { + DEBUG0("No socket to select onto. Return directly."); + return timeout_error; + } + } + #ifndef HAVE_WINSOCK_H /* we cannot have more than FD_SETSIZE sockets ... but with WINSOCK which returns sockets higher than the limit (killing this optim) */ @@ -110,7 +123,7 @@ gras_trp_select(double timeout, /* no timeout: good luck! */ p_tout = NULL; } - + DEBUG1("Selecting over %d socket(s)", max_fds-1); ready = select(max_fds, &FDS, NULL, NULL, p_tout); if (ready == -1) {