case sw_start:
r->parse_start = p;
r->request_start = p;
- r->method_start = p;
if (ch == CR || ch == LF) {
break;
case sw_method:
if (ch == ' ') {
- r->method_end = p;
+ r->method_end = p - 1;
m = r->request_start;
switch (p - m) {
r->request_end = p;
}
- if (r->http_protocol.data) {
- r->http_protocol.len = r->request_end - r->http_protocol.data;
- }
-
r->http_version = r->http_major * 1000 + r->http_minor;
r->state = sw_start;
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
"http request line: \"%V\"", &r->request_line);
- r->method_name.len = r->method_end - r->method_start;
- r->method_name.data = r->method_start;
+ r->method_name.len = r->method_end - r->request_start + 1;
+ r->method_name.data = r->request_line.data;
+
+ if (r->http_protocol.data) {
+ r->http_protocol.len = r->request_end - r->http_protocol.data;
+ }
if (ngx_http_process_request_uri(r) != NGX_OK) {
break;
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) {
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;
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++)