Simplified cycles in nxt_http_route_rule().
This commit is contained in:
@@ -539,20 +539,18 @@ nxt_http_route_pattern_copy(nxt_mp_t *mp, nxt_str_t *test,
|
|||||||
void
|
void
|
||||||
nxt_http_routes_resolve(nxt_task_t *task, nxt_router_temp_conf_t *tmcf)
|
nxt_http_routes_resolve(nxt_task_t *task, nxt_router_temp_conf_t *tmcf)
|
||||||
{
|
{
|
||||||
nxt_uint_t items;
|
nxt_http_route_t **route, **end;
|
||||||
nxt_http_route_t **route;
|
|
||||||
nxt_http_routes_t *routes;
|
nxt_http_routes_t *routes;
|
||||||
|
|
||||||
routes = tmcf->router_conf->routes;
|
routes = tmcf->router_conf->routes;
|
||||||
if (routes != NULL) {
|
if (routes != NULL) {
|
||||||
items = routes->items;
|
|
||||||
route = &routes->route[0];
|
route = &routes->route[0];
|
||||||
|
end = route + routes->items;
|
||||||
|
|
||||||
while (items != 0) {
|
while (route < end) {
|
||||||
nxt_http_route_resolve(task, tmcf, *route);
|
nxt_http_route_resolve(task, tmcf, *route);
|
||||||
|
|
||||||
route++;
|
route++;
|
||||||
items--;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -562,17 +560,15 @@ static void
|
|||||||
nxt_http_route_resolve(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
|
nxt_http_route_resolve(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
|
||||||
nxt_http_route_t *route)
|
nxt_http_route_t *route)
|
||||||
{
|
{
|
||||||
nxt_uint_t items;
|
nxt_http_route_match_t **match, **end;
|
||||||
nxt_http_route_match_t **match;
|
|
||||||
|
|
||||||
items = route->items;
|
|
||||||
match = &route->match[0];
|
match = &route->match[0];
|
||||||
|
end = match + route->items;
|
||||||
|
|
||||||
while (items != 0) {
|
while (match < end) {
|
||||||
nxt_http_pass_resolve(task, tmcf, &(*match)->pass);
|
nxt_http_pass_resolve(task, tmcf, &(*match)->pass);
|
||||||
|
|
||||||
match++;
|
match++;
|
||||||
items--;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -615,11 +611,10 @@ nxt_http_pass_resolve(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
|
|||||||
static nxt_http_route_t *
|
static nxt_http_route_t *
|
||||||
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_uint_t items;
|
nxt_http_route_t **route, **end;
|
||||||
nxt_http_route_t **route;
|
|
||||||
|
|
||||||
items = routes->items;
|
|
||||||
route = &routes->route[0];
|
route = &routes->route[0];
|
||||||
|
end = route + routes->items;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (nxt_strstr_eq(&(*route)->name, name)) {
|
if (nxt_strstr_eq(&(*route)->name, name)) {
|
||||||
@@ -627,9 +622,8 @@ nxt_http_route_find(nxt_http_routes_t *routes, nxt_str_t *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
route++;
|
route++;
|
||||||
items--;
|
|
||||||
|
|
||||||
} while (items != 0);
|
} while (route < end);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -681,20 +675,18 @@ nxt_http_pass_application(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
|
|||||||
void
|
void
|
||||||
nxt_http_routes_cleanup(nxt_task_t *task, nxt_http_routes_t *routes)
|
nxt_http_routes_cleanup(nxt_task_t *task, nxt_http_routes_t *routes)
|
||||||
{
|
{
|
||||||
nxt_uint_t items;
|
nxt_http_route_t **route, **end;
|
||||||
nxt_http_route_t **route;
|
|
||||||
|
|
||||||
if (routes != NULL) {
|
if (routes != NULL) {
|
||||||
items = routes->items;
|
|
||||||
route = &routes->route[0];
|
route = &routes->route[0];
|
||||||
|
end = route + routes->items;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
nxt_http_route_cleanup(task, *route);
|
nxt_http_route_cleanup(task, *route);
|
||||||
|
|
||||||
route++;
|
route++;
|
||||||
items--;
|
|
||||||
|
|
||||||
} while (items != 0);
|
} while (route < end);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -702,19 +694,17 @@ nxt_http_routes_cleanup(nxt_task_t *task, nxt_http_routes_t *routes)
|
|||||||
static void
|
static void
|
||||||
nxt_http_route_cleanup(nxt_task_t *task, nxt_http_route_t *route)
|
nxt_http_route_cleanup(nxt_task_t *task, nxt_http_route_t *route)
|
||||||
{
|
{
|
||||||
nxt_uint_t items;
|
nxt_http_route_match_t **match, **end;
|
||||||
nxt_http_route_match_t **match;
|
|
||||||
|
|
||||||
items = route->items;
|
|
||||||
match = &route->match[0];
|
match = &route->match[0];
|
||||||
|
end = match + route->items;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
nxt_http_pass_cleanup(task, &(*match)->pass);
|
nxt_http_pass_cleanup(task, &(*match)->pass);
|
||||||
|
|
||||||
match++;
|
match++;
|
||||||
items--;
|
|
||||||
|
|
||||||
} while (items != 0);
|
} while (match < end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -731,23 +721,21 @@ static nxt_http_pass_t *
|
|||||||
nxt_http_route_pass(nxt_task_t *task, nxt_http_request_t *r,
|
nxt_http_route_pass(nxt_task_t *task, nxt_http_request_t *r,
|
||||||
nxt_http_pass_t *start)
|
nxt_http_pass_t *start)
|
||||||
{
|
{
|
||||||
nxt_uint_t items;
|
|
||||||
nxt_http_pass_t *pass;
|
nxt_http_pass_t *pass;
|
||||||
nxt_http_route_t *route;
|
nxt_http_route_t *route;
|
||||||
nxt_http_route_match_t **match;
|
nxt_http_route_match_t **match, **end;
|
||||||
|
|
||||||
route = start->u.route;
|
route = start->u.route;
|
||||||
items = route->items;
|
|
||||||
match = &route->match[0];
|
match = &route->match[0];
|
||||||
|
end = match + route->items;
|
||||||
|
|
||||||
while (items != 0) {
|
while (match < end) {
|
||||||
pass = nxt_http_route_match(r, *match);
|
pass = nxt_http_route_match(r, *match);
|
||||||
if (pass != NULL) {
|
if (pass != NULL) {
|
||||||
return pass;
|
return pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
match++;
|
match++;
|
||||||
items--;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nxt_http_request_error(task, r, NXT_HTTP_NOT_FOUND);
|
nxt_http_request_error(task, r, NXT_HTTP_NOT_FOUND);
|
||||||
@@ -759,19 +747,17 @@ nxt_http_route_pass(nxt_task_t *task, nxt_http_request_t *r,
|
|||||||
static nxt_http_pass_t *
|
static nxt_http_pass_t *
|
||||||
nxt_http_route_match(nxt_http_request_t *r, nxt_http_route_match_t *match)
|
nxt_http_route_match(nxt_http_request_t *r, nxt_http_route_match_t *match)
|
||||||
{
|
{
|
||||||
nxt_uint_t items;
|
nxt_http_route_rule_t **rule, **end;
|
||||||
nxt_http_route_rule_t **rule;
|
|
||||||
|
|
||||||
rule = &match->rule[0];
|
rule = &match->rule[0];
|
||||||
items = match->items;
|
end = rule + match->items;
|
||||||
|
|
||||||
while (items != 0) {
|
while (rule < end) {
|
||||||
if (!nxt_http_route_rule(r, *rule)) {
|
if (!nxt_http_route_rule(r, *rule)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rule++;
|
rule++;
|
||||||
items--;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return &match->pass;
|
return &match->pass;
|
||||||
@@ -785,10 +771,9 @@ nxt_http_route_rule(nxt_http_request_t *r, nxt_http_route_rule_t *rule)
|
|||||||
u_char *start;
|
u_char *start;
|
||||||
size_t length;
|
size_t length;
|
||||||
nxt_str_t *s;
|
nxt_str_t *s;
|
||||||
nxt_uint_t items;
|
|
||||||
nxt_bool_t ret;
|
nxt_bool_t ret;
|
||||||
nxt_http_field_t *f;
|
nxt_http_field_t *f;
|
||||||
nxt_http_route_pattern_t *pattern;
|
nxt_http_route_pattern_t *pattern, *end;
|
||||||
|
|
||||||
p = nxt_pointer_to(r, rule->offset);
|
p = nxt_pointer_to(r, rule->offset);
|
||||||
|
|
||||||
@@ -834,8 +819,8 @@ nxt_http_route_rule(nxt_http_request_t *r, nxt_http_route_rule_t *rule)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
items = rule->items;
|
|
||||||
pattern = &rule->pattern[0];
|
pattern = &rule->pattern[0];
|
||||||
|
end = pattern + rule->items;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
ret = nxt_http_route_pattern(r, pattern, start, length);
|
ret = nxt_http_route_pattern(r, pattern, start, length);
|
||||||
@@ -847,9 +832,8 @@ nxt_http_route_rule(nxt_http_request_t *r, nxt_http_route_rule_t *rule)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pattern++;
|
pattern++;
|
||||||
items--;
|
|
||||||
|
|
||||||
} while (items != 0);
|
} while (pattern < end);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user