From b865db1bb74e821ff413a62089d699ed30905dd6 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Wed, 21 Mar 2018 16:55:02 +0300 Subject: Registered RPC handlers affects port use counters. Service process port gets closed and released by runtime on process exit, but there can be active RPC handlers, which uses port structure. --- src/nxt_port_rpc.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/nxt_port_rpc.c b/src/nxt_port_rpc.c index 792bf55f..b53fbb78 100644 --- a/src/nxt_port_rpc.c +++ b/src/nxt_port_rpc.c @@ -143,6 +143,8 @@ nxt_port_rpc_register_handler_ex(nxt_task_t *task, nxt_port_t *port, nxt_debug(task, "rpc: stream #%uD registered", stream); + nxt_port_inc_use(port); + return reg->data; } @@ -332,6 +334,8 @@ nxt_port_rpc_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg) nxt_debug(task, "rpc: stream #%uD free registration", stream); nxt_mp_free(port->mem_pool, reg); + + nxt_port_use(task, port, -1); } @@ -421,6 +425,8 @@ nxt_port_rpc_remove_peer(nxt_task_t *task, nxt_port_t *port, nxt_pid_t peer) } nxt_mp_free(port->mem_pool, reg); + + nxt_port_use(task, port, -1); } } @@ -452,4 +458,6 @@ nxt_port_rpc_cancel(nxt_task_t *task, nxt_port_t *port, uint32_t stream) nxt_debug(task, "rpc: stream #%uD cancel registration", stream); nxt_mp_free(port->mem_pool, reg); + + nxt_port_use(task, port, -1); } -- cgit