bpo-33353: test_asyncio set SO_SNDBUF after connect (GH-7086) · python/cpython@b97de3d

@@ -2142,11 +2142,15 @@ def connection_lost(self, exc):

21422142

async def wait_closed(self):

21432143

await self.fut

214421442145+

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)

2163216921642170

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,