Added missing cleanup when nxt_port_socket_write() failed.
This commit is contained in:
@@ -309,6 +309,7 @@ nxt_router_start_app_process_handler(nxt_task_t *task, nxt_port_t *port,
|
|||||||
size_t size;
|
size_t size;
|
||||||
uint32_t stream;
|
uint32_t stream;
|
||||||
nxt_mp_t *mp;
|
nxt_mp_t *mp;
|
||||||
|
nxt_int_t ret;
|
||||||
nxt_app_t *app;
|
nxt_app_t *app;
|
||||||
nxt_buf_t *b;
|
nxt_buf_t *b;
|
||||||
nxt_port_t *main_port;
|
nxt_port_t *main_port;
|
||||||
@@ -339,20 +340,27 @@ nxt_router_start_app_process_handler(nxt_task_t *task, nxt_port_t *port,
|
|||||||
-1, app);
|
-1, app);
|
||||||
|
|
||||||
if (nxt_slow_path(stream == 0)) {
|
if (nxt_slow_path(stream == 0)) {
|
||||||
mp = b->data;
|
|
||||||
nxt_mp_free(mp, b);
|
|
||||||
nxt_mp_release(mp);
|
|
||||||
|
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
nxt_port_socket_write(task, main_port, NXT_PORT_MSG_START_WORKER, -1,
|
ret = nxt_port_socket_write(task, main_port, NXT_PORT_MSG_START_WORKER, -1,
|
||||||
stream, port->id, b);
|
stream, port->id, b);
|
||||||
|
|
||||||
|
if (nxt_slow_path(ret != NXT_OK)) {
|
||||||
|
nxt_port_rpc_cancel(task, port, stream);
|
||||||
|
goto failed;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
|
|
||||||
|
if (b != NULL) {
|
||||||
|
mp = b->data;
|
||||||
|
nxt_mp_free(mp, b);
|
||||||
|
nxt_mp_release(mp);
|
||||||
|
}
|
||||||
|
|
||||||
nxt_thread_mutex_lock(&app->mutex);
|
nxt_thread_mutex_lock(&app->mutex);
|
||||||
|
|
||||||
app->pending_processes--;
|
app->pending_processes--;
|
||||||
@@ -1711,6 +1719,7 @@ nxt_router_listen_socket_rpc_create(nxt_task_t *task,
|
|||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
uint32_t stream;
|
uint32_t stream;
|
||||||
|
nxt_int_t ret;
|
||||||
nxt_buf_t *b;
|
nxt_buf_t *b;
|
||||||
nxt_port_t *main_port, *router_port;
|
nxt_port_t *main_port, *router_port;
|
||||||
nxt_runtime_t *rt;
|
nxt_runtime_t *rt;
|
||||||
@@ -1745,8 +1754,13 @@ nxt_router_listen_socket_rpc_create(nxt_task_t *task,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
nxt_port_socket_write(task, main_port, NXT_PORT_MSG_SOCKET, -1,
|
ret = nxt_port_socket_write(task, main_port, NXT_PORT_MSG_SOCKET, -1,
|
||||||
stream, router_port->id, b);
|
stream, router_port->id, b);
|
||||||
|
|
||||||
|
if (nxt_slow_path(ret != NXT_OK)) {
|
||||||
|
nxt_port_rpc_cancel(task, router_port, stream);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -1858,6 +1872,7 @@ nxt_router_app_rpc_create(nxt_task_t *task,
|
|||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
uint32_t stream;
|
uint32_t stream;
|
||||||
|
nxt_int_t ret;
|
||||||
nxt_buf_t *b;
|
nxt_buf_t *b;
|
||||||
nxt_port_t *main_port, *router_port;
|
nxt_port_t *main_port, *router_port;
|
||||||
nxt_runtime_t *rt;
|
nxt_runtime_t *rt;
|
||||||
@@ -1896,10 +1911,15 @@ nxt_router_app_rpc_create(nxt_task_t *task,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
app->pending_processes++;
|
ret = nxt_port_socket_write(task, main_port, NXT_PORT_MSG_START_WORKER, -1,
|
||||||
|
stream, router_port->id, b);
|
||||||
|
|
||||||
nxt_port_socket_write(task, main_port, NXT_PORT_MSG_START_WORKER, -1,
|
if (nxt_slow_path(ret != NXT_OK)) {
|
||||||
stream, router_port->id, b);
|
nxt_port_rpc_cancel(task, router_port, stream);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
app->pending_processes++;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -2802,6 +2822,7 @@ static void
|
|||||||
nxt_router_access_log_open(nxt_task_t *task, nxt_router_temp_conf_t *tmcf)
|
nxt_router_access_log_open(nxt_task_t *task, nxt_router_temp_conf_t *tmcf)
|
||||||
{
|
{
|
||||||
uint32_t stream;
|
uint32_t stream;
|
||||||
|
nxt_int_t ret;
|
||||||
nxt_buf_t *b;
|
nxt_buf_t *b;
|
||||||
nxt_port_t *main_port, *router_port;
|
nxt_port_t *main_port, *router_port;
|
||||||
nxt_runtime_t *rt;
|
nxt_runtime_t *rt;
|
||||||
@@ -2829,8 +2850,13 @@ nxt_router_access_log_open(nxt_task_t *task, nxt_router_temp_conf_t *tmcf)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
nxt_port_socket_write(task, main_port, NXT_PORT_MSG_ACCESS_LOG, -1,
|
ret = nxt_port_socket_write(task, main_port, NXT_PORT_MSG_ACCESS_LOG, -1,
|
||||||
stream, router_port->id, b);
|
stream, router_port->id, b);
|
||||||
|
|
||||||
|
if (nxt_slow_path(ret != NXT_OK)) {
|
||||||
|
nxt_port_rpc_cancel(task, router_port, stream);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user