]> git.kaiwu.me - nginx.git/commitdiff
fix the previous commit
authorIgor Sysoev <igor@sysoev.ru>
Wed, 29 Apr 2009 13:07:16 +0000 (13:07 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Wed, 29 Apr 2009 13:07:16 +0000 (13:07 +0000)
src/core/ngx_connection.c
src/os/win32/ngx_wsarecv.c

index c5abb7be6ce21088af85b4bcb7d2c4dbf0b88521..2398d51619e3fb2ccf3830eb1821f1fbe51174d2 100644 (file)
@@ -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;
     }
index 908d1f38b86afd303668032034826f19a7ff8e6b..19c60ccb92374d35ec34b8e7de19a9033ed5cd9d 100644 (file)
@@ -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) {