From 834e8ca576868c5ecd104bd5ebec9968c7f80a0b Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 28 Feb 2019 18:04:11 +0300 Subject: Fixed timer and event race condition. When idle timeout occurs at the same time as a request comes in, the timer handler closes connection while the read event triggers request processing, and this eventually leads to segmentation fault. --- src/nxt_conn_read.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/nxt_conn_read.c') diff --git a/src/nxt_conn_read.c b/src/nxt_conn_read.c index 8228326b..83969b31 100644 --- a/src/nxt_conn_read.c +++ b/src/nxt_conn_read.c @@ -45,10 +45,11 @@ nxt_conn_io_read(nxt_task_t *task, void *obj, void *data) c = obj; - nxt_debug(task, "conn read fd:%d rdy:%d cl:%d", - c->socket.fd, c->socket.read_ready, c->socket.closed); + nxt_debug(task, "conn read fd:%d rdy:%d cl:%d er:%d bl:%d", + c->socket.fd, c->socket.read_ready, c->socket.closed, + c->socket.error, c->block_read); - if (c->socket.error != 0) { + if (c->socket.error != 0 || c->block_read) { return; } -- cgit