@@ -425,6 +425,31 @@ impl Harness {
425425 }
426426}
427427
428+ /// Cap request sizes that are too large compared to client or server max_read_len
429+ ///
430+ /// This helper function caps request sizes to 100 times the minimum max_read_len
431+ /// of the client or server if they exceed this limit. This prevents timeouts that
432+ /// can occur when processing excessively large requests.
433+ fn cap_large_requests (
434+ client : & Client ,
435+ server : & Server ,
436+ mut requests : Vec < Request > ,
437+ ) -> Vec < Request > {
438+ let min_max_read_len = client. max_read_len . min ( server. max_read_len ) ;
439+
440+ // Set maximum request sizes to be 100 times the minimum of client or server max_read_len
441+ let max_request_size = min_max_read_len * 100 ;
442+
443+ // Cap request sizes to max_request_size if they exceed it
444+ for request in & mut requests {
445+ if request. request_size > max_request_size {
446+ request. request_size = max_request_size;
447+ }
448+ }
449+
450+ requests
451+ }
452+
428453struct Runtime {
429454 rt : tokio:: runtime:: Runtime ,
430455 client : testing:: Client ,
@@ -461,10 +486,13 @@ impl Runtime {
461486 }
462487
463488 fn run_with ( & self , client : Client , server : Server , requests : Vec < Request > ) {
489+ // Cap request sizes that are too large compared to client or server max_read_len
490+ let capped_requests = cap_large_requests ( & client, & server, requests) ;
491+
464492 let harness = Harness {
465493 client,
466494 server,
467- requests,
495+ requests : capped_requests ,
468496 protocol : self . protocol ,
469497 } ;
470498 let client = self . client . clone ( ) ;
0 commit comments