diff options
author | Igor Sysoev <igor@sysoev.ru> | 2009-04-29 13:07:16 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2009-04-29 13:07:16 +0000 |
commit | a70d086812da03f0e0cc8a88622e6298ee82af09 (patch) | |
tree | f93c85ae64431e5dc54e4a2a895cf2f2dd36a70c /src | |
parent | dcc9205a39d6125988fb8a1fbed275fc389012f1 (diff) | |
download | nginx-a70d086812da03f0e0cc8a88622e6298ee82af09.tar.gz nginx-a70d086812da03f0e0cc8a88622e6298ee82af09.zip |
fix the previous commit
Diffstat (limited to 'src')
-rw-r--r-- | src/core/ngx_connection.c | 12 | ||||
-rw-r--r-- | src/os/win32/ngx_wsarecv.c | 21 |
2 files changed, 20 insertions, 13 deletions
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c index c5abb7be6..2398d5161 100644 --- a/src/core/ngx_connection.c +++ b/src/core/ngx_connection.c @@ -801,15 +801,13 @@ ngx_connection_error(ngx_connection_t *c, ngx_err_t err, char *text) { ngx_uint_t level; -#if (NGX_WIN32) - - /* Winsock returns NGX_ECONNABORTED instead of NGX_ECONNRESET */ + /* Winsock may return NGX_ECONNABORTED instead of NGX_ECONNRESET */ - if (err == NGX_ECONNABORTED -#else - if (err == NGX_ECONNRESET + if ((err == NGX_ECONNRESET +#if (NGX_WIN32) + || err == NGX_ECONNABORTED #endif - && c->log_error == NGX_ERROR_IGNORE_ECONNRESET) + ) && c->log_error == NGX_ERROR_IGNORE_ECONNRESET) { return 0; } diff --git a/src/os/win32/ngx_wsarecv.c b/src/os/win32/ngx_wsarecv.c index 908d1f38b..19c60ccb9 100644 --- a/src/os/win32/ngx_wsarecv.c +++ b/src/os/win32/ngx_wsarecv.c @@ -16,6 +16,7 @@ ngx_wsarecv(ngx_connection_t *c, u_char *buf, size_t size) u_long bytes, flags; WSABUF wsabuf[1]; ngx_err_t err; + ngx_uint_t n; ngx_event_t *rev; wsabuf[0].buf = (char *) buf; @@ -40,10 +41,13 @@ ngx_wsarecv(ngx_connection_t *c, u_char *buf, size_t size) return NGX_AGAIN; } - rev->error = 1; - ngx_connection_error(c, err, "WSARecv() failed"); + n = ngx_connection_error(c, err, "WSARecv() failed"); - return NGX_ERROR; + if (n == NGX_ERROR){ + rev->error = 1; + } + + return n; } if (bytes < size) { @@ -65,6 +69,7 @@ ngx_overlapped_wsarecv(ngx_connection_t *c, u_char *buf, size_t size) u_long bytes, flags; WSABUF wsabuf[1]; ngx_err_t err; + ngx_uint_t n; ngx_event_t *rev; LPWSAOVERLAPPED ovlp; @@ -131,9 +136,13 @@ ngx_overlapped_wsarecv(ngx_connection_t *c, u_char *buf, size_t size) return NGX_AGAIN; } - rev->error = 1; - ngx_connection_error(c, err, "WSARecv() failed"); - return NGX_ERROR; + n = ngx_connection_error(c, err, "WSARecv() failed"); + + if (n == NGX_ERROR){ + rev->error = 1; + } + + return n; } if (ngx_event_flags & NGX_USE_IOCP_EVENT) { |