Refactored nxt_http_action.

This commit is contained in:
Igor Sysoev
2020-03-04 14:03:32 +03:00
parent b214b7c690
commit 643d4383fa
3 changed files with 19 additions and 21 deletions

View File

@@ -203,8 +203,8 @@ static void nxt_http_route_resolve(nxt_task_t *task,
nxt_router_temp_conf_t *tmcf, nxt_http_route_t *route); nxt_router_temp_conf_t *tmcf, nxt_http_route_t *route);
static void nxt_http_action_resolve(nxt_task_t *task, static void nxt_http_action_resolve(nxt_task_t *task,
nxt_router_temp_conf_t *tmcf, nxt_http_action_t *action); nxt_router_temp_conf_t *tmcf, nxt_http_action_t *action);
static nxt_http_route_t *nxt_http_route_find(nxt_http_routes_t *routes, static void nxt_http_route_find(nxt_http_routes_t *routes, nxt_str_t *name,
nxt_str_t *name); nxt_http_action_t *action);
static void nxt_http_route_cleanup(nxt_task_t *task, nxt_http_route_t *routes); static void nxt_http_route_cleanup(nxt_task_t *task, nxt_http_route_t *routes);
static nxt_http_action_t *nxt_http_route_handler(nxt_task_t *task, static nxt_http_action_t *nxt_http_route_handler(nxt_task_t *task,
@@ -1111,11 +1111,9 @@ nxt_http_action_resolve(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
name.length -= 13; name.length -= 13;
name.start += 13; name.start += 13;
action->u.application = nxt_router_listener_application(tmcf, &name); nxt_router_listener_application(tmcf, &name, action);
nxt_router_app_use(task, action->u.application, 1); nxt_router_app_use(task, action->u.application, 1);
action->handler = nxt_http_application_handler;
} else if (nxt_str_start(&name, "routes", 6)) { } else if (nxt_str_start(&name, "routes", 6)) {
if (name.length == 6) { if (name.length == 6) {
@@ -1127,15 +1125,14 @@ nxt_http_action_resolve(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
name.start += 7; name.start += 7;
} }
action->u.route = nxt_http_route_find(tmcf->router_conf->routes, &name); nxt_http_route_find(tmcf->router_conf->routes, &name, action);
action->handler = nxt_http_route_handler;
} }
} }
static nxt_http_route_t * static void
nxt_http_route_find(nxt_http_routes_t *routes, nxt_str_t *name) nxt_http_route_find(nxt_http_routes_t *routes, nxt_str_t *name,
nxt_http_action_t *action)
{ {
nxt_http_route_t **route, **end; nxt_http_route_t **route, **end;
@@ -1144,13 +1141,14 @@ nxt_http_route_find(nxt_http_routes_t *routes, nxt_str_t *name)
while (route < end) { while (route < end) {
if (nxt_strstr_eq(&(*route)->name, name)) { if (nxt_strstr_eq(&(*route)->name, name)) {
return *route; action->u.route = *route;
action->handler = nxt_http_route_handler;
return;
} }
route++; route++;
} }
return NULL;
} }
@@ -1191,11 +1189,9 @@ nxt_http_pass_application(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
action->name = *name; action->name = *name;
action->u.application = nxt_router_listener_application(tmcf, name); nxt_router_listener_application(tmcf, name, action);
nxt_router_app_use(task, action->u.application, 1); nxt_router_app_use(task, action->u.application, 1);
action->handler = nxt_http_application_handler;
return action; return action;
} }

View File

@@ -1904,8 +1904,9 @@ nxt_router_app_find(nxt_queue_t *queue, nxt_str_t *name)
} }
nxt_app_t * void
nxt_router_listener_application(nxt_router_temp_conf_t *tmcf, nxt_str_t *name) nxt_router_listener_application(nxt_router_temp_conf_t *tmcf, nxt_str_t *name,
nxt_http_action_t *action)
{ {
nxt_app_t *app; nxt_app_t *app;
@@ -1915,7 +1916,8 @@ nxt_router_listener_application(nxt_router_temp_conf_t *tmcf, nxt_str_t *name)
app = nxt_router_app_find(&tmcf->previous, name); app = nxt_router_app_find(&tmcf->previous, name);
} }
return app; action->u.application = app;
action->handler = nxt_http_application_handler;
} }

View File

@@ -218,8 +218,8 @@ void nxt_router_access_log_reopen_handler(nxt_task_t *task,
void nxt_router_process_http_request(nxt_task_t *task, nxt_http_request_t *r, void nxt_router_process_http_request(nxt_task_t *task, nxt_http_request_t *r,
nxt_app_t *app); nxt_app_t *app);
void nxt_router_app_port_close(nxt_task_t *task, nxt_port_t *port); void nxt_router_app_port_close(nxt_task_t *task, nxt_port_t *port);
nxt_app_t *nxt_router_listener_application(nxt_router_temp_conf_t *tmcf, void nxt_router_listener_application(nxt_router_temp_conf_t *tmcf,
nxt_str_t *name); nxt_str_t *name, nxt_http_action_t *action);
void nxt_router_app_use(nxt_task_t *task, nxt_app_t *app, int i); void nxt_router_app_use(nxt_task_t *task, nxt_app_t *app, int i);
void nxt_router_listen_event_release(nxt_task_t *task, nxt_listen_event_t *lev, void nxt_router_listen_event_release(nxt_task_t *task, nxt_listen_event_t *lev,
nxt_socket_conf_joint_t *joint); nxt_socket_conf_joint_t *joint);