comparison src/os/win32/ngx_init.c @ 100:7ebc8b7fb816

nginx-0.0.1-2003-06-03-19:42:58 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 03 Jun 2003 15:42:58 +0000
parents 738fe44c70d5
children 7e86d028d8f0
comparison
equal deleted inserted replaced
99:a059e1aa65d4 100:7ebc8b7fb816
12 NULL, 12 NULL,
13 NULL 13 NULL
14 }; 14 };
15 15
16 16
17 /* Should these pointers be per protocol ? */
18 LPFN_ACCEPTEX acceptex;
19 LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs;
20 LPFN_TRANSMITFILE transmitfile;
21
22 static GUID ae_guid = WSAID_ACCEPTEX;
23 static GUID as_guid = WSAID_GETACCEPTEXSOCKADDRS;
24 static GUID tf_guid = WSAID_TRANSMITFILE;
25
26
17 int ngx_os_init(ngx_log_t *log) 27 int ngx_os_init(ngx_log_t *log)
18 { 28 {
19 if (ngx_init_sockets(log) == NGX_ERROR) { 29 DWORD bytes;
30 SOCKET s;
31 WSADATA wsd;
32
33 /* init Winsock */
34
35 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
36 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
37 "WSAStartup failed");
20 return NGX_ERROR; 38 return NGX_ERROR;
39 }
40
41 ngx_log_error(NGX_LOG_INFO, log, 0, "max sockets: %d", wsd.iMaxSockets);
42
43 /* get AcceptEx(), GetAcceptExSockAddrs() and TransmitFile() addresses */
44
45 s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0);
46 if (s == -1) {
47 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
48 ngx_socket_n " %s falied");
49 return NGX_ERROR;
50 }
51
52 if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &ae_guid, sizeof(GUID),
53 &acceptex, sizeof(LPFN_ACCEPTEX), &bytes, NULL, NULL) == -1) {
54
55 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
56 "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, "
57 "WSAID_ACCEPTEX) failed");
58 return NGX_ERROR;
59 }
60
61 if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &as_guid, sizeof(GUID),
62 &getacceptexsockaddrs, sizeof(LPFN_GETACCEPTEXSOCKADDRS),
63 &bytes, NULL, NULL) == -1) {
64
65 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
66 "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, "
67 "WSAID_ACCEPTEX) failed");
68 return NGX_ERROR;
69 }
70
71 if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &tf_guid, sizeof(GUID),
72 &transmitfile, sizeof(LPFN_TRANSMITFILE), &bytes,
73 NULL, NULL) == -1) {
74 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
75 "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, "
76 "WSAID_TRANSMITFILE) failed");
77 return NGX_ERROR;
78 }
79
80 if (ngx_close_socket(s) == -1) {
81 ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno,
82 ngx_close_socket_n " failed");
21 } 83 }
22 84
23 return NGX_OK; 85 return NGX_OK;
24 } 86 }