@@ -2142,11 +2142,15 @@ def connection_lost(self, exc):
21422142 async def wait_closed (self ):
21432143 await self .fut
21442144
2145+ def set_socket_opts (self , sock ):
2146+ # On macOS, SO_SNDBUF is reset by connect(). So this method
2147+ # should be called after the socket is connected.
2148+ sock .setsockopt (socket .SOL_SOCKET , socket .SO_SNDBUF , 1024 )
2149+ sock .setsockopt (socket .SOL_SOCKET , socket .SO_RCVBUF , 1024 )
2150+
21452151 def make_socket (self , cleanup = True ):
21462152 sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
21472153 sock .setblocking (False )
2148- sock .setsockopt (socket .SOL_SOCKET , socket .SO_SNDBUF , 1024 )
2149- sock .setsockopt (socket .SOL_SOCKET , socket .SO_RCVBUF , 1024 )
21502154 if cleanup :
21512155 self .addCleanup (sock .close )
21522156 return sock
@@ -2159,7 +2163,9 @@ def prepare_socksendfile(self):
21592163 srv_sock .bind ((support .HOST , port ))
21602164 server = self .run_loop (self .loop .create_server (
21612165 lambda : proto , sock = srv_sock ))
2166+ self .set_socket_opts (srv_sock )
21622167 self .run_loop (self .loop .sock_connect (sock , ('127.0.0.1' , port )))
2168+ self .set_socket_opts (sock )
21632169
21642170 def cleanup ():
21652171 if proto .transport is not None :
@@ -2264,9 +2270,9 @@ def prepare_sendfile(self, *, is_ssl=False, close_after=0):
22642270 else :
22652271 server_hostname = None
22662272 cli_sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
2273+ cli_sock .connect ((support .HOST , port ))
22672274 # reduce send socket buffer size to test on relative small data sets
22682275 cli_sock .setsockopt (socket .SOL_SOCKET , socket .SO_SNDBUF , 1024 )
2269- cli_sock .connect ((support .HOST , port ))
22702276 cli_proto = self .MySendfileProto (loop = self .loop )
22712277 tr , pr = self .run_loop (self .loop .create_connection (
22722278 lambda : cli_proto , sock = cli_sock ,
0 commit comments