# HG changeset patch
# User Roman Arutyunyan <arut@nginx.com>
# Date 1495537655 -10800
# Tue May 23 14:07:35 2017 +0300
# Node ID 2b5c898c3cd0e9c59685e632500e7d2def45e627
# Parent 7943298d4ac09aae83ca8eef09bcf0a12c310505
Mark read event available while performing deferred accept.
Previously, the event was marked ready, but not available. This made
EPOLLRDHUP-related code (for example, in ngx_unix_recv()) expect more data from
socket. If SSL and PROXY protocol and deferred accept are enabled on a listen
socket, this lead to socket error.
diff -r 7943298d4ac0 -r 2b5c898c3cd0 src/event/ngx_event_accept.c
|
a
|
b
|
ngx_event_accept(ngx_event_t *ev)
|
| 238 | 238 | |
| 239 | 239 | if (ev->deferred_accept) { |
| 240 | 240 | rev->ready = 1; |
| 241 | | #if (NGX_HAVE_KQUEUE) |
| | 241 | #if (NGX_HAVE_KQUEUE || NGX_HAVE_EPOLLRDHUP) |
| 242 | 242 | rev->available = 1; |
| 243 | 243 | #endif |
| 244 | 244 | } |