Mercurial > hg > nginx
comparison src/os/win32/ngx_socket.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 | 50186b49f2ad |
children | da8c5707af39 |
comparison
equal
deleted
inserted
replaced
99:a059e1aa65d4 | 100:7ebc8b7fb816 |
---|---|
1 | 1 |
2 #include <ngx_config.h> | 2 #include <ngx_config.h> |
3 #include <ngx_core.h> | |
3 | 4 |
4 #include <ngx_core.h> | |
5 #include <ngx_log.h> | |
6 #include <ngx_errno.h> | |
7 #include <ngx_socket.h> | |
8 | |
9 | |
10 /* These pointers should be per protocol ? */ | |
11 LPFN_ACCEPTEX acceptex; | |
12 LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs; | |
13 LPFN_TRANSMITFILE transmitfile; | |
14 | |
15 static GUID ae_guid = WSAID_ACCEPTEX; | |
16 static GUID as_guid = WSAID_GETACCEPTEXSOCKADDRS; | |
17 static GUID tf_guid = WSAID_TRANSMITFILE; | |
18 | |
19 | |
20 int ngx_init_sockets(ngx_log_t *log) | |
21 { | |
22 DWORD bytes; | |
23 SOCKET s; | |
24 WSADATA wsd; | |
25 | |
26 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) { | |
27 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, | |
28 "WSAStartup failed"); | |
29 return NGX_ERROR; | |
30 } | |
31 | |
32 s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0); | |
33 if (s == -1) { | |
34 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, | |
35 ngx_socket_n " %s falied"); | |
36 return NGX_ERROR; | |
37 } | |
38 | |
39 if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &ae_guid, sizeof(GUID), | |
40 &acceptex, sizeof(LPFN_ACCEPTEX), &bytes, NULL, NULL) == -1) { | |
41 | |
42 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, | |
43 "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " | |
44 "WSAID_ACCEPTEX) failed"); | |
45 return NGX_ERROR; | |
46 } | |
47 | |
48 if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &as_guid, sizeof(GUID), | |
49 &getacceptexsockaddrs, sizeof(LPFN_GETACCEPTEXSOCKADDRS), | |
50 &bytes, NULL, NULL) == -1) { | |
51 | |
52 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, | |
53 "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " | |
54 "WSAID_ACCEPTEX) failed"); | |
55 return NGX_ERROR; | |
56 } | |
57 | |
58 if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &tf_guid, sizeof(GUID), | |
59 &transmitfile, sizeof(LPFN_TRANSMITFILE), &bytes, | |
60 NULL, NULL) == -1) { | |
61 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, | |
62 "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " | |
63 "WSAID_TRANSMITFILE) failed"); | |
64 return NGX_ERROR; | |
65 } | |
66 | |
67 if (ngx_close_socket(s) == -1) { | |
68 ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno, | |
69 ngx_close_socket_n " failed"); | |
70 } | |
71 | |
72 return NGX_OK; | |
73 } | |
74 | 5 |
75 int ngx_nonblocking(ngx_socket_t s) | 6 int ngx_nonblocking(ngx_socket_t s) |
76 { | 7 { |
77 unsigned long nb = 1; | 8 unsigned long nb = 1; |
78 | 9 |
79 return ioctlsocket(s, FIONBIO, &nb); | 10 return ioctlsocket(s, FIONBIO, &nb); |
80 } | 11 } |
81 | 12 |
13 | |
82 int ngx_blocking(ngx_socket_t s) | 14 int ngx_blocking(ngx_socket_t s) |
83 { | 15 { |
84 unsigned long nb = 0; | 16 unsigned long nb = 0; |
85 | 17 |
86 return ioctlsocket(s, FIONBIO, &nb); | 18 return ioctlsocket(s, FIONBIO, &nb); |