diff --git a/services/socks5_to_http_proxy.py b/services/socks5_to_http_proxy.py index 5a4b20c..c6da074 100644 --- a/services/socks5_to_http_proxy.py +++ b/services/socks5_to_http_proxy.py @@ -198,22 +198,29 @@ class Socks5ToHttpProxy: # Подключаемся (в отдельном потоке чтобы не блокировать) loop = asyncio.get_running_loop() - await loop.run_in_executor(None, remote_socket.connect, (host, port)) - + try: + await loop.run_in_executor(None, remote_socket.connect, (host, port)) + except Exception as e: + logger.warning(f"SOCKS5 connect FAILED {host}:{port} via {self.socks5_host}: {e}") + writer.write(b'HTTP/1.1 502 Bad Gateway\r\n\r\n') + await writer.drain() + return + + logger.info(f"SOCKS5 connected {host}:{port} OK") # Отвечаем клиенту writer.write(b'HTTP/1.1 200 Connection Established\r\n\r\n') await writer.drain() - + # Пересылка данных с таймаутом await asyncio.wait_for( self._relay(reader, writer, remote_socket), timeout=60 ) - + except asyncio.TimeoutError: - logger.debug("CONNECT timeout") + logger.warning(f"CONNECT relay timeout {host}:{port}") except Exception as e: - logger.debug(f"CONNECT error: {e}") + logger.warning(f"CONNECT error {host}:{port}: {e}") finally: if remote_socket: try: