break;
}
+ r->host_end = p;
+
switch (ch) {
case ':':
- r->host_end = p;
state = sw_port;
break;
case '/':
- r->host_end = p;
r->uri_start = p;
state = sw_after_slash_in_uri;
break;
+ case ' ':
+ /*
+ * use single "/" from request line to preserve pointers,
+ * if request line will be copied to large client buffer
+ */
+ r->uri_start = r->schema_end + 1;
+ r->uri_end = r->schema_end + 2;
+ state = sw_http_09;
+ break;
default:
- r->host_end = p;
return NGX_HTTP_PARSE_INVALID_REQUEST;
}
break;
r->uri_start = p;
state = sw_after_slash_in_uri;
break;
+ case ' ':
+ r->port_end = p;
+ /*
+ * use single "/" from request line to preserve pointers,
+ * if request line will be copied to large client buffer
+ */
+ r->uri_start = r->schema_end + 1;
+ r->uri_end = r->schema_end + 2;
+ state = sw_http_09;
+ break;
default:
return NGX_HTTP_PARSE_INVALID_REQUEST;
}