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 @@ -529,12 +529,13 @@ fn Client(comptime S: type) type {
529529
530530 errdefer self .server .queueClose (self .socket );
531531
532+ if (request .len > MAX_HTTP_REQUEST_SIZE ) {
533+ self .writeHTTPErrorResponse (413 , "Request too large" );
534+ return error .RequestTooLarge ;
535+ }
536+
532537 // we're only expecting [body-less] GET requests.
533538 if (std .mem .endsWith (u8 , request , "\r \n \r \n " ) == false ) {
534- if (request .len > MAX_HTTP_REQUEST_SIZE ) {
535- self .writeHTTPErrorResponse (413 , "Request too large" );
536- return error .RequestTooLarge ;
537- }
538539 // we need more data, put any more data here
539540 self .read_len = request .len ;
540541 return ;
@@ -1055,6 +1056,16 @@ test "server: buildJSONVersionResponse" {
10551056 "{\" webSocketDebuggerUrl\" : \" ws://127.0.0.1:9001/\" }" , res );
10561057}
10571058
1059+ test "Client: http invalid request" {
1060+ try assertHTTPError (
1061+ error .RequestTooLarge ,
1062+ 413 ,
1063+ "Request too large" ,
1064+ "GET /over/9000 HTTP/1.1\r \n " ++ "Header: " ++ ("a" ** 2050 ) ++ "\r \n \r \n " ,
1065+ );
1066+
1067+ }
1068+
10581069test "Client: http invalid handshake" {
10591070 try assertHTTPError (
10601071 error .InvalidRequest ,
@@ -1327,7 +1338,7 @@ test "Client: fuzz" {
13271338 }
13281339 };
13291340
1330- for (0.. 1 ) | _ | {
1341+ for (0.. 100 ) | _ | {
13311342 var ms = MockServer {};
13321343 defer ms .deinit ();
13331344
You can’t perform that action at this time.
0 commit comments