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