\r
nfds = 0;\r
\r
- if (rfds)\r
+ if (NULL != rfds)\r
nfds = rfds->nsds;\r
- if (wfds && wfds->nsds > nfds)\r
- nfds = wfds->nsds;\r
- if (efds && efds->nsds > nfds)\r
- nfds = efds->nsds;\r
+ if (NULL != wfds)\r
+ nfds = GNUNET_MAX (nfds, wfds->nsds);\r
+ if (NULL != efds)\r
+ nfds = GNUNET_MAX (nfds, efds->nsds);\r
\r
#ifndef MINGW\r
struct timeval tv;\r
\r
tv.tv_sec = timeout.value / GNUNET_TIME_UNIT_SECONDS.value;\r
- tv.tv_usec = (timeout.value - (tv.tv_sec * GNUNET_TIME_UNIT_SECONDS.value))\r
- / GNUNET_TIME_UNIT_MILLISECONDS.value;\r
-\r
- return select (nfds + 1, rfds ? &rfds->sds : NULL, wfds ? &wfds->sds : NULL,\r
- efds ? &efds->sds : NULL, timeout.value\r
- == GNUNET_TIME_UNIT_FOREVER_REL.value ? NULL : &tv);\r
+ tv.tv_usec = 1000 * (timeout.value - (tv.tv_sec * GNUNET_TIME_UNIT_SECONDS.value));\r
+ return select (nfds + 1, \r
+ (rfds != NULL) ? &rfds->sds : NULL, \r
+ (wfds != NULL) ? &wfds->sds : NULL,\r
+ (efds != NULL) ? &efds->sds : NULL, \r
+ (timeout.value == GNUNET_TIME_UNIT_FOREVER_REL.value) \r
+ ? NULL \r
+ : &tv);\r
#else\r
DWORD limit;\r
fd_set sock_read, sock_write, sock_except;\r
if (!(rfds || wfds || efds))\r
{\r
Sleep (ms_total);\r
-\r
return 0;\r
}\r
\r