Mercurial > hg > nginx
comparison src/os/win32/ngx_wsarecv.c @ 278:0ba4821f4460
nginx-0.0.2-2004-03-04-10:04:55 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 04 Mar 2004 07:04:55 +0000 |
parents | 1bf718ce0dde |
children | 7c7183b3ea8b |
comparison
equal
deleted
inserted
replaced
277:e91499541410 | 278:0ba4821f4460 |
---|---|
18 flags = 0; | 18 flags = 0; |
19 bytes = 0; | 19 bytes = 0; |
20 | 20 |
21 rc = WSARecv(c->fd, wsabuf, 1, &bytes, &flags, NULL, NULL); | 21 rc = WSARecv(c->fd, wsabuf, 1, &bytes, &flags, NULL, NULL); |
22 | 22 |
23 ngx_log_debug(c->log, "WSARecv: %d:%d" _ rc _ bytes); | 23 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, |
24 "WSARecv: fd:%d rc:%d %d of %d", c->fd, rc, bytes, size); | |
24 | 25 |
25 rev = c->read; | 26 rev = c->read; |
26 | 27 |
27 if (rc == -1) { | 28 if (rc == -1) { |
28 rev->ready = 0; | 29 rev->ready = 0; |
29 err = ngx_socket_errno; | 30 err = ngx_socket_errno; |
30 | 31 |
31 if (err == WSAEWOULDBLOCK) { | 32 if (err == WSAEWOULDBLOCK) { |
32 ngx_log_error(NGX_LOG_INFO, c->log, err, "WSARecv() EAGAIN"); | 33 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, |
34 "WSARecv() not ready"); | |
33 return NGX_AGAIN; | 35 return NGX_AGAIN; |
34 } | 36 } |
35 | 37 |
36 rev->error = 1; | 38 rev->error = 1; |
37 ngx_log_error(NGX_LOG_CRIT, c->log, err, "WSARecv() failed"); | 39 ngx_connection_error(c, err, "WSARecv() failed"); |
40 | |
38 return NGX_ERROR; | 41 return NGX_ERROR; |
39 } | 42 } |
40 | 43 |
41 if (bytes < size) { | 44 if (bytes < size) { |
42 rev->ready = 0; | 45 rev->ready = 0; |
61 LPWSAOVERLAPPED ovlp; | 64 LPWSAOVERLAPPED ovlp; |
62 | 65 |
63 rev = c->read; | 66 rev = c->read; |
64 | 67 |
65 if (!rev->ready) { | 68 if (!rev->ready) { |
66 ngx_log_error(NGX_LOG_ALERT, rev->log, 0, "SECOND WSA POST"); | 69 ngx_log_error(NGX_LOG_ALERT, rev->log, 0, "second wsa post"); |
67 return NGX_AGAIN; | 70 return NGX_AGAIN; |
68 } | 71 } |
69 | 72 |
70 ngx_log_debug(c->log, "rev->complete: %d" _ rev->complete); | 73 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, |
74 "rev->complete: %d", rev->complete); | |
71 | 75 |
72 if (rev->complete) { | 76 if (rev->complete) { |
73 rev->complete = 0; | 77 rev->complete = 0; |
74 | 78 |
75 if (ngx_event_flags & NGX_USE_IOCP_EVENT) { | 79 if (ngx_event_flags & NGX_USE_IOCP_EVENT) { |
76 if (rev->ovlp.error) { | 80 if (rev->ovlp.error) { |
77 ngx_log_error(NGX_LOG_ERR, c->log, rev->ovlp.error, | 81 ngx_connection_error(c, rev->ovlp.error, "WSARecv() failed"); |
78 "WSARecv() failed"); | |
79 return NGX_ERROR; | 82 return NGX_ERROR; |
80 } | 83 } |
81 | 84 |
82 return rev->available; | 85 return rev->available; |
83 } | 86 } |
84 | 87 |
85 if (WSAGetOverlappedResult(c->fd, (LPWSAOVERLAPPED) &rev->ovlp, | 88 if (WSAGetOverlappedResult(c->fd, (LPWSAOVERLAPPED) &rev->ovlp, |
86 &bytes, 0, NULL) == 0) { | 89 &bytes, 0, NULL) == 0) { |
87 ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno, | 90 ngx_connection_error(c, ngx_socket_errno, |
88 "WSARecv() or WSAGetOverlappedResult() failed"); | 91 "WSARecv() or WSAGetOverlappedResult() failed"); |
89 | |
90 return NGX_ERROR; | 92 return NGX_ERROR; |
91 } | 93 } |
92 | 94 |
93 return bytes; | 95 return bytes; |
94 } | 96 } |
102 | 104 |
103 rc = WSARecv(c->fd, wsabuf, 1, &bytes, &flags, ovlp, NULL); | 105 rc = WSARecv(c->fd, wsabuf, 1, &bytes, &flags, ovlp, NULL); |
104 | 106 |
105 rev->complete = 0; | 107 rev->complete = 0; |
106 | 108 |
107 ngx_log_debug(c->log, "WSARecv: %d:%d" _ rc _ bytes); | 109 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, |
110 "WSARecv: fd:%d rc:%d %d of %d", c->fd, rc, bytes, size); | |
108 | 111 |
109 if (rc == -1) { | 112 if (rc == -1) { |
110 err = ngx_socket_errno; | 113 err = ngx_socket_errno; |
111 if (err == WSA_IO_PENDING) { | 114 if (err == WSA_IO_PENDING) { |
112 rev->active = 1; | 115 rev->active = 1; |
113 return NGX_AGAIN; | 116 return NGX_AGAIN; |
114 } | 117 } |
115 | 118 |
116 rev->error = 1; | 119 rev->error = 1; |
117 ngx_log_error(NGX_LOG_CRIT, c->log, err, "WSARecv() failed"); | 120 ngx_connection_error(c, err, "WSARecv() failed"); |
118 return NGX_ERROR; | 121 return NGX_ERROR; |
119 } | 122 } |
120 | 123 |
121 if (ngx_event_flags & NGX_USE_IOCP_EVENT) { | 124 if (ngx_event_flags & NGX_USE_IOCP_EVENT) { |
122 | 125 |