Skip to content
This repository was archived by the owner on Apr 22, 2025. It is now read-only.

Commit bb4a014

Browse files
Victor QuVictor Qu
authored andcommitted
BadHttpRequestException
1 parent a53565c commit bb4a014

File tree

6 files changed

+623
-31
lines changed

6 files changed

+623
-31
lines changed

src/NZ.Orz.Core/Http/Abstractions/HttpProtocol.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace NZ.Orz.Http;
77

88
public abstract class HttpProtocol : HttpConnectionContext, IRequestProcessor
99
{
10-
private bool _keepAlive;
10+
protected volatile bool _keepAlive = true;
1111
protected RequestProcessingStatus _requestProcessingStatus;
1212

1313
protected HttpProtocol(GatewayProtocols protocols, BaseConnectionContext connectionContext) : base(protocols, connectionContext)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
namespace NZ.Orz.Http;
2+
3+
public enum RequestRejectionReason
4+
{
5+
Unknown,
6+
TlsOverHttpError,
7+
UnrecognizedHTTPVersion,
8+
InvalidRequestLine,
9+
InvalidRequestHeader,
10+
InvalidRequestHeadersNoCRLF,
11+
MalformedRequestInvalidHeaders,
12+
InvalidContentLength,
13+
MultipleContentLengths,
14+
UnexpectedEndOfRequestContent,
15+
BadChunkSuffix,
16+
BadChunkSizeData,
17+
ChunkedRequestIncomplete,
18+
InvalidRequestTarget,
19+
InvalidCharactersInHeaderName,
20+
RequestLineTooLong,
21+
HeadersExceedMaxTotalSize,
22+
TooManyHeaders,
23+
RequestBodyTooLarge,
24+
RequestHeadersTimeout,
25+
RequestBodyTimeout,
26+
FinalTransferCodingNotChunked,
27+
LengthRequiredHttp10,
28+
OptionsMethodRequired,
29+
ConnectMethodRequired,
30+
MissingHostHeader,
31+
MultipleHostHeaders,
32+
InvalidHostHeader
33+
}
Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
namespace NZ.Orz.Http;
2+
3+
public static class StatusCodes
4+
{
5+
/// <summary>
6+
/// HTTP status code 100.
7+
/// </summary>
8+
public const int Status100Continue = 100;
9+
10+
/// <summary>
11+
/// HTTP status code 101.
12+
/// </summary>
13+
public const int Status101SwitchingProtocols = 101;
14+
15+
/// <summary>
16+
/// HTTP status code 102.
17+
/// </summary>
18+
public const int Status102Processing = 102;
19+
20+
/// <summary>
21+
/// HTTP status code 200.
22+
/// </summary>
23+
public const int Status200OK = 200;
24+
25+
/// <summary>
26+
/// HTTP status code 201.
27+
/// </summary>
28+
public const int Status201Created = 201;
29+
30+
/// <summary>
31+
/// HTTP status code 202.
32+
/// </summary>
33+
public const int Status202Accepted = 202;
34+
35+
/// <summary>
36+
/// HTTP status code 203.
37+
/// </summary>
38+
public const int Status203NonAuthoritative = 203;
39+
40+
/// <summary>
41+
/// HTTP status code 204.
42+
/// </summary>
43+
public const int Status204NoContent = 204;
44+
45+
/// <summary>
46+
/// HTTP status code 205.
47+
/// </summary>
48+
public const int Status205ResetContent = 205;
49+
50+
/// <summary>
51+
/// HTTP status code 206.
52+
/// </summary>
53+
public const int Status206PartialContent = 206;
54+
55+
/// <summary>
56+
/// HTTP status code 207.
57+
/// </summary>
58+
public const int Status207MultiStatus = 207;
59+
60+
/// <summary>
61+
/// HTTP status code 208.
62+
/// </summary>
63+
public const int Status208AlreadyReported = 208;
64+
65+
/// <summary>
66+
/// HTTP status code 226.
67+
/// </summary>
68+
public const int Status226IMUsed = 226;
69+
70+
/// <summary>
71+
/// HTTP status code 300.
72+
/// </summary>
73+
public const int Status300MultipleChoices = 300;
74+
75+
/// <summary>
76+
/// HTTP status code 301.
77+
/// </summary>
78+
public const int Status301MovedPermanently = 301;
79+
80+
/// <summary>
81+
/// HTTP status code 302.
82+
/// </summary>
83+
public const int Status302Found = 302;
84+
85+
/// <summary>
86+
/// HTTP status code 303.
87+
/// </summary>
88+
public const int Status303SeeOther = 303;
89+
90+
/// <summary>
91+
/// HTTP status code 304.
92+
/// </summary>
93+
public const int Status304NotModified = 304;
94+
95+
/// <summary>
96+
/// HTTP status code 305.
97+
/// </summary>
98+
public const int Status305UseProxy = 305;
99+
100+
/// <summary>
101+
/// HTTP status code 306.
102+
/// </summary>
103+
public const int Status306SwitchProxy = 306; // RFC 2616, removed
104+
105+
/// <summary>
106+
/// HTTP status code 307.
107+
/// </summary>
108+
public const int Status307TemporaryRedirect = 307;
109+
110+
/// <summary>
111+
/// HTTP status code 308.
112+
/// </summary>
113+
public const int Status308PermanentRedirect = 308;
114+
115+
/// <summary>
116+
/// HTTP status code 400.
117+
/// </summary>
118+
public const int Status400BadRequest = 400;
119+
120+
/// <summary>
121+
/// HTTP status code 401.
122+
/// </summary>
123+
public const int Status401Unauthorized = 401;
124+
125+
/// <summary>
126+
/// HTTP status code 402.
127+
/// </summary>
128+
public const int Status402PaymentRequired = 402;
129+
130+
/// <summary>
131+
/// HTTP status code 403.
132+
/// </summary>
133+
public const int Status403Forbidden = 403;
134+
135+
/// <summary>
136+
/// HTTP status code 404.
137+
/// </summary>
138+
public const int Status404NotFound = 404;
139+
140+
/// <summary>
141+
/// HTTP status code 405.
142+
/// </summary>
143+
public const int Status405MethodNotAllowed = 405;
144+
145+
/// <summary>
146+
/// HTTP status code 406.
147+
/// </summary>
148+
public const int Status406NotAcceptable = 406;
149+
150+
/// <summary>
151+
/// HTTP status code 407.
152+
/// </summary>
153+
public const int Status407ProxyAuthenticationRequired = 407;
154+
155+
/// <summary>
156+
/// HTTP status code 408.
157+
/// </summary>
158+
public const int Status408RequestTimeout = 408;
159+
160+
/// <summary>
161+
/// HTTP status code 409.
162+
/// </summary>
163+
public const int Status409Conflict = 409;
164+
165+
/// <summary>
166+
/// HTTP status code 410.
167+
/// </summary>
168+
public const int Status410Gone = 410;
169+
170+
/// <summary>
171+
/// HTTP status code 411.
172+
/// </summary>
173+
public const int Status411LengthRequired = 411;
174+
175+
/// <summary>
176+
/// HTTP status code 412.
177+
/// </summary>
178+
public const int Status412PreconditionFailed = 412;
179+
180+
/// <summary>
181+
/// HTTP status code 413.
182+
/// </summary>
183+
public const int Status413RequestEntityTooLarge = 413; // RFC 2616, renamed
184+
185+
/// <summary>
186+
/// HTTP status code 413.
187+
/// </summary>
188+
public const int Status413PayloadTooLarge = 413; // RFC 7231
189+
190+
/// <summary>
191+
/// HTTP status code 414.
192+
/// </summary>
193+
public const int Status414RequestUriTooLong = 414; // RFC 2616, renamed
194+
195+
/// <summary>
196+
/// HTTP status code 414.
197+
/// </summary>
198+
public const int Status414UriTooLong = 414; // RFC 7231
199+
200+
/// <summary>
201+
/// HTTP status code 415.
202+
/// </summary>
203+
public const int Status415UnsupportedMediaType = 415;
204+
205+
/// <summary>
206+
/// HTTP status code 416.
207+
/// </summary>
208+
public const int Status416RequestedRangeNotSatisfiable = 416; // RFC 2616, renamed
209+
210+
/// <summary>
211+
/// HTTP status code 416.
212+
/// </summary>
213+
public const int Status416RangeNotSatisfiable = 416; // RFC 7233
214+
215+
/// <summary>
216+
/// HTTP status code 417.
217+
/// </summary>
218+
public const int Status417ExpectationFailed = 417;
219+
220+
/// <summary>
221+
/// HTTP status code 418.
222+
/// </summary>
223+
public const int Status418ImATeapot = 418;
224+
225+
/// <summary>
226+
/// HTTP status code 419.
227+
/// </summary>
228+
public const int Status419AuthenticationTimeout = 419; // Not defined in any RFC
229+
230+
/// <summary>
231+
/// HTTP status code 421.
232+
/// </summary>
233+
public const int Status421MisdirectedRequest = 421;
234+
235+
/// <summary>
236+
/// HTTP status code 422.
237+
/// </summary>
238+
public const int Status422UnprocessableEntity = 422;
239+
240+
/// <summary>
241+
/// HTTP status code 423.
242+
/// </summary>
243+
public const int Status423Locked = 423;
244+
245+
/// <summary>
246+
/// HTTP status code 424.
247+
/// </summary>
248+
public const int Status424FailedDependency = 424;
249+
250+
/// <summary>
251+
/// HTTP status code 426.
252+
/// </summary>
253+
public const int Status426UpgradeRequired = 426;
254+
255+
/// <summary>
256+
/// HTTP status code 428.
257+
/// </summary>
258+
public const int Status428PreconditionRequired = 428;
259+
260+
/// <summary>
261+
/// HTTP status code 429.
262+
/// </summary>
263+
public const int Status429TooManyRequests = 429;
264+
265+
/// <summary>
266+
/// HTTP status code 431.
267+
/// </summary>
268+
public const int Status431RequestHeaderFieldsTooLarge = 431;
269+
270+
/// <summary>
271+
/// HTTP status code 451.
272+
/// </summary>
273+
public const int Status451UnavailableForLegalReasons = 451;
274+
275+
/// <summary>
276+
/// HTTP status code 499. This is an unofficial status code originally defined by Nginx and is commonly used
277+
/// in logs when the client has disconnected.
278+
/// </summary>
279+
public const int Status499ClientClosedRequest = 499;
280+
281+
/// <summary>
282+
/// HTTP status code 500.
283+
/// </summary>
284+
public const int Status500InternalServerError = 500;
285+
286+
/// <summary>
287+
/// HTTP status code 501.
288+
/// </summary>
289+
public const int Status501NotImplemented = 501;
290+
291+
/// <summary>
292+
/// HTTP status code 502.
293+
/// </summary>
294+
public const int Status502BadGateway = 502;
295+
296+
/// <summary>
297+
/// HTTP status code 503.
298+
/// </summary>
299+
public const int Status503ServiceUnavailable = 503;
300+
301+
/// <summary>
302+
/// HTTP status code 504.
303+
/// </summary>
304+
public const int Status504GatewayTimeout = 504;
305+
306+
/// <summary>
307+
/// HTTP status code 505.
308+
/// </summary>
309+
public const int Status505HttpVersionNotsupported = 505;
310+
311+
/// <summary>
312+
/// HTTP status code 506.
313+
/// </summary>
314+
public const int Status506VariantAlsoNegotiates = 506;
315+
316+
/// <summary>
317+
/// HTTP status code 507.
318+
/// </summary>
319+
public const int Status507InsufficientStorage = 507;
320+
321+
/// <summary>
322+
/// HTTP status code 508.
323+
/// </summary>
324+
public const int Status508LoopDetected = 508;
325+
326+
/// <summary>
327+
/// HTTP status code 510.
328+
/// </summary>
329+
public const int Status510NotExtended = 510;
330+
331+
/// <summary>
332+
/// HTTP status code 511.
333+
/// </summary>
334+
public const int Status511NetworkAuthenticationRequired = 511;
335+
}

0 commit comments

Comments
 (0)