Improve connection status determination logic

This commit is contained in:
codeking 2025-11-23 15:24:53 +01:00
parent b4f4ef986c
commit 7a3f2e7596

View file

@ -15,11 +15,12 @@ from pathlib import Path
from subprocess import CalledProcessError
from typing import Union, Optional, Any
import os
import random
import re
import requests
import shutil
import socket
import subprocess
import sys
import tempfile
import time
@ -430,14 +431,11 @@ class ConnectionController:
return task_output
@staticmethod
def __test_connection(port_number: Optional[int] = None, timeout: float = 10.0):
def __test_connection(port_number: Optional[int] = None, timeout: float = 4.0):
proxies = None
request_urls = [Constants.PING_URL]
timeout = float(timeout)
if port_number is not None:
proxies = ConnectionController.get_proxies(port_number)
command_name = os.path.basename(sys.executable)
proxies = None
if os.environ.get('PING_URL') is None:
@ -447,14 +445,28 @@ class ConnectionController:
'https://hc3.hydraveil.net'
])
random.shuffle(request_urls)
if port_number is not None:
proxies = ConnectionController.get_proxies(port_number)
for request_url in request_urls:
command = [
sys.executable, '-u', '-c', 'import requests, sys\n'
'try:\n'
f' response = requests.get(\'{request_url}\', timeout={timeout}, proxies={proxies})\n'
' response.raise_for_status(); print((response.text or \'\')[:15])\n'
'except requests.exceptions.RequestException:\n'
' sys.exit(1)'
]
try:
requests.get(request_url, timeout=timeout, proxies=proxies)
_response = subprocess.check_output(command, text=True, timeout=timeout)
return None
except requests.exceptions.RequestException:
except (subprocess.CalledProcessError, subprocess.TimeoutExpired):
pass
raise ConnectionError('The connection could not be established.')