File tree Expand file tree Collapse file tree 1 file changed +16
-5
lines changed Expand file tree Collapse file tree 1 file changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -530,12 +530,13 @@ fn Client(comptime S: type) type {
530530
531531 errdefer self .server .queueClose (self .socket );
532532
533+ if (request .len > MAX_HTTP_REQUEST_SIZE ) {
534+ self .writeHTTPErrorResponse (413 , "Request too large" );
535+ return error .RequestTooLarge ;
536+ }
537+
533538 // we're only expecting [body-less] GET requests.
534539 if (std .mem .endsWith (u8 , request , "\r \n \r \n " ) == false ) {
535- if (request .len > MAX_HTTP_REQUEST_SIZE ) {
536- self .writeHTTPErrorResponse (413 , "Request too large" );
537- return error .RequestTooLarge ;
538- }
539540 // we need more data, put any more data here
540541 self .read_len = request .len ;
541542 return ;
@@ -1065,6 +1066,16 @@ test "server: buildJSONVersionResponse" {
10651066 "{\" webSocketDebuggerUrl\" : \" ws://127.0.0.1:9001/\" }" , res );
10661067}
10671068
1069+ test "Client: http invalid request" {
1070+ try assertHTTPError (
1071+ error .RequestTooLarge ,
1072+ 413 ,
1073+ "Request too large" ,
1074+ "GET /over/9000 HTTP/1.1\r \n " ++ "Header: " ++ ("a" ** 2050 ) ++ "\r \n \r \n " ,
1075+ );
1076+
1077+ }
1078+
10681079test "Client: http invalid handshake" {
10691080 try assertHTTPError (
10701081 error .InvalidRequest ,
@@ -1336,7 +1347,7 @@ test "Client: fuzz" {
13361347 }
13371348 };
13381349
1339- for (0.. 1 ) | _ | {
1350+ for (0.. 100 ) | _ | {
13401351 var ms = MockServer {};
13411352 defer ms .deinit ();
13421353
You can’t perform that action at this time.
0 commit comments