Using correct task for engine post.
This commit is contained in:
@@ -173,6 +173,7 @@ void
|
|||||||
nxt_router_new_port_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
nxt_router_new_port_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
||||||
{
|
{
|
||||||
nxt_start_worker_t *sw;
|
nxt_start_worker_t *sw;
|
||||||
|
nxt_event_engine_t *engine;
|
||||||
|
|
||||||
nxt_port_new_port_handler(task, msg);
|
nxt_port_new_port_handler(task, msg);
|
||||||
|
|
||||||
@@ -193,12 +194,15 @@ nxt_router_new_port_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
|||||||
|
|
||||||
nxt_router_app_release_port(task, msg->new_port, sw->app);
|
nxt_router_app_release_port(task, msg->new_port, sw->app);
|
||||||
|
|
||||||
|
engine = sw->work.data;
|
||||||
|
|
||||||
sw->work.handler = nxt_router_sw_release;
|
sw->work.handler = nxt_router_sw_release;
|
||||||
|
sw->work.task = &engine->task;
|
||||||
|
|
||||||
nxt_debug(task, "post sw #%uxD release to %p", sw->stream,
|
nxt_debug(task, "post sw #%uxD release to %p", sw->stream,
|
||||||
sw->work.data);
|
sw->work.data);
|
||||||
|
|
||||||
nxt_event_engine_post(sw->work.data, &sw->work);
|
nxt_event_engine_post(engine, &sw->work);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1777,17 +1781,21 @@ nxt_router_send_sw_request(nxt_task_t *task, void *obj, void *data)
|
|||||||
nxt_port_t *port;
|
nxt_port_t *port;
|
||||||
nxt_runtime_t *rt;
|
nxt_runtime_t *rt;
|
||||||
nxt_start_worker_t *sw;
|
nxt_start_worker_t *sw;
|
||||||
|
nxt_event_engine_t *engine;
|
||||||
|
|
||||||
sw = obj;
|
sw = obj;
|
||||||
app = sw->app;
|
app = sw->app;
|
||||||
|
|
||||||
if (app->workers + app->pending_workers >= app->max_workers) {
|
if (app->workers + app->pending_workers >= app->max_workers) {
|
||||||
|
engine = sw->work.data;
|
||||||
|
|
||||||
sw->work.handler = nxt_router_sw_release;
|
sw->work.handler = nxt_router_sw_release;
|
||||||
|
sw->work.task = &engine->task;
|
||||||
|
|
||||||
nxt_debug(task, "%uD/%uD running/penging workers, post sw #%uxD "
|
nxt_debug(task, "%uD/%uD running/penging workers, post sw #%uxD "
|
||||||
"release to %p", sw->stream, sw->work.data);
|
"release to %p", sw->stream, sw->work.data);
|
||||||
|
|
||||||
nxt_event_engine_post(sw->work.data, &sw->work);
|
nxt_event_engine_post(engine, &sw->work);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1876,7 +1884,7 @@ nxt_router_app_release_port(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
work->next = NULL;
|
work->next = NULL;
|
||||||
work->handler = nxt_router_app_release_port;
|
work->handler = nxt_router_app_release_port;
|
||||||
work->task = port->socket.task;
|
work->task = &port->engine->task;
|
||||||
work->obj = port;
|
work->obj = port;
|
||||||
work->data = app;
|
work->data = app;
|
||||||
|
|
||||||
@@ -2023,15 +2031,14 @@ nxt_router_app_port(nxt_task_t *task, nxt_req_conn_link_t *rc)
|
|||||||
sw->rc = rc;
|
sw->rc = rc;
|
||||||
sw->mem_pool = c->mem_pool;
|
sw->mem_pool = c->mem_pool;
|
||||||
|
|
||||||
|
rt = task->thread->runtime;
|
||||||
|
master_port = rt->port_by_type[NXT_PROCESS_MASTER];
|
||||||
|
|
||||||
sw->work.handler = nxt_router_send_sw_request;
|
sw->work.handler = nxt_router_send_sw_request;
|
||||||
sw->work.task = task;
|
sw->work.task = &master_port->engine->task;
|
||||||
sw->work.obj = sw;
|
sw->work.obj = sw;
|
||||||
sw->work.data = task->thread->engine;
|
sw->work.data = task->thread->engine;
|
||||||
|
|
||||||
rt = task->thread->runtime;
|
|
||||||
|
|
||||||
master_port = rt->port_by_type[NXT_PROCESS_MASTER];
|
|
||||||
|
|
||||||
nxt_debug(task, "post send sw %uxD to master engine %p", sw->stream,
|
nxt_debug(task, "post send sw %uxD to master engine %p", sw->stream,
|
||||||
master_port->engine);
|
master_port->engine);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user