diff options
-rw-r--r-- | code/unix/unix_net.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/code/unix/unix_net.c b/code/unix/unix_net.c index 12908eb..d214699 100644 --- a/code/unix/unix_net.c +++ b/code/unix/unix_net.c @@ -651,7 +651,7 @@ void NET_Sleep(int msec) struct timeval timeout; fd_set fdset; extern qboolean stdin_active; - qboolean not_empty = qfalse; + int highestfd = 0; if (!com_dedicated->integer) return; // we're not a server, just run full speed @@ -660,27 +660,27 @@ void NET_Sleep(int msec) if (stdin_active) { FD_SET(0, &fdset); // stdin is processed too - not_empty = qtrue; + highestfd = 1; } if(ip_socket && com_sv_running->integer) { FD_SET(ip_socket, &fdset); // network socket - not_empty = qtrue; + if(ip_socket >= highestfd) + highestfd = ip_socket + 1; } - // There's no reason to call select() with an empty set. - if(not_empty) + if(highestfd) { if(msec >= 0) { timeout.tv_sec = msec/1000; timeout.tv_usec = (msec%1000)*1000; - select(ip_socket+1, &fdset, NULL, NULL, &timeout); + select(highestfd, &fdset, NULL, NULL, &timeout); } else { // Block indefinitely - select(ip_socket+1, &fdset, NULL, NULL, NULL); + select(highestfd, &fdset, NULL, NULL, NULL); } } } |