comparison src/os/win32/ngx_wsarecv.c @ 8111:56819a9491fe

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).
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 01 Dec 2022 04:22:36 +0300
parents efd71d49bde0
children
comparison
equal deleted inserted replaced
8110:06c7d84cafdb 8111:56819a9491fe
76 if (ngx_socket_nread(c->fd, &rev->available) == -1) { 76 if (ngx_socket_nread(c->fd, &rev->available) == -1) {
77 n = ngx_connection_error(c, ngx_socket_errno, 77 n = ngx_connection_error(c, ngx_socket_errno,
78 ngx_socket_nread_n " failed"); 78 ngx_socket_nread_n " failed");
79 79
80 if (n == NGX_ERROR) { 80 if (n == NGX_ERROR) {
81 rev->ready = 0;
81 rev->error = 1; 82 rev->error = 1;
82 } 83 }
83 84
84 return n; 85 return n;
85 } 86 }
93 if (bytes < size) { 94 if (bytes < size) {
94 rev->ready = 0; 95 rev->ready = 0;
95 } 96 }
96 97
97 if (bytes == 0) { 98 if (bytes == 0) {
99 rev->ready = 0;
98 rev->eof = 1; 100 rev->eof = 1;
99 } 101 }
100 102
101 return bytes; 103 return bytes;
102 } 104 }