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.
This commit is contained in:
Igor Sysoev
2019-02-28 18:04:11 +03:00
parent afda14d1f2
commit 834e8ca576
5 changed files with 17 additions and 8 deletions

View File

@@ -22,9 +22,10 @@ nxt_conn_io_write(nxt_task_t *task, void *obj, void *data)
c = obj;
nxt_debug(task, "conn write fd:%d", c->socket.fd);
nxt_debug(task, "conn write fd:%d er:%d bl:%d",
c->socket.fd, c->socket.error, c->block_write);
if (c->socket.error != 0) {
if (c->socket.error != 0 || c->block_write) {
goto error;
}