Router: split nxt_http_app_conf_t from nxt_http_action_t.
No functional changes.
This commit is contained in:
@@ -225,11 +225,6 @@ struct nxt_http_action_s {
|
||||
nxt_upstream_t *upstream;
|
||||
uint32_t upstream_number;
|
||||
nxt_var_t *var;
|
||||
|
||||
struct {
|
||||
nxt_app_t *application;
|
||||
nxt_int_t target;
|
||||
} app;
|
||||
} u;
|
||||
|
||||
nxt_str_t name;
|
||||
|
||||
@@ -348,9 +348,7 @@ nxt_http_application_handler(nxt_task_t *task, nxt_http_request_t *r,
|
||||
nxt_str_set(&r->server_name, "localhost");
|
||||
}
|
||||
|
||||
r->app_target = action->u.app.target;
|
||||
|
||||
nxt_router_process_http_request(task, r, action->u.app.application);
|
||||
nxt_router_process_http_request(task, r, action);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1482,9 +1482,7 @@ static nxt_int_t
|
||||
nxt_http_pass_find(nxt_task_t *task, nxt_mp_t *mp, nxt_router_conf_t *rtcf,
|
||||
nxt_http_action_t *action)
|
||||
{
|
||||
nxt_str_t *targets;
|
||||
nxt_int_t ret;
|
||||
nxt_uint_t i;
|
||||
nxt_str_t segments[3];
|
||||
|
||||
ret = nxt_http_pass_segments(mp, &action->name, segments, 3);
|
||||
@@ -1493,24 +1491,8 @@ nxt_http_pass_find(nxt_task_t *task, nxt_mp_t *mp, nxt_router_conf_t *rtcf,
|
||||
}
|
||||
|
||||
if (nxt_str_eq(&segments[0], "applications", 12)) {
|
||||
ret = nxt_router_listener_application(rtcf, &segments[1], action);
|
||||
|
||||
if (ret != NXT_OK) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (segments[2].length != 0) {
|
||||
targets = action->u.app.application->targets;
|
||||
|
||||
for (i = 0; !nxt_strstr_eq(&segments[2], &targets[i]); i++);
|
||||
|
||||
action->u.app.target = i;
|
||||
|
||||
} else {
|
||||
action->u.app.target = 0;
|
||||
}
|
||||
|
||||
return NXT_OK;
|
||||
return nxt_router_application_init(rtcf, &segments[1], &segments[2],
|
||||
action);
|
||||
}
|
||||
|
||||
if (segments[2].length == 0) {
|
||||
@@ -1643,9 +1625,7 @@ nxt_http_pass_application(nxt_task_t *task, nxt_router_conf_t *rtcf,
|
||||
|
||||
action->name = *name;
|
||||
|
||||
(void) nxt_router_listener_application(rtcf, name, action);
|
||||
|
||||
action->u.app.target = 0;
|
||||
(void) nxt_router_application_init(rtcf, name, NULL, action);
|
||||
|
||||
return action;
|
||||
}
|
||||
|
||||
@@ -2158,21 +2158,46 @@ nxt_router_apps_hash_use(nxt_task_t *task, nxt_router_conf_t *rtcf, int i)
|
||||
}
|
||||
|
||||
|
||||
typedef struct {
|
||||
nxt_app_t *app;
|
||||
nxt_int_t target;
|
||||
} nxt_http_app_conf_t;
|
||||
|
||||
|
||||
nxt_int_t
|
||||
nxt_router_listener_application(nxt_router_conf_t *rtcf, nxt_str_t *name,
|
||||
nxt_http_action_t *action)
|
||||
nxt_router_application_init(nxt_router_conf_t *rtcf, nxt_str_t *name,
|
||||
nxt_str_t *target, nxt_http_action_t *action)
|
||||
{
|
||||
nxt_app_t *app;
|
||||
nxt_app_t *app;
|
||||
nxt_str_t *targets;
|
||||
nxt_uint_t i;
|
||||
nxt_http_app_conf_t *conf;
|
||||
|
||||
app = nxt_router_apps_hash_get(rtcf, name);
|
||||
|
||||
if (app == NULL) {
|
||||
return NXT_DECLINED;
|
||||
}
|
||||
|
||||
action->u.app.application = app;
|
||||
conf = nxt_mp_get(rtcf->mem_pool, sizeof(nxt_http_app_conf_t));
|
||||
if (nxt_slow_path(conf == NULL)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
action->handler = nxt_http_application_handler;
|
||||
action->u.conf = conf;
|
||||
|
||||
conf->app = app;
|
||||
|
||||
if (target != NULL && target->length != 0) {
|
||||
targets = app->targets;
|
||||
|
||||
for (i = 0; !nxt_strstr_eq(target, &targets[i]); i++);
|
||||
|
||||
conf->target = i;
|
||||
|
||||
} else {
|
||||
conf->target = 0;
|
||||
}
|
||||
|
||||
return NXT_OK;
|
||||
}
|
||||
@@ -4901,13 +4926,17 @@ nxt_router_app_port_get(nxt_task_t *task, nxt_app_t *app,
|
||||
|
||||
void
|
||||
nxt_router_process_http_request(nxt_task_t *task, nxt_http_request_t *r,
|
||||
nxt_app_t *app)
|
||||
nxt_http_action_t *action)
|
||||
{
|
||||
nxt_event_engine_t *engine;
|
||||
nxt_http_app_conf_t *conf;
|
||||
nxt_request_rpc_data_t *req_rpc_data;
|
||||
|
||||
conf = action->u.conf;
|
||||
engine = task->thread->engine;
|
||||
|
||||
r->app_target = conf->target;
|
||||
|
||||
req_rpc_data = nxt_port_rpc_register_handler_ex(task, engine->port,
|
||||
nxt_router_response_ready_handler,
|
||||
nxt_router_response_error_handler,
|
||||
@@ -4938,11 +4967,11 @@ nxt_router_process_http_request(nxt_task_t *task, nxt_http_request_t *r,
|
||||
r->err_work.obj = r;
|
||||
|
||||
req_rpc_data->stream = nxt_port_rpc_ex_stream(req_rpc_data);
|
||||
req_rpc_data->app = app;
|
||||
req_rpc_data->app = conf->app;
|
||||
req_rpc_data->msg_info.body_fd = -1;
|
||||
req_rpc_data->rpc_cancel = 1;
|
||||
|
||||
nxt_router_app_use(task, app, 1);
|
||||
nxt_router_app_use(task, conf->app, 1);
|
||||
|
||||
req_rpc_data->request = r;
|
||||
r->req_rpc_data = req_rpc_data;
|
||||
@@ -4951,7 +4980,7 @@ nxt_router_process_http_request(nxt_task_t *task, nxt_http_request_t *r,
|
||||
r->last->completion_handler = nxt_router_http_request_done;
|
||||
}
|
||||
|
||||
nxt_router_app_port_get(task, app, req_rpc_data);
|
||||
nxt_router_app_port_get(task, conf->app, req_rpc_data);
|
||||
nxt_router_app_prepare_request(task, req_rpc_data);
|
||||
}
|
||||
|
||||
|
||||
@@ -223,10 +223,10 @@ struct nxt_router_access_log_s {
|
||||
|
||||
|
||||
void nxt_router_process_http_request(nxt_task_t *task, nxt_http_request_t *r,
|
||||
nxt_app_t *app);
|
||||
nxt_http_action_t *action);
|
||||
void nxt_router_app_port_close(nxt_task_t *task, nxt_port_t *port);
|
||||
nxt_int_t nxt_router_listener_application(nxt_router_conf_t *rtcf,
|
||||
nxt_str_t *name, nxt_http_action_t *action);
|
||||
nxt_int_t nxt_router_application_init(nxt_router_conf_t *rtcf, nxt_str_t *name,
|
||||
nxt_str_t *target, nxt_http_action_t *action);
|
||||
void nxt_router_listen_event_release(nxt_task_t *task, nxt_listen_event_t *lev,
|
||||
nxt_socket_conf_joint_t *joint);
|
||||
void nxt_router_conf_release(nxt_task_t *task, nxt_socket_conf_joint_t *joint);
|
||||
|
||||
Reference in New Issue
Block a user