From 89b1e88f8f0b1d66a19ac9657c9568ef5fb0ff27 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Thu, 28 May 2020 12:40:49 +0300 Subject: [PATCH] Closing unsent file descriptors from port queue. After a process exits, all ports linked to it from other processes should be closed. All unsent file descriptors in port queue, marked as "close after send", should be closed to avoid resource leakage. --- src/nxt_port_socket.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/nxt_port_socket.c b/src/nxt_port_socket.c index 9c7da970..4e3eaef6 100644 --- a/src/nxt_port_socket.c +++ b/src/nxt_port_socket.c @@ -993,6 +993,12 @@ nxt_port_error_handler(nxt_task_t *task, void *obj, void *data) nxt_queue_each(msg, &port->messages, nxt_port_send_msg_t, link) { + if (msg->fd != -1 && msg->close_fd != 0) { + nxt_fd_close(msg->fd); + + msg->fd = -1; + } + for (b = msg->buf; b != NULL; b = next) { next = b->next; b->next = NULL;