changeset 2775:01c691e31032

fix the previous commit
author Igor Sysoev <igor@sysoev.ru>
date Wed, 29 Apr 2009 13:07:16 +0000
parents baad3036086e
children 88987e52be42
files src/core/ngx_connection.c src/os/win32/ngx_wsarecv.c
diffstat 2 files changed, 20 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -801,15 +801,13 @@ ngx_connection_error(ngx_connection_t *c
 {
     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;
     }
--- 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 
     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 
             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 
     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 
             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) {