(listener: socket.socket)
| 1236 | |
| 1237 | def test_connect_reconn(self) -> None: |
| 1238 | def proxy_ssl_one(listener: socket.socket) -> None: |
| 1239 | sock = listener.accept()[0] |
| 1240 | |
| 1241 | buf = b"" |
| 1242 | while not buf.endswith(b"\r\n\r\n"): |
| 1243 | buf += sock.recv(65536) |
| 1244 | s = buf.decode("utf-8") |
| 1245 | if not s.startswith("CONNECT "): |
| 1246 | sock.send(b"HTTP/1.1 405 Method not allowed\r\nAllow: CONNECT\r\n\r\n") |
| 1247 | sock.close() |
| 1248 | return |
| 1249 | |
| 1250 | if not s.startswith(f"CONNECT {self.host}:443"): |
| 1251 | sock.send(b"HTTP/1.1 403 Forbidden\r\n\r\n") |
| 1252 | sock.close() |
| 1253 | return |
| 1254 | |
| 1255 | sock.send(b"HTTP/1.1 200 Connection Established\r\n\r\n") |
| 1256 | ssl_sock = original_ssl_wrap_socket( |
| 1257 | sock, |
| 1258 | server_side=True, |
| 1259 | keyfile=DEFAULT_CERTS["keyfile"], |
| 1260 | certfile=DEFAULT_CERTS["certfile"], |
| 1261 | ca_certs=DEFAULT_CA, |
| 1262 | ) |
| 1263 | |
| 1264 | buf = b"" |
| 1265 | while not buf.endswith(b"\r\n\r\n"): |
| 1266 | buf += ssl_sock.recv(65536) |
| 1267 | |
| 1268 | ssl_sock.send( |
| 1269 | b"HTTP/1.1 200 OK\r\n" |
| 1270 | b"Content-Type: text/plain\r\n" |
| 1271 | b"Content-Length: 2\r\n" |
| 1272 | b"Connection: close\r\n" |
| 1273 | b"\r\n" |
| 1274 | b"Hi" |
| 1275 | ) |
| 1276 | ssl_sock.close() |
| 1277 | |
| 1278 | def echo_socket_handler(listener: socket.socket) -> None: |
| 1279 | proxy_ssl_one(listener) |
nothing calls this directly
no test coverage detected