mirror of
https://github.com/nginx/nginx.git
synced 2024-11-27 15:39:01 +08:00
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).
This commit is contained in:
parent
39892c6265
commit
5eaa67490a
@ -78,6 +78,7 @@ ngx_wsarecv(ngx_connection_t *c, u_char *buf, size_t size)
|
||||
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 *buf, size_t size)
|
||||
}
|
||||
|
||||
if (bytes == 0) {
|
||||
rev->ready = 0;
|
||||
rev->eof = 1;
|
||||
}
|
||||
|
||||
|
@ -121,6 +121,7 @@ ngx_wsarecv_chain(ngx_connection_t *c, ngx_chain_t *chain, off_t limit)
|
||||
} 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, ngx_chain_t *chain, off_t limit)
|
||||
}
|
||||
|
||||
if (bytes == 0) {
|
||||
rev->ready = 0;
|
||||
rev->eof = 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user