@@ -476,7 +476,9 @@ export class HTTP {
476476 n ( 'header_value_discard_ws' )
477477 . match ( [ ' ' , '\t' ] , n ( 'header_value_discard_ws' ) )
478478 . match ( '\r' , n ( 'header_value_discard_ws_almost_done' ) )
479- . match ( '\n' , n ( 'header_value_discard_lws' ) )
479+ . match ( '\n' , this . testLenientFlags ( LENIENT_FLAGS . HEADERS , {
480+ 1 : n ( 'header_value_discard_lws' ) ,
481+ } , p . error ( ERROR . INVALID_HEADER_TOKEN , 'Invalid header value char' ) ) )
480482 . otherwise ( span . headerValue . start ( n ( 'header_value_start' ) ) ) ;
481483
482484 if ( this . mode === 'strict' ) {
@@ -638,7 +640,7 @@ export class HTTP {
638640
639641 const checkLenient = this . testLenientFlags ( LENIENT_FLAGS . HEADERS , {
640642 1 : n ( 'header_value_lenient' ) ,
641- } , n ( 'header_value_lenient_failed' ) ) ;
643+ } , span . headerValue . end ( p . error ( ERROR . INVALID_HEADER_TOKEN , 'Invalid header value char' ) ) ) ;
642644
643645 n ( 'header_value_otherwise' )
644646 . peek ( '\r' , span . headerValue . end ( ) . skipTo ( n ( 'header_value_almost_done' ) ) )
@@ -661,7 +663,11 @@ export class HTTP {
661663 'Missing expected LF after header value' ) ) ;
662664
663665 n ( 'header_value_lws' )
664- . peek ( [ ' ' , '\t' ] , span . headerValue . start ( n ( 'header_value_start' ) ) )
666+ . peek ( [ ' ' , '\t' ] ,
667+ this . load ( 'header_state' , {
668+ [ HEADER_STATE . TRANSFER_ENCODING_CHUNKED ] :
669+ this . resetHeaderState ( span . headerValue . start ( n ( 'header_value_start' ) ) ) ,
670+ } , span . headerValue . start ( n ( 'header_value_start' ) ) ) )
665671 . otherwise ( this . setHeaderFlags ( onHeaderValueComplete ) ) ;
666672
667673 const checkTrailing = this . testFlags ( FLAGS . TRAILING , {
0 commit comments