optimize: shuffle-drain pool (no repeat chains), executor for fetchers, DEVNULL pipes, verify=False validator, IP fallbacks, +/- hop topbar, timestamps, countdown, rotation counter, blacklist bad proxies

Made-with: Cursor
This commit is contained in:
Dr Jones
2026-04-14 17:21:10 -07:00
parent 4bb626498f
commit 45798464e4
16 changed files with 8208 additions and 7935 deletions

View File

@@ -68,12 +68,14 @@ def build_gost_cmd(gost: Path, listen_http: str, forwards: list[str]) -> list[st
def popen_no_window(args: list[str]) -> subprocess.Popen:
# Use DEVNULL for both pipes — GOST writes logs to stderr, leaving pipes
# unread would fill the OS buffer and deadlock the child process.
cr = getattr(subprocess, "CREATE_NO_WINDOW", 0)
return subprocess.Popen(
args,
stdin=subprocess.DEVNULL,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
creationflags=cr,
)