@@ -427,3 +427,29 @@ def response_handler(sock):
427
427
assert isinstance (excinfo .value , requests .exceptions .RequestException )
428
428
assert isinstance (excinfo .value , JSONDecodeError )
429
429
assert r .text not in str (excinfo .value )
430
+
431
+
432
+ @pytest .mark .parametrize (
433
+ "method,include,exclude" ,
434
+ (
435
+ (requests .get , [], [b"Content-Length:" , b"Transfer-Encoding:" ]),
436
+ (requests .post , [b"Content-Length: 0\r \n " ], [b"Transfer-Encoding:" ]),
437
+ )
438
+ )
439
+ def test_empty_urlencoded_form_body (method , include , exclude ):
440
+ """Ensure we use only the specified Host header for chunked requests."""
441
+ close_server = threading .Event ()
442
+ server = Server (echo_response_handler , wait_to_close_event = close_server )
443
+
444
+ with server as (host , port ):
445
+ url = f"http://{ host } :{ port } /"
446
+ resp = method (url , data = (("a" , None ,),))
447
+ close_server .set () # release server block
448
+
449
+ assert not resp .content .endswith (b"\r \n 0\r \n \r \n " )
450
+
451
+ for header in include :
452
+ assert header in resp .content
453
+
454
+ for header in exclude :
455
+ assert header not in resp .content
0 commit comments