@@ -1440,15 +1440,48 @@ def test_large_content_length(self):
14401440 serv = socket .create_server ((HOST , 0 ))
14411441 self .addCleanup (serv .close )
14421442
1443+ def run_server ():
1444+ [conn , address ] = serv .accept ()
1445+ with conn :
1446+ while conn .recv (1024 ):
1447+ conn .sendall (
1448+ b"HTTP/1.1 200 Ok\r \n "
1449+ b"Content-Length: %d\r \n "
1450+ b"\r \n " % size )
1451+ conn .sendall (b'A' * (size // 3 ))
1452+ conn .sendall (b'B' * (size - size // 3 ))
1453+
1454+ thread = threading .Thread (target = run_server )
1455+ thread .start ()
1456+ self .addCleanup (thread .join , 1.0 )
1457+
1458+ conn = client .HTTPConnection (* serv .getsockname ())
1459+ try :
1460+ for w in range (15 , 27 ):
1461+ size = 1 << w
1462+ conn .request ("GET" , "/" )
1463+ with conn .getresponse () as response :
1464+ self .assertEqual (len (response .read ()), size )
1465+ finally :
1466+ conn .close ()
1467+ thread .join (1.0 )
1468+
1469+ def test_large_content_length_truncated (self ):
1470+ serv = socket .create_server ((HOST , 0 ))
1471+ self .addCleanup (serv .close )
1472+
14431473 def run_server ():
14441474 while True :
14451475 [conn , address ] = serv .accept ()
14461476 with conn :
14471477 conn .recv (1024 )
14481478 if not size :
14491479 break
1450- body = b"HTTP/1.1 200 Ok\r \n Content-Length: %d\r \n \r \n Text" % size
1451- conn .sendall (body )
1480+ conn .sendall (
1481+ b"HTTP/1.1 200 Ok\r \n "
1482+ b"Content-Length: %d\r \n "
1483+ b"\r \n "
1484+ b"Text" % size )
14521485
14531486 thread = threading .Thread (target = run_server )
14541487 thread .start ()
@@ -1467,7 +1500,7 @@ def run_server():
14671500 size = 0
14681501 conn .request ("GET" , "/" )
14691502 conn .close ()
1470- thread .join ()
1503+ thread .join (1.0 )
14711504
14721505 def test_putrequest_override_domain_validation (self ):
14731506 """
0 commit comments