From 4afba7db8e05fb655927ce37284e5de1aeba07b4 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 1 Oct 2009 22:19:24 +0000 Subject: [PATCH] fixing off by 1000 in select code --- src/util/network.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/util/network.c b/src/util/network.c index 4ac46fa0b..dff127735 100644 --- a/src/util/network.c +++ b/src/util/network.c @@ -632,23 +632,25 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds, nfds = 0; - if (rfds) + if (NULL != rfds) nfds = rfds->nsds; - if (wfds && wfds->nsds > nfds) - nfds = wfds->nsds; - if (efds && efds->nsds > nfds) - nfds = efds->nsds; + if (NULL != wfds) + nfds = GNUNET_MAX (nfds, wfds->nsds); + if (NULL != efds) + nfds = GNUNET_MAX (nfds, efds->nsds); #ifndef MINGW struct timeval tv; tv.tv_sec = timeout.value / GNUNET_TIME_UNIT_SECONDS.value; - tv.tv_usec = (timeout.value - (tv.tv_sec * GNUNET_TIME_UNIT_SECONDS.value)) - / GNUNET_TIME_UNIT_MILLISECONDS.value; - - return select (nfds + 1, rfds ? &rfds->sds : NULL, wfds ? &wfds->sds : NULL, - efds ? &efds->sds : NULL, timeout.value - == GNUNET_TIME_UNIT_FOREVER_REL.value ? NULL : &tv); + tv.tv_usec = 1000 * (timeout.value - (tv.tv_sec * GNUNET_TIME_UNIT_SECONDS.value)); + return select (nfds + 1, + (rfds != NULL) ? &rfds->sds : NULL, + (wfds != NULL) ? &wfds->sds : NULL, + (efds != NULL) ? &efds->sds : NULL, + (timeout.value == GNUNET_TIME_UNIT_FOREVER_REL.value) + ? NULL + : &tv); #else DWORD limit; fd_set sock_read, sock_write, sock_except; @@ -670,7 +672,6 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds, if (!(rfds || wfds || efds)) { Sleep (ms_total); - return 0; } -- 2.25.1