@@ -180,7 +180,7 @@ class Parser : public AsyncWrap, public StreamListener {
180
180
181
181
182
182
int on_url (const char * at, size_t length) {
183
- int rv = TrackHeader (length, kBeforeHeaders );
183
+ int rv = TrackURI (length);
184
184
if (rv != 0 ) {
185
185
return rv;
186
186
}
@@ -251,6 +251,7 @@ class Parser : public AsyncWrap, public StreamListener {
251
251
252
252
int on_headers_complete () {
253
253
#ifdef NODE_EXPERIMENTAL_HTTP
254
+ uri_nread_ = 0 ;
254
255
header_nread_ = 0 ;
255
256
#endif /* NODE_EXPERIMENTAL_HTTP */
256
257
@@ -813,6 +814,7 @@ class Parser : public AsyncWrap, public StreamListener {
813
814
void Init (parser_type_t type) {
814
815
#ifdef NODE_EXPERIMENTAL_HTTP
815
816
llhttp_init (&parser_, type, &settings);
817
+ uri_nread_ = 0 ;
816
818
header_nread_ = 0 ;
817
819
#else /* !NODE_EXPERIMENTAL_HTTP */
818
820
http_parser_init (&parser_, type);
@@ -825,21 +827,22 @@ class Parser : public AsyncWrap, public StreamListener {
825
827
got_exception_ = false ;
826
828
}
827
829
828
- enum HeaderTrackState {
829
- kBeforeHeaders ,
830
- kAfterRequestLine
831
- };
832
-
833
- int TrackHeader (size_t len, enum HeaderTrackState pos = kAfterRequestLine ) {
830
+ int TrackURI (size_t len) {
834
831
#ifdef NODE_EXPERIMENTAL_HTTP
835
- header_nread_ += len;
836
- if (pos == kBeforeHeaders &&
837
- header_nread_ >= per_process::cli_options->max_http_uri_size ) {
832
+ uri_nread_ += len;
833
+ if (uri_nread_ >= per_process::cli_options->max_http_uri_size ) {
838
834
llhttp_set_error_reason (&parser_,
839
835
" HPE_URI_OVERFLOW:URI overflow" );
840
836
return HPE_USER;
841
- } else if (pos == kAfterRequestLine &&
842
- header_nread_ >= per_process::cli_options->max_http_header_size ) {
837
+ }
838
+ #endif /* NODE_EXPERIMENTAL_HTTP */
839
+ return 0 ;
840
+ }
841
+
842
+ int TrackHeader (size_t len) {
843
+ #ifdef NODE_EXPERIMENTAL_HTTP
844
+ header_nread_ += len;
845
+ if (header_nread_ >= per_process::cli_options->max_http_header_size ) {
843
846
llhttp_set_error_reason (&parser_, " HPE_HEADER_OVERFLOW:Header overflow" );
844
847
return HPE_USER;
845
848
}
@@ -879,6 +882,7 @@ class Parser : public AsyncWrap, public StreamListener {
879
882
#ifdef NODE_EXPERIMENTAL_HTTP
880
883
unsigned int execute_depth_ = 0 ;
881
884
bool pending_pause_ = false ;
885
+ uint64_t uri_nread_ = 0 ;
882
886
uint64_t header_nread_ = 0 ;
883
887
#endif /* NODE_EXPERIMENTAL_HTTP */
884
888
0 commit comments