From 4439838ee7d115e9a3f7eda212fb053649b44319 Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Wed, 31 May 2023 15:38:52 +1000 Subject: Raise a Waitress exception into the UI with a modal dialog and reset the share if it occurs --- cli/onionshare_cli/web/web.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'cli') diff --git a/cli/onionshare_cli/web/web.py b/cli/onionshare_cli/web/web.py index 7da05509..a6ccbeb0 100644 --- a/cli/onionshare_cli/web/web.py +++ b/cli/onionshare_cli/web/web.py @@ -57,6 +57,12 @@ except Exception: pass +class WaitressException(Exception): + """ + There was a problem starting the waitress web server. + """ + + class Web: """ The Web object is the OnionShare web server, powered by flask @@ -349,14 +355,17 @@ class Web: if self.mode == "chat": self.socketio.run(self.app, host=host, port=port) else: - self.waitress = create_server( - self.app, - host=host, - port=port, - clear_untrusted_proxy_headers=True, - ident="OnionShare", - ) - self.waitress.run() + try: + self.waitress = create_server( + self.app, + host=host, + port=port, + clear_untrusted_proxy_headers=True, + ident="OnionShare", + ) + self.waitress.run() + except Exception as e: + raise WaitressException(f"Error starting Waitress: {e}") def stop(self, port): """ @@ -389,7 +398,6 @@ class Web: def waitress_custom_shutdown(self): """Shutdown the Waitress server immediately""" # Code borrowed from https://github.com/Pylons/webtest/blob/4b8a3ebf984185ff4fefb31b4d0cf82682e1fcf7/webtest/http.py#L93-L104 - self.waitress.was_shutdown = True while self.waitress._map: triggers = list(self.waitress._map.values()) for trigger in triggers: -- cgit v1.2.3-54-g00ecf