@@ -134,10 +134,14 @@ protected override void ApplicationAbort()
134
134
/// </summary>
135
135
public void StopProcessingNextRequest ( ConnectionEndReason reason )
136
136
{
137
- KestrelMetrics . AddConnectionEndReason ( MetricsContext , reason ) ;
137
+ DisableKeepAlive ( reason ) ;
138
+ Input . CancelPendingRead ( ) ;
139
+ }
138
140
141
+ internal override void DisableKeepAlive ( ConnectionEndReason reason )
142
+ {
143
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , reason ) ;
139
144
_keepAlive = false ;
140
- Input . CancelPendingRead ( ) ;
141
145
}
142
146
143
147
public void SendTimeoutResponse ( )
@@ -225,6 +229,7 @@ bool TrimAndTakeStartLine(ref SequenceReader<byte> reader)
225
229
if ( ! _parser . ParseRequestLine ( new Http1ParsingHandler ( this ) , ref trimmedReader ) )
226
230
{
227
231
// We read the maximum allowed but didn't complete the start line.
232
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestLine ) ;
228
233
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . RequestLineTooLong ) ;
229
234
}
230
235
@@ -268,6 +273,7 @@ bool TrimAndTakeMessageHeaders(ref SequenceReader<byte> reader, bool trailers)
268
273
if ( ! _parser . ParseHeaders ( new Http1ParsingHandler ( this , trailers ) , ref trimmedReader ) )
269
274
{
270
275
// We read the maximum allowed but didn't complete the headers.
276
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestHeaders ) ;
271
277
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . HeadersExceedMaxTotalSize ) ;
272
278
}
273
279
@@ -602,10 +608,12 @@ internal void EnsureHostHeaderExists()
602
608
return ;
603
609
}
604
610
611
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestHeaders ) ;
605
612
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . MissingHostHeader ) ;
606
613
}
607
614
else if ( hostCount > 1 )
608
615
{
616
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestHeaders ) ;
609
617
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . MultipleHostHeaders ) ;
610
618
}
611
619
else if ( _requestTargetForm != HttpRequestTarget . OriginForm )
@@ -615,6 +623,7 @@ internal void EnsureHostHeaderExists()
615
623
}
616
624
else if ( ! HttpUtilities . IsHostHeaderValid ( hostText ) )
617
625
{
626
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestHeaders ) ;
618
627
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . InvalidHostHeader , hostText ) ;
619
628
}
620
629
}
@@ -625,6 +634,7 @@ private void ValidateNonOriginHostHeader(string hostText)
625
634
{
626
635
if ( hostText != RawTarget )
627
636
{
637
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestHeaders ) ;
628
638
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . InvalidHostHeader , hostText ) ;
629
639
}
630
640
}
@@ -649,6 +659,7 @@ private void ValidateNonOriginHostHeader(string hostText)
649
659
}
650
660
else
651
661
{
662
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestHeaders ) ;
652
663
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . InvalidHostHeader , hostText ) ;
653
664
}
654
665
}
@@ -657,6 +668,7 @@ private void ValidateNonOriginHostHeader(string hostText)
657
668
658
669
if ( ! HttpUtilities . IsHostHeaderValid ( hostText ) )
659
670
{
671
+ KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestHeaders ) ;
660
672
KestrelBadHttpRequestException . Throw ( RequestRejectionReason . InvalidHostHeader , hostText ) ;
661
673
}
662
674
}
@@ -792,6 +804,7 @@ private void OnBadRequest(ReadOnlySequence<byte> requestData, BadHttpRequestExce
792
804
break ;
793
805
case RequestRejectionReason . InvalidRequestLine :
794
806
case RequestRejectionReason . RequestLineTooLong :
807
+ case RequestRejectionReason . InvalidRequestTarget :
795
808
KestrelMetrics . AddConnectionEndReason ( MetricsContext , ConnectionEndReason . InvalidRequestLine ) ;
796
809
break ;
797
810
case RequestRejectionReason . InvalidRequestHeadersNoCRLF :
@@ -801,7 +814,6 @@ private void OnBadRequest(ReadOnlySequence<byte> requestData, BadHttpRequestExce
801
814
case RequestRejectionReason . TooManyHeaders :
802
815
case RequestRejectionReason . MultipleContentLengths :
803
816
case RequestRejectionReason . MalformedRequestInvalidHeaders :
804
- case RequestRejectionReason . InvalidRequestTarget :
805
817
case RequestRejectionReason . InvalidCharactersInHeaderName :
806
818
case RequestRejectionReason . LengthRequiredHttp10 :
807
819
case RequestRejectionReason . OptionsMethodRequired :
0 commit comments