X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/334c91befa04ae9840e7ba3a4cca0fdeb6b32957..5753373bd1394e1b8d85f0e1ee9f963de662dd76:/src/gras/Transport/sg_transport.c diff --git a/src/gras/Transport/sg_transport.c b/src/gras/Transport/sg_transport.c index 50b7dfe2bf..b77eae404d 100644 --- a/src/gras/Transport/sg_transport.c +++ b/src/gras/Transport/sg_transport.c @@ -36,20 +36,19 @@ gras_socket_t gras_trp_select(double timeout) { gras_socket_t active_socket = NULL; gras_trp_sg_sock_data_t *active_socket_data; gras_socket_t sock_iter; /* iterating over all sockets */ - xbt_ex_t e; int cursor; DEBUG3("select on %s@%s with timeout=%f", SIMIX_process_get_name(SIMIX_process_self()), SIMIX_host_get_name(SIMIX_host_self()), timeout); - - TRY { - xbt_queue_shift_timed(pd->msg_selectable_sockets, - &active_socket, timeout); - } CATCH(e) { - RETHROW; - } + if (timeout>=0) { + xbt_queue_shift_timed(pd->msg_selectable_sockets, + &active_socket, timeout); + } else { + xbt_queue_shift(pd->msg_selectable_sockets, &active_socket); + } + if (active_socket == NULL) { DEBUG0("TIMEOUT"); THROW0(timeout_error,0,"Timeout"); @@ -70,6 +69,7 @@ gras_socket_t gras_trp_select(double timeout) { if ( (sock_data->to_socket == active_socket) && (sock_data->to_host == SIMIX_process_get_host(active_socket_data->from_process)) ) { + xbt_dynar_cursor_unlock(pd->sockets); return sock_iter; } }