{
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;
}
u_long bytes, flags;
WSABUF wsabuf[1];
ngx_err_t err;
+ ngx_uint_t n;
ngx_event_t *rev;
wsabuf[0].buf = (char *) buf;
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) {
u_long bytes, flags;
WSABUF wsabuf[1];
ngx_err_t err;
+ ngx_uint_t n;
ngx_event_t *rev;
LPWSAOVERLAPPED ovlp;
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) {