Skip to content
This repository was archived by the owner on Dec 18, 2018. It is now read-only.

Commit 57b3685

Browse files
committed
Use StatusCode instead of three digit numbers for status codes
1 parent 6d7ddc4 commit 57b3685

File tree

10 files changed

+230
-182
lines changed

10 files changed

+230
-182
lines changed

src/Microsoft.AspNetCore.Server.Kestrel/BadHttpRequestException.cs

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System.IO;
5+
using Microsoft.AspNetCore.Http;
56
using Microsoft.AspNetCore.Server.Kestrel.Internal.Http;
67

78
namespace Microsoft.AspNetCore.Server.Kestrel
@@ -22,64 +23,64 @@ internal static BadHttpRequestException GetException(RequestRejectionReason reas
2223
switch (reason)
2324
{
2425
case RequestRejectionReason.HeadersCorruptedInvalidHeaderSequence:
25-
ex = new BadHttpRequestException("Headers corrupted, invalid header sequence.", 400);
26+
ex = new BadHttpRequestException("Headers corrupted, invalid header sequence.", StatusCodes.Status400BadRequest);
2627
break;
2728
case RequestRejectionReason.HeaderLineMustNotStartWithWhitespace:
28-
ex = new BadHttpRequestException("Header line must not start with whitespace.", 400);
29+
ex = new BadHttpRequestException("Header line must not start with whitespace.", StatusCodes.Status400BadRequest);
2930
break;
3031
case RequestRejectionReason.NoColonCharacterFoundInHeaderLine:
31-
ex = new BadHttpRequestException("No ':' character found in header line.", 400);
32+
ex = new BadHttpRequestException("No ':' character found in header line.", StatusCodes.Status400BadRequest);
3233
break;
3334
case RequestRejectionReason.WhitespaceIsNotAllowedInHeaderName:
34-
ex = new BadHttpRequestException("Whitespace is not allowed in header name.", 400);
35+
ex = new BadHttpRequestException("Whitespace is not allowed in header name.", StatusCodes.Status400BadRequest);
3536
break;
3637
case RequestRejectionReason.HeaderValueMustNotContainCR:
37-
ex = new BadHttpRequestException("Header value must not contain CR characters.", 400);
38+
ex = new BadHttpRequestException("Header value must not contain CR characters.", StatusCodes.Status400BadRequest);
3839
break;
3940
case RequestRejectionReason.HeaderValueLineFoldingNotSupported:
40-
ex = new BadHttpRequestException("Header value line folding not supported.", 400);
41+
ex = new BadHttpRequestException("Header value line folding not supported.", StatusCodes.Status400BadRequest);
4142
break;
4243
case RequestRejectionReason.MalformedRequestInvalidHeaders:
43-
ex = new BadHttpRequestException("Malformed request: invalid headers.", 400);
44+
ex = new BadHttpRequestException("Malformed request: invalid headers.", StatusCodes.Status400BadRequest);
4445
break;
4546
case RequestRejectionReason.UnexpectedEndOfRequestContent:
46-
ex = new BadHttpRequestException("Unexpected end of request content.", 400);
47+
ex = new BadHttpRequestException("Unexpected end of request content.", StatusCodes.Status400BadRequest);
4748
break;
4849
case RequestRejectionReason.BadChunkSuffix:
49-
ex = new BadHttpRequestException("Bad chunk suffix.", 400);
50+
ex = new BadHttpRequestException("Bad chunk suffix.", StatusCodes.Status400BadRequest);
5051
break;
5152
case RequestRejectionReason.BadChunkSizeData:
52-
ex = new BadHttpRequestException("Bad chunk size data.", 400);
53+
ex = new BadHttpRequestException("Bad chunk size data.", StatusCodes.Status400BadRequest);
5354
break;
5455
case RequestRejectionReason.ChunkedRequestIncomplete:
55-
ex = new BadHttpRequestException("Chunked request incomplete.", 400);
56+
ex = new BadHttpRequestException("Chunked request incomplete.", StatusCodes.Status400BadRequest);
5657
break;
5758
case RequestRejectionReason.PathContainsNullCharacters:
58-
ex = new BadHttpRequestException("The path contains null characters.", 400);
59+
ex = new BadHttpRequestException("The path contains null characters.", StatusCodes.Status400BadRequest);
5960
break;
6061
case RequestRejectionReason.InvalidCharactersInHeaderName:
61-
ex = new BadHttpRequestException("Invalid characters in header name.", 400);
62+
ex = new BadHttpRequestException("Invalid characters in header name.", StatusCodes.Status400BadRequest);
6263
break;
6364
case RequestRejectionReason.NonAsciiOrNullCharactersInInputString:
64-
ex = new BadHttpRequestException("The input string contains non-ASCII or null characters.", 400);
65+
ex = new BadHttpRequestException("The input string contains non-ASCII or null characters.", StatusCodes.Status400BadRequest);
6566
break;
6667
case RequestRejectionReason.RequestLineTooLong:
67-
ex = new BadHttpRequestException("Request line too long.", 414);
68+
ex = new BadHttpRequestException("Request line too long.", StatusCodes.Status414UriTooLong);
6869
break;
6970
case RequestRejectionReason.HeadersExceedMaxTotalSize:
70-
ex = new BadHttpRequestException("Request headers too long.", 431);
71+
ex = new BadHttpRequestException("Request headers too long.", StatusCodes.Status431RequestHeaderFieldsTooLarge);
7172
break;
7273
case RequestRejectionReason.MissingCRInHeaderLine:
73-
ex = new BadHttpRequestException("No CR character found in header line.", 400);
74+
ex = new BadHttpRequestException("No CR character found in header line.", StatusCodes.Status400BadRequest);
7475
break;
7576
case RequestRejectionReason.TooManyHeaders:
76-
ex = new BadHttpRequestException("Request contains too many headers.", 431);
77+
ex = new BadHttpRequestException("Request contains too many headers.", StatusCodes.Status431RequestHeaderFieldsTooLarge);
7778
break;
7879
case RequestRejectionReason.RequestTimeout:
79-
ex = new BadHttpRequestException("Request timed out.", 408);
80+
ex = new BadHttpRequestException("Request timed out.", StatusCodes.Status408RequestTimeout);
8081
break;
8182
default:
82-
ex = new BadHttpRequestException("Bad request.", 400);
83+
ex = new BadHttpRequestException("Bad request.", StatusCodes.Status400BadRequest);
8384
break;
8485
}
8586
return ex;
@@ -91,25 +92,25 @@ internal static BadHttpRequestException GetException(RequestRejectionReason reas
9192
switch (reason)
9293
{
9394
case RequestRejectionReason.InvalidRequestLine:
94-
ex = new BadHttpRequestException($"Invalid request line: {value}", 400);
95+
ex = new BadHttpRequestException($"Invalid request line: {value}", StatusCodes.Status400BadRequest);
9596
break;
9697
case RequestRejectionReason.InvalidContentLength:
97-
ex = new BadHttpRequestException($"Invalid content length: {value}", 400);
98+
ex = new BadHttpRequestException($"Invalid content length: {value}", StatusCodes.Status400BadRequest);
9899
break;
99100
case RequestRejectionReason.UnrecognizedHTTPVersion:
100-
ex = new BadHttpRequestException($"Unrecognized HTTP version: {value}", 505);
101+
ex = new BadHttpRequestException($"Unrecognized HTTP version: {value}", StatusCodes.Status505HttpVersionNotsupported);
101102
break;
102103
case RequestRejectionReason.FinalTransferCodingNotChunked:
103-
ex = new BadHttpRequestException($"Final transfer coding is not \"chunked\": \"{value}\"", 400);
104+
ex = new BadHttpRequestException($"Final transfer coding is not \"chunked\": \"{value}\"", StatusCodes.Status400BadRequest);
104105
break;
105106
case RequestRejectionReason.LengthRequired:
106-
ex = new BadHttpRequestException($"{value} request contains no Content-Length or Transfer-Encoding header", 411);
107+
ex = new BadHttpRequestException($"{value} request contains no Content-Length or Transfer-Encoding header", StatusCodes.Status411LengthRequired);
107108
break;
108109
case RequestRejectionReason.LengthRequiredHttp10:
109-
ex = new BadHttpRequestException($"{value} request contains no Content-Length header", 400);
110+
ex = new BadHttpRequestException($"{value} request contains no Content-Length header", StatusCodes.Status400BadRequest);
110111
break;
111112
default:
112-
ex = new BadHttpRequestException("Bad request.", 400);
113+
ex = new BadHttpRequestException("Bad request.", StatusCodes.Status400BadRequest);
113114
break;
114115
}
115116
return ex;

src/Microsoft.AspNetCore.Server.Kestrel/Internal/Http/Frame.FeatureCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ void IHttpResponseFeature.OnCompleted(Func<object, Task> callback, object state)
323323

324324
async Task<Stream> IHttpUpgradeFeature.UpgradeAsync()
325325
{
326-
StatusCode = 101;
326+
StatusCode = StatusCodes.Status101SwitchingProtocols;
327327
ReasonPhrase = "Switching Protocols";
328328
ResponseHeaders["Connection"] = "Upgrade";
329329
if (!ResponseHeaders.ContainsKey("Upgrade"))

src/Microsoft.AspNetCore.Server.Kestrel/Internal/Http/Frame.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public string HttpVersion
141141
set
142142
{
143143
// GetKnownVersion returns versions which ReferenceEquals interned string
144-
// As most common path, check for this only in fast-path and inline
144+
// As most common path, check for this only in fast-path and inline
145145
if (ReferenceEquals(value, "HTTP/1.1"))
146146
{
147147
_httpVersion = Http.HttpVersion.Http11;
@@ -347,7 +347,7 @@ public void Reset()
347347
Path = null;
348348
QueryString = null;
349349
_httpVersion = Http.HttpVersion.Unset;
350-
StatusCode = 200;
350+
StatusCode = StatusCodes.Status200OK;
351351
ReasonPhrase = null;
352352

353353
RemoteIpAddress = RemoteEndPoint?.Address;
@@ -816,7 +816,7 @@ protected Task ProduceEnd()
816816
else
817817
{
818818
// 500 Internal Server Error
819-
SetErrorResponseHeaders(statusCode: 500);
819+
SetErrorResponseHeaders(statusCode: StatusCodes.Status500InternalServerError);
820820
}
821821
}
822822

@@ -909,7 +909,7 @@ private void CreateResponseHeader(
909909
{
910910
if (!hasTransferEncoding && !responseHeaders.HasContentLength)
911911
{
912-
if (appCompleted && StatusCode != 101)
912+
if (appCompleted && StatusCode != StatusCodes.Status101SwitchingProtocols)
913913
{
914914
// Since the app has completed and we are only now generating
915915
// the headers we can safely set the Content-Length to 0.
@@ -924,7 +924,7 @@ private void CreateResponseHeader(
924924
//
925925
// A server MUST NOT send a response containing Transfer-Encoding unless the corresponding
926926
// request indicates HTTP/1.1 (or later).
927-
if (_httpVersion == Http.HttpVersion.Http11 && StatusCode != 101)
927+
if (_httpVersion == Http.HttpVersion.Http11 && StatusCode != StatusCodes.Status101SwitchingProtocols)
928928
{
929929
_autoChunk = true;
930930
responseHeaders.SetRawTransferEncoding("chunked", _bytesTransferEncodingChunked);
@@ -1410,9 +1410,9 @@ public bool TakeMessageHeaders(SocketInput input, FrameRequestHeaders requestHea
14101410
public bool StatusCanHaveBody(int statusCode)
14111411
{
14121412
// List of status codes taken from Microsoft.Net.Http.Server.Response
1413-
return statusCode != 204 &&
1414-
statusCode != 205 &&
1415-
statusCode != 304;
1413+
return statusCode != StatusCodes.Status204NoContent &&
1414+
statusCode != StatusCodes.Status205ResetContent &&
1415+
statusCode != StatusCodes.Status304NotModified;
14161416
}
14171417

14181418
private void ThrowResponseAlreadyStartedException(string value)
@@ -1434,7 +1434,7 @@ private void RejectNonBodyTransferEncodingResponse(bool appCompleted)
14341434
ReportApplicationError(ex);
14351435

14361436
// 500 Internal Server Error
1437-
SetErrorResponseHeaders(statusCode: 500);
1437+
SetErrorResponseHeaders(statusCode: StatusCodes.Status500InternalServerError);
14381438
}
14391439
}
14401440

0 commit comments

Comments
 (0)