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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user