# HG changeset patch # User Igor Sysoev # Date 1241012534 0 # Node ID 7615a6c5fb54720392a20b9376fe4f0a37b83a02 # Parent 88987e52be42893e9fced95823f3af1d6b82fd6c handle Winsock select() WSAEINVAL diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c --- 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 *c #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