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,
`