Maxim Dounin
November 28, 2022 05:22PM
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1669672416 -10800
# Tue Nov 29 00:53:36 2022 +0300
# Node ID 447cea17128f6a4ee5399ed56e53f8d9c163420b
# Parent 97a5a082c58ac91f278c7faf2286e0bc04b3c958
Win32: event flags handling edge cases in ngx_wsarecv().

Fixed event flags handling edge cases in ngx_wsarecv() and ngx_wsarecv_chain(),
notably to always reset rev->ready in case of errors (which wasn't the case
after ngx_socket_nread() errors), and after EOF (rev->ready was not cleared
if due to a misconfiguration a zero-sized buffer was used for reading).

diff --git a/src/os/win32/ngx_wsarecv.c b/src/os/win32/ngx_wsarecv.c
--- a/src/os/win32/ngx_wsarecv.c
+++ b/src/os/win32/ngx_wsarecv.c
@@ -78,6 +78,7 @@ ngx_wsarecv(ngx_connection_t *c, u_char
ngx_socket_nread_n " failed");

if (n == NGX_ERROR) {
+ rev->ready = 0;
rev->error = 1;
}

@@ -95,6 +96,7 @@ ngx_wsarecv(ngx_connection_t *c, u_char
}

if (bytes == 0) {
+ rev->ready = 0;
rev->eof = 1;
}

diff --git a/src/os/win32/ngx_wsarecv_chain.c b/src/os/win32/ngx_wsarecv_chain.c
--- a/src/os/win32/ngx_wsarecv_chain.c
+++ b/src/os/win32/ngx_wsarecv_chain.c
@@ -121,6 +121,7 @@ ngx_wsarecv_chain(ngx_connection_t *c, n
} else if (bytes == size) {

if (ngx_socket_nread(c->fd, &rev->available) == -1) {
+ rev->ready = 0;
rev->error = 1;
ngx_connection_error(c, ngx_socket_errno,
ngx_socket_nread_n " failed");
@@ -138,6 +139,7 @@ ngx_wsarecv_chain(ngx_connection_t *c, n
}

if (bytes == 0) {
+ rev->ready = 0;
rev->eof = 1;
}


_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[PATCH 0 of 2] unbuffered proxying CPU hog (ticket #2418)

Maxim Dounin 378 November 28, 2022 05:22PM

[PATCH 2 of 2] Win32: event flags handling edge cases in ngx_wsarecv()

Maxim Dounin 88 November 28, 2022 05:22PM

Re: [PATCH 0 of 2] unbuffered proxying CPU hog (ticket #2418)

Sergey Kandaurov 93 November 30, 2022 10:32AM

Re: [PATCH 0 of 2] unbuffered proxying CPU hog (ticket #2418)

Maxim Dounin 108 November 30, 2022 08:42PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 154
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready