nxt_http_parse.c (481:4bfbd8ce0e8a) nxt_http_parse.c (482:48e1b9d61fbf)
1
2/*
3 * Copyright (C) NGINX, Inc.
4 * Copyright (C) Valentin V. Bartenev
5 */
6
7#include <nxt_main.h>
8

--- 369 unchanged lines hidden (view full) ---

378 }
379
380 rp->space_in_target = 1;
381 goto rest_of_target;
382 }
383
384 /* " HTTP/1.1\r\n" or " HTTP/1.1\n" */
385
1
2/*
3 * Copyright (C) NGINX, Inc.
4 * Copyright (C) Valentin V. Bartenev
5 */
6
7#include <nxt_main.h>
8

--- 369 unchanged lines hidden (view full) ---

378 }
379
380 rp->space_in_target = 1;
381 goto rest_of_target;
382 }
383
384 /* " HTTP/1.1\r\n" or " HTTP/1.1\n" */
385
386 if (nxt_slow_path(p[9] != '\r' && p[9] != '\n')) {
387
388 if (p[1] == ' ') {
389 /* surplus space after tartet */
390 p++;
391 goto space_after_target;
392 }
393
394 rp->space_in_target = 1;
395 goto rest_of_target;
396 }
397
386 nxt_memcpy(ver.str, &p[1], 8);
387
398 nxt_memcpy(ver.str, &p[1], 8);
399
388 if (nxt_fast_path((ver.ui64 == http11.ui64
389 || ver.ui64 == http10.ui64
390 || (nxt_memcmp(ver.s.prefix, "HTTP/", 5) == 0
391 && ver.s.major >= '0' && ver.s.major <= '9'
392 && ver.s.point == '.'
393 && ver.s.minor >= '0' && ver.s.minor <= '9'))
394 && (p[9] == '\r' || p[9] == '\n')))
400 if (nxt_fast_path(ver.ui64 == http11.ui64
401 || ver.ui64 == http10.ui64
402 || (nxt_memcmp(ver.str, "HTTP/1.", 7) == 0
403 && ver.s.minor >= '0' && ver.s.minor <= '9')))
395 {
396 rp->version.ui64 = ver.ui64;
397
398 if (nxt_fast_path(p[9] == '\r')) {
399 p += 10;
400
401 if (nxt_slow_path(p == end)) {
402 return NXT_AGAIN;

--- 35 unchanged lines hidden (view full) ---

438 rp->exten.length = rp->path.start + rp->path.length -
439 rp->exten_start;
440 rp->exten.start = rp->exten_start;
441 }
442
443 return nxt_http_parse_field_name(rp, pos, end);
444 }
445
404 {
405 rp->version.ui64 = ver.ui64;
406
407 if (nxt_fast_path(p[9] == '\r')) {
408 p += 10;
409
410 if (nxt_slow_path(p == end)) {
411 return NXT_AGAIN;

--- 35 unchanged lines hidden (view full) ---

447 rp->exten.length = rp->path.start + rp->path.length -
448 rp->exten_start;
449 rp->exten.start = rp->exten_start;
450 }
451
452 return nxt_http_parse_field_name(rp, pos, end);
453 }
454
446 if (p[1] == ' ') {
447 /* surplus space after tartet */
448 p++;
449 goto space_after_target;
455 if (nxt_memcmp(ver.s.prefix, "HTTP/", 5) == 0
456 && ver.s.major >= '0' && ver.s.major <= '9'
457 && ver.s.point == '.'
458 && ver.s.minor >= '0' && ver.s.minor <= '9')
459 {
460 return NXT_HTTP_PARSE_UNSUPPORTED_VERSION;
450 }
451
461 }
462
452 rp->space_in_target = 1;
453 goto rest_of_target;
463 return NXT_HTTP_PARSE_INVALID;
454}
455
456
457static nxt_int_t
458nxt_http_parse_unusual_target(nxt_http_request_parse_t *rp, u_char **pos,
459 u_char *end)
460{
461 u_char *p, ch;

--- 788 unchanged lines hidden ---
464}
465
466
467static nxt_int_t
468nxt_http_parse_unusual_target(nxt_http_request_parse_t *rp, u_char **pos,
469 u_char *end)
470{
471 u_char *p, ch;

--- 788 unchanged lines hidden ---