Handling error return from application 'run()' function.
Server error response generated or connection closed.
This commit is contained in:
@@ -390,6 +390,7 @@ void
|
|||||||
nxt_app_data_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
nxt_app_data_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
||||||
{
|
{
|
||||||
size_t dump_size;
|
size_t dump_size;
|
||||||
|
nxt_int_t res;
|
||||||
nxt_buf_t *b;
|
nxt_buf_t *b;
|
||||||
nxt_port_t *port;
|
nxt_port_t *port;
|
||||||
nxt_app_rmsg_t rmsg = { msg->buf };
|
nxt_app_rmsg_t rmsg = { msg->buf };
|
||||||
@@ -417,7 +418,12 @@ nxt_app_data_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
|||||||
wmsg.buf = &wmsg.write;
|
wmsg.buf = &wmsg.write;
|
||||||
wmsg.stream = msg->port_msg.stream;
|
wmsg.stream = msg->port_msg.stream;
|
||||||
|
|
||||||
nxt_app->run(task, &rmsg, &wmsg);
|
res = nxt_app->run(task, &rmsg, &wmsg);
|
||||||
|
|
||||||
|
if (nxt_slow_path(res != NXT_OK)) {
|
||||||
|
nxt_port_socket_write(task, port, NXT_PORT_MSG_RPC_ERROR, -1,
|
||||||
|
msg->port_msg.stream, 0, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2268,8 +2268,9 @@ nxt_router_engine_post(nxt_event_engine_t *engine, nxt_work_t *jobs)
|
|||||||
|
|
||||||
|
|
||||||
static nxt_port_handlers_t nxt_router_app_port_handlers = {
|
static nxt_port_handlers_t nxt_router_app_port_handlers = {
|
||||||
.mmap = nxt_port_mmap_handler,
|
.rpc_error = nxt_port_rpc_handler,
|
||||||
.data = nxt_port_rpc_handler,
|
.mmap = nxt_port_mmap_handler,
|
||||||
|
.data = nxt_port_rpc_handler,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -2808,7 +2809,10 @@ nxt_router_response_error_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nxt_http_request_error(task, rc->ap->request, NXT_HTTP_SERVICE_UNAVAILABLE);
|
if (rc->ap != NULL) {
|
||||||
|
nxt_http_request_error(task, rc->ap->request,
|
||||||
|
NXT_HTTP_SERVICE_UNAVAILABLE);
|
||||||
|
}
|
||||||
|
|
||||||
nxt_router_rc_unlink(task, rc);
|
nxt_router_rc_unlink(task, rc);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user