diff options
Diffstat (limited to 'ewww.py')
-rw-r--r-- | ewww.py | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -8,6 +8,7 @@ import random import re import shutil import signal +import socket import subprocess import time import urllib.parse @@ -82,7 +83,7 @@ def start_server(ctx, filename=None): logging.debug(f"Starting ewww with config file {filename}") config = get_file(filename).decode("UTF-8") config = yaml.safe_load(config) - config["port"] = random.randint(2000, 30000) + port = config["port"] = random.randint(2000, 30000) logging.debug(f"Picked randomly port for ewww: {config['port']}") ctx["config"] = config config = yaml.safe_dump(config) @@ -90,6 +91,24 @@ def start_server(ctx, filename=None): start_daemon(ctx, "ewww", [_binary("ewww"), filename]) + if not port_open("localhost", port, 5.0): + stderr = open(ctx["daemon"]["ewww"]["stderr"]).read() + logging.debug(f"Stderr from daemon: {stderr!r}") + + +# Wait for a port to be open +def port_open(host, port, timeout): + logging.debug(f"Waiting for port localhost:{port} to be available") + started = time.time() + while time.time() < started + timeout: + try: + socket.create_connection((host, port), timeout=timeout) + return True + except socket.error: + pass + logging.error(f"Port localhost:{port} is not open") + return False + # Stop previously started server. def stop_server(ctx): |