Latest update - 7446
This commit is contained in:
@@ -200,6 +200,49 @@ extern LPFN_CONNECTEX ngx_connectex;
|
||||
extern LPFN_DISCONNECTEX ngx_disconnectex;
|
||||
|
||||
|
||||
#if (NGX_HAVE_POLL && !defined POLLIN)
|
||||
|
||||
/*
|
||||
* WSAPoll() is only available if _WIN32_WINNT >= 0x0600.
|
||||
* If it is not available during compilation, we try to
|
||||
* load it dynamically at runtime.
|
||||
*/
|
||||
|
||||
#define NGX_LOAD_WSAPOLL 1
|
||||
|
||||
#define POLLRDNORM 0x0100
|
||||
#define POLLRDBAND 0x0200
|
||||
#define POLLIN (POLLRDNORM | POLLRDBAND)
|
||||
#define POLLPRI 0x0400
|
||||
|
||||
#define POLLWRNORM 0x0010
|
||||
#define POLLOUT (POLLWRNORM)
|
||||
#define POLLWRBAND 0x0020
|
||||
|
||||
#define POLLERR 0x0001
|
||||
#define POLLHUP 0x0002
|
||||
#define POLLNVAL 0x0004
|
||||
|
||||
typedef struct pollfd {
|
||||
|
||||
SOCKET fd;
|
||||
SHORT events;
|
||||
SHORT revents;
|
||||
|
||||
} WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD;
|
||||
|
||||
typedef int (WSAAPI *ngx_wsapoll_pt)(
|
||||
LPWSAPOLLFD fdArray,
|
||||
ULONG fds,
|
||||
INT timeout
|
||||
);
|
||||
|
||||
extern ngx_wsapoll_pt WSAPoll;
|
||||
extern ngx_uint_t ngx_have_wsapoll;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
int ngx_tcp_push(ngx_socket_t s);
|
||||
#define ngx_tcp_push_n "tcp_push()"
|
||||
|
||||
|
||||
@@ -58,6 +58,12 @@ static GUID cx_guid = WSAID_CONNECTEX;
|
||||
static GUID dx_guid = WSAID_DISCONNECTEX;
|
||||
|
||||
|
||||
#if (NGX_LOAD_WSAPOLL)
|
||||
ngx_wsapoll_pt WSAPoll;
|
||||
ngx_uint_t ngx_have_wsapoll;
|
||||
#endif
|
||||
|
||||
|
||||
ngx_int_t
|
||||
ngx_os_init(ngx_log_t *log)
|
||||
{
|
||||
@@ -223,6 +229,32 @@ ngx_os_init(ngx_log_t *log)
|
||||
ngx_close_socket_n " failed");
|
||||
}
|
||||
|
||||
#if (NGX_LOAD_WSAPOLL)
|
||||
{
|
||||
HMODULE hmod;
|
||||
|
||||
hmod = GetModuleHandle("ws2_32.dll");
|
||||
if (hmod == NULL) {
|
||||
ngx_log_error(NGX_LOG_NOTICE, log, ngx_errno,
|
||||
"GetModuleHandle(\"ws2_32.dll\") failed");
|
||||
goto nopoll;
|
||||
}
|
||||
|
||||
WSAPoll = (ngx_wsapoll_pt) GetProcAddress(hmod, "WSAPoll");
|
||||
if (WSAPoll == NULL) {
|
||||
ngx_log_error(NGX_LOG_NOTICE, log, ngx_errno,
|
||||
"GetProcAddress(\"WSAPoll\") failed");
|
||||
goto nopoll;
|
||||
}
|
||||
|
||||
ngx_have_wsapoll = 1;
|
||||
|
||||
}
|
||||
|
||||
nopoll:
|
||||
|
||||
#endif
|
||||
|
||||
if (GetEnvironmentVariable("ngx_unique", ngx_unique, NGX_INT32_LEN + 1)
|
||||
!= 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user