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

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

`

2142

2142

`async def wait_closed(self):

`

2143

2143

`await self.fut

`

2144

2144

``

``

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

+

2145

2151

`def make_socket(self, cleanup=True):

`

2146

2152

`sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

`

2147

2153

`sock.setblocking(False)

`

2148

``

`-

sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)

`

2149

``

`-

sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)

`

2150

2154

`if cleanup:

`

2151

2155

`self.addCleanup(sock.close)

`

2152

2156

`return sock

`

`@@ -2159,7 +2163,9 @@ def prepare_socksendfile(self):

`

2159

2163

`srv_sock.bind((support.HOST, port))

`

2160

2164

`server = self.run_loop(self.loop.create_server(

`

2161

2165

`lambda: proto, sock=srv_sock))

`

``

2166

`+

self.set_socket_opts(srv_sock)

`

2162

2167

`self.run_loop(self.loop.sock_connect(sock, ('127.0.0.1', port)))

`

``

2168

`+

self.set_socket_opts(sock)

`

2163

2169

``

2164

2170

`def cleanup():

`

2165

2171

`if proto.transport is not None:

`

`@@ -2264,9 +2270,9 @@ def prepare_sendfile(self, *, is_ssl=False, close_after=0):

`

2264

2270

`else:

`

2265

2271

`server_hostname = None

`

2266

2272

`cli_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

`

``

2273

`+

cli_sock.connect((support.HOST, port))

`

2267

2274

`# reduce send socket buffer size to test on relative small data sets

`

2268

2275

`cli_sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)

`

2269

``

`-

cli_sock.connect((support.HOST, port))

`

2270

2276

`cli_proto = self.MySendfileProto(loop=self.loop)

`

2271

2277

`tr, pr = self.run_loop(self.loop.create_connection(

`

2272

2278

`lambda: cli_proto, sock=cli_sock,

`