diff options
author | Max Romanov <max.romanov@nginx.com> | 2018-03-21 16:55:02 +0300 |
---|---|---|
committer | Max Romanov <max.romanov@nginx.com> | 2018-03-21 16:55:02 +0300 |
commit | b865db1bb74e821ff413a62089d699ed30905dd6 (patch) | |
tree | f79289311856e92a62072856e1ada0c682acb96b | |
parent | 82bb66993e73d2c4b984700b9fa6bcee6b3f2b2c (diff) | |
download | unit-b865db1bb74e821ff413a62089d699ed30905dd6.tar.gz unit-b865db1bb74e821ff413a62089d699ed30905dd6.tar.bz2 |
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.
-rw-r--r-- | src/nxt_port_rpc.c | 8 |
1 files changed, 8 insertions, 0 deletions
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); } |