summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2019-03-25 14:49:28 +0300
committerMax Romanov <max.romanov@nginx.com>2019-03-25 14:49:28 +0300
commitb96e5fd8481f79935967fed56c71f72d16c59f6b (patch)
tree8ed50124471d46c9c52fa0e0f747b3d5ea531111
parent6c694d4b47b626918e09d386a7d1f66844f76fd8 (diff)
downloadunit-b96e5fd8481f79935967fed56c71f72d16c59f6b.tar.gz
unit-b96e5fd8481f79935967fed56c71f72d16c59f6b.tar.bz2
Turning off port read event state after main process fork.
Master port stores two file descriptors and works as a read port on the master process side. After a fork, the port switches into write mode and the read socket closes, but the same event structure is used for the write socket. However, the inherited structure remained in read state, telling the epoll engine to use MOD operation instead of ADD. The patch resets read event state, so the engine may write using proper ADD operation.
-rw-r--r--src/nxt_port_socket.c1
-rw-r--r--test/test_configuration.py2
2 files changed, 1 insertions, 2 deletions
diff --git a/src/nxt_port_socket.c b/src/nxt_port_socket.c
index a426df31..c9b5105b 100644
--- a/src/nxt_port_socket.c
+++ b/src/nxt_port_socket.c
@@ -566,6 +566,7 @@ void
nxt_port_read_close(nxt_port_t *port)
{
port->socket.read_ready = 0;
+ port->socket.read = NXT_EVENT_INACTIVE;
nxt_socket_close(port->socket.task, port->pair[0]);
port->pair[0] = -1;
}
diff --git a/test/test_configuration.py b/test/test_configuration.py
index de20ac25..20c5fc8b 100644
--- a/test/test_configuration.py
+++ b/test/test_configuration.py
@@ -216,9 +216,7 @@ class TestUnitConfiguration(unit.TestUnitControl):
}
}), 'no port')
- @unittest.expectedFailure
def test_json_application_name_large(self):
- self.skip_alerts.append(r'epoll_ctl.+failed')
name = "X" * 1024 * 1024
self.assertIn('success', self.conf({