HTTP parser: removed unused "exten_start" and "args_start" fields.
This commit is contained in:
@@ -163,7 +163,7 @@ static nxt_int_t
|
|||||||
nxt_http_parse_request_line(nxt_http_request_parse_t *rp, u_char **pos,
|
nxt_http_parse_request_line(nxt_http_request_parse_t *rp, u_char **pos,
|
||||||
u_char *end)
|
u_char *end)
|
||||||
{
|
{
|
||||||
u_char *p, ch, *after_slash;
|
u_char *p, ch, *after_slash, *exten, *args;
|
||||||
nxt_int_t rc;
|
nxt_int_t rc;
|
||||||
nxt_http_ver_t ver;
|
nxt_http_ver_t ver;
|
||||||
nxt_http_target_traps_e trap;
|
nxt_http_target_traps_e trap;
|
||||||
@@ -255,6 +255,8 @@ nxt_http_parse_request_line(nxt_http_request_parse_t *rp, u_char **pos,
|
|||||||
rp->target_start = p;
|
rp->target_start = p;
|
||||||
|
|
||||||
after_slash = p + 1;
|
after_slash = p + 1;
|
||||||
|
exten = NULL;
|
||||||
|
args = NULL;
|
||||||
|
|
||||||
for ( ;; ) {
|
for ( ;; ) {
|
||||||
p++;
|
p++;
|
||||||
@@ -269,8 +271,7 @@ nxt_http_parse_request_line(nxt_http_request_parse_t *rp, u_char **pos,
|
|||||||
}
|
}
|
||||||
|
|
||||||
after_slash = p + 1;
|
after_slash = p + 1;
|
||||||
|
exten = NULL;
|
||||||
rp->exten_start = NULL;
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case NXT_HTTP_TARGET_DOT:
|
case NXT_HTTP_TARGET_DOT:
|
||||||
@@ -279,11 +280,11 @@ nxt_http_parse_request_line(nxt_http_request_parse_t *rp, u_char **pos,
|
|||||||
goto rest_of_target;
|
goto rest_of_target;
|
||||||
}
|
}
|
||||||
|
|
||||||
rp->exten_start = p + 1;
|
exten = p + 1;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case NXT_HTTP_TARGET_ARGS_MARK:
|
case NXT_HTTP_TARGET_ARGS_MARK:
|
||||||
rp->args_start = p + 1;
|
args = p + 1;
|
||||||
goto rest_of_target;
|
goto rest_of_target;
|
||||||
|
|
||||||
case NXT_HTTP_TARGET_SPACE:
|
case NXT_HTTP_TARGET_SPACE:
|
||||||
@@ -437,20 +438,19 @@ space_after_target:
|
|||||||
|
|
||||||
rp->path.start = rp->target_start;
|
rp->path.start = rp->target_start;
|
||||||
|
|
||||||
if (rp->args_start != NULL) {
|
if (args != NULL) {
|
||||||
rp->path.length = rp->args_start - rp->target_start - 1;
|
rp->path.length = args - rp->target_start - 1;
|
||||||
|
|
||||||
rp->args.start = rp->args_start;
|
rp->args.length = rp->target_end - args;
|
||||||
rp->args.length = rp->target_end - rp->args_start;
|
rp->args.start = args;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
rp->path.length = rp->target_end - rp->target_start;
|
rp->path.length = rp->target_end - rp->target_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rp->exten_start) {
|
if (exten != NULL) {
|
||||||
rp->exten.length = rp->path.start + rp->path.length
|
rp->exten.length = (rp->path.start + rp->path.length) - exten;
|
||||||
- rp->exten_start;
|
rp->exten.start = exten;
|
||||||
rp->exten.start = rp->exten_start;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nxt_http_parse_field_name(rp, pos, end);
|
return nxt_http_parse_field_name(rp, pos, end);
|
||||||
@@ -835,7 +835,8 @@ static const uint8_t nxt_http_normal[32] nxt_aligned(32) = {
|
|||||||
static nxt_int_t
|
static nxt_int_t
|
||||||
nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
||||||
{
|
{
|
||||||
u_char *p, *u, c, ch, high;
|
u_char *p, *u, c, ch, high, *exten, *args;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
sw_normal = 0,
|
sw_normal = 0,
|
||||||
sw_slash,
|
sw_slash,
|
||||||
@@ -852,7 +853,6 @@ nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
|||||||
p = rp->target_start;
|
p = rp->target_start;
|
||||||
|
|
||||||
u = nxt_mp_alloc(rp->mem_pool, rp->target_end - p + 1);
|
u = nxt_mp_alloc(rp->mem_pool, rp->target_end - p + 1);
|
||||||
|
|
||||||
if (nxt_slow_path(u == NULL)) {
|
if (nxt_slow_path(u == NULL)) {
|
||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
@@ -861,8 +861,8 @@ nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
|||||||
rp->path.start = u;
|
rp->path.start = u;
|
||||||
|
|
||||||
high = '\0';
|
high = '\0';
|
||||||
rp->exten_start = NULL;
|
exten = NULL;
|
||||||
rp->args_start = NULL;
|
args = NULL;
|
||||||
|
|
||||||
while (p < rp->target_end) {
|
while (p < rp->target_end) {
|
||||||
|
|
||||||
@@ -881,7 +881,7 @@ nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
|||||||
|
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '/':
|
case '/':
|
||||||
rp->exten_start = NULL;
|
exten = NULL;
|
||||||
state = sw_slash;
|
state = sw_slash;
|
||||||
*u++ = ch;
|
*u++ = ch;
|
||||||
continue;
|
continue;
|
||||||
@@ -890,12 +890,12 @@ nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
|||||||
state = sw_quoted;
|
state = sw_quoted;
|
||||||
continue;
|
continue;
|
||||||
case '?':
|
case '?':
|
||||||
rp->args_start = p;
|
args = p;
|
||||||
goto args;
|
goto args;
|
||||||
case '#':
|
case '#':
|
||||||
goto done;
|
goto done;
|
||||||
case '.':
|
case '.':
|
||||||
rp->exten_start = u + 1;
|
exten = u + 1;
|
||||||
*u++ = ch;
|
*u++ = ch;
|
||||||
continue;
|
continue;
|
||||||
case '+':
|
case '+':
|
||||||
@@ -928,7 +928,7 @@ nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
|||||||
state = sw_quoted;
|
state = sw_quoted;
|
||||||
continue;
|
continue;
|
||||||
case '?':
|
case '?':
|
||||||
rp->args_start = p;
|
args = p;
|
||||||
goto args;
|
goto args;
|
||||||
case '#':
|
case '#':
|
||||||
goto done;
|
goto done;
|
||||||
@@ -965,7 +965,7 @@ nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
|||||||
state = sw_quoted;
|
state = sw_quoted;
|
||||||
continue;
|
continue;
|
||||||
case '?':
|
case '?':
|
||||||
rp->args_start = p;
|
args = p;
|
||||||
goto args;
|
goto args;
|
||||||
case '#':
|
case '#':
|
||||||
goto done;
|
goto done;
|
||||||
@@ -1009,7 +1009,7 @@ nxt_http_parse_complex_target(nxt_http_request_parse_t *rp)
|
|||||||
state = sw_quoted;
|
state = sw_quoted;
|
||||||
continue;
|
continue;
|
||||||
case '?':
|
case '?':
|
||||||
rp->args_start = p;
|
args = p;
|
||||||
goto args;
|
goto args;
|
||||||
case '#':
|
case '#':
|
||||||
goto done;
|
goto done;
|
||||||
@@ -1114,18 +1114,18 @@ args:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rp->args_start != NULL) {
|
if (args != NULL) {
|
||||||
rp->args.length = p - rp->args_start;
|
rp->args.length = p - args;
|
||||||
rp->args.start = rp->args_start;
|
rp->args.start = args;
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
rp->path.length = u - rp->path.start;
|
rp->path.length = u - rp->path.start;
|
||||||
|
|
||||||
if (rp->exten_start) {
|
if (exten) {
|
||||||
rp->exten.length = u - rp->exten_start;
|
rp->exten.length = u - exten;
|
||||||
rp->exten.start = rp->exten_start;
|
rp->exten.start = exten;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NXT_OK;
|
return NXT_OK;
|
||||||
|
|||||||
@@ -43,8 +43,6 @@ struct nxt_http_request_parse_s {
|
|||||||
|
|
||||||
u_char *target_start;
|
u_char *target_start;
|
||||||
u_char *target_end;
|
u_char *target_end;
|
||||||
u_char *exten_start;
|
|
||||||
u_char *args_start;
|
|
||||||
|
|
||||||
nxt_str_t path;
|
nxt_str_t path;
|
||||||
nxt_str_t args;
|
nxt_str_t args;
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ static nxt_http_parse_test_case_t nxt_http_test_cases[] = {
|
|||||||
{ .request_line = {
|
{ .request_line = {
|
||||||
nxt_string("XXX-METHOD"),
|
nxt_string("XXX-METHOD"),
|
||||||
nxt_string("/d.ir/fi+le.ext?key=val"),
|
nxt_string("/d.ir/fi+le.ext?key=val"),
|
||||||
nxt_string("ext?key=val"),
|
nxt_string("ext"),
|
||||||
nxt_string("key=val"),
|
nxt_string("key=val"),
|
||||||
"HTTP/1.2",
|
"HTTP/1.2",
|
||||||
0, 0, 0, 1
|
0, 0, 0, 1
|
||||||
@@ -163,7 +163,7 @@ static nxt_http_parse_test_case_t nxt_http_test_cases[] = {
|
|||||||
nxt_string("GET"),
|
nxt_string("GET"),
|
||||||
nxt_string("/?#"),
|
nxt_string("/?#"),
|
||||||
nxt_null_string,
|
nxt_null_string,
|
||||||
nxt_string("#"),
|
nxt_string(""),
|
||||||
"HTTP/1.0",
|
"HTTP/1.0",
|
||||||
1, 0, 0, 0
|
1, 0, 0, 0
|
||||||
}}
|
}}
|
||||||
@@ -729,31 +729,23 @@ nxt_http_parse_test_request_line(nxt_http_request_parse_t *rp,
|
|||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
str.length = (rp->exten_start != NULL) ? rp->target_end - rp->exten_start
|
if (rp->exten.start != test->exten.start
|
||||||
: 0;
|
&& !nxt_strstr_eq(&rp->exten, &test->exten))
|
||||||
str.start = rp->exten_start;
|
|
||||||
|
|
||||||
if (str.start != test->exten.start
|
|
||||||
&& !nxt_strstr_eq(&str, &test->exten))
|
|
||||||
{
|
{
|
||||||
nxt_log_alert(log, "http parse test case failed:\n"
|
nxt_log_alert(log, "http parse test case failed:\n"
|
||||||
" - request:\n\"%V\"\n"
|
" - request:\n\"%V\"\n"
|
||||||
" - exten: \"%V\" (expected: \"%V\")",
|
" - exten: \"%V\" (expected: \"%V\")",
|
||||||
request, &str, &test->exten);
|
request, &rp->exten, &test->exten);
|
||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
str.length = (rp->args_start != NULL) ? rp->target_end - rp->args_start
|
if (rp->args.start != test->args.start
|
||||||
: 0;
|
&& !nxt_strstr_eq(&rp->args, &test->args))
|
||||||
str.start = rp->args_start;
|
|
||||||
|
|
||||||
if (str.start != test->args.start
|
|
||||||
&& !nxt_strstr_eq(&str, &test->args))
|
|
||||||
{
|
{
|
||||||
nxt_log_alert(log, "http parse test case failed:\n"
|
nxt_log_alert(log, "http parse test case failed:\n"
|
||||||
" - request:\n\"%V\"\n"
|
" - request:\n\"%V\"\n"
|
||||||
" - args: \"%V\" (expected: \"%V\")",
|
" - args: \"%V\" (expected: \"%V\")",
|
||||||
request, &str, &test->args);
|
request, &rp->args, &test->args);
|
||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user