aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-04-29 13:42:14 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-04-29 13:42:14 +0000
commitc5237a8829d591cddf4704e2a51274ae8dc00ea6 (patch)
treee0189bd0d1c6272a979f4688035088c8ac1f3105 /src
parentff95d9290ced64ce9f1b0687465b63a120fd406a (diff)
downloadnginx-c5237a8829d591cddf4704e2a51274ae8dc00ea6.tar.gz
nginx-c5237a8829d591cddf4704e2a51274ae8dc00ea6.zip
handle Winsock select() WSAEINVAL
Diffstat (limited to 'src')
-rw-r--r--src/event/modules/ngx_select_module.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index a50088ba4..f7020809c 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -314,7 +314,21 @@ ngx_select_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
#if (NGX_WIN32)
- ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp);
+ if (max_read || max_write) {
+ ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp);
+
+ } else {
+
+ /*
+ * Winsock select() requires that at least one descriptor set must be
+ * be non-null, and any non-null descriptor set must contain at least
+ * one handle to a socket. Otherwise select() returns WSAEINVAL.
+ */
+
+ ngx_msleep(timer);
+
+ ready = 0;
+ }
#else