diff src/http/v3/ngx_http_v3_request.c @ 8650:9dce2978e4fd quic

HTTP/3: eliminated r->method_start. The field was introduced to ease parsing HTTP/3 requests. The change reduces diff to the default branch.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 25 Nov 2020 17:57:43 +0000
parents 279ad36f2f4b
children 1efee5e4194c
line wrap: on
line diff
--- a/src/http/v3/ngx_http_v3_request.c
+++ b/src/http/v3/ngx_http_v3_request.c
@@ -129,11 +129,9 @@ ngx_http_v3_parse_request(ngx_http_reque
             continue;
         }
 
-        ngx_str_set(&r->http_protocol, "HTTP/3.0");
-
-        len = (r->method_end - r->method_start) + 1
+        len = r->method_name.len + 1
             + (r->uri_end - r->uri_start) + 1
-            + sizeof("HTTP/3") - 1;
+            + sizeof("HTTP/3.0") - 1;
 
         p = ngx_pnalloc(c->pool, len);
         if (p == NULL) {
@@ -142,11 +140,13 @@ ngx_http_v3_parse_request(ngx_http_reque
 
         r->request_start = p;
 
-        p = ngx_cpymem(p, r->method_start, r->method_end - r->method_start);
+        p = ngx_cpymem(p, r->method_name.data, r->method_name.len);
+        r->method_end = p - 1;
         *p++ = ' ';
         p = ngx_cpymem(p, r->uri_start, r->uri_end - r->uri_start);
         *p++ = ' ';
-        p = ngx_cpymem(p, "HTTP/3", sizeof("HTTP/3") - 1);
+        r->http_protocol.data = p;
+        p = ngx_cpymem(p, "HTTP/3.0", sizeof("HTTP/3.0") - 1);
 
         r->request_end = p;
         r->state = 0;
@@ -309,8 +309,7 @@ ngx_http_v3_process_pseudo_header(ngx_ht
     c = r->connection;
 
     if (name->len == 7 && ngx_strncmp(name->data, ":method", 7) == 0) {
-        r->method_start = value->data;
-        r->method_end = value->data + value->len;
+        r->method_name = *value;
 
         for (i = 0; i < sizeof(ngx_http_v3_methods)
                         / sizeof(ngx_http_v3_methods[0]); i++)