Mercurial > hg > nginx
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 } |