aboutsummaryrefslogtreecommitdiff
path: root/src/event/ngx_event.c
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2019-12-24 17:24:59 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2019-12-24 17:24:59 +0300
commit24f18aea8ce1e847362c6bfa586bc0807ebae90d (patch)
treed691aecc335b140cc1deb45bf356421004284df0 /src/event/ngx_event.c
parent810559665a704957431b387572af99a82039162a (diff)
downloadnginx-24f18aea8ce1e847362c6bfa586bc0807ebae90d.tar.gz
nginx-24f18aea8ce1e847362c6bfa586bc0807ebae90d.zip
SSL: reworked posted next events.
Introduced in 9d2ad2fb4423 available bytes handling in SSL relied on connection read handler being overwritten to set the ready flag and the amount of available bytes. This approach is, however, does not work properly when connection read handler is changed, for example, when switching to a next pipelined request, and can result in unexpected connection timeouts, see here: http://mailman.nginx.org/pipermail/nginx-devel/2019-December/012825.html Fix is to introduce ngx_event_process_posted_next() instead, which will set ready and available regardless of how event handler is set.
Diffstat (limited to 'src/event/ngx_event.c')
-rw-r--r--src/event/ngx_event.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 6e19f311b..54ab605e3 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -238,8 +238,6 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
}
if (!ngx_queue_empty(&ngx_posted_next_events)) {
- ngx_queue_add(&ngx_posted_events, &ngx_posted_next_events);
- ngx_queue_init(&ngx_posted_next_events);
timer = 0;
}
@@ -263,6 +261,7 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
}
ngx_event_process_posted(cycle, &ngx_posted_events);
+ ngx_event_process_posted_next(cycle, &ngx_posted_next_events);
}