Latest update - 7446

This commit is contained in:
2019-01-25 08:46:06 +09:00
parent f6cd26bb56
commit 8872fe80fa
8 changed files with 527 additions and 12 deletions
+43
View File
@@ -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()"
+32
View File
@@ -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)
{