-
- if (xbt_fifo_size(pd->msg_selectable_sockets) == 0) {
- /* message didn't arrive yet, wait */
- SIMIX_cond_wait_timeout(pd->msg_select_cond,pd->msg_select_mutex,timeout);
- }
-
- if (xbt_fifo_size(pd->msg_selectable_sockets) == 0) {
+ 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) {