Shut down UiServer if FileServer startup failed

This commit is contained in:
shortcutme 2019-09-19 16:33:45 +02:00
parent 93e6ec4933
commit d7db631b95
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE
2 changed files with 21 additions and 1 deletions

View file

@ -46,6 +46,7 @@ class ConnectionServer(object):
self.stream_server = None self.stream_server = None
self.stream_server_proxy = None self.stream_server_proxy = None
self.running = False self.running = False
self.stopping = False
self.stat_recv = defaultdict(lambda: defaultdict(int)) self.stat_recv = defaultdict(lambda: defaultdict(int))
self.stat_sent = defaultdict(lambda: defaultdict(int)) self.stat_sent = defaultdict(lambda: defaultdict(int))
@ -76,6 +77,8 @@ class ConnectionServer(object):
self.handleRequest = request_handler self.handleRequest = request_handler
def start(self, check_connections=True): def start(self, check_connections=True):
if self.stopping:
return False
self.running = True self.running = True
if check_connections: if check_connections:
self.thread_checker = gevent.spawn(self.checkConnections) self.thread_checker = gevent.spawn(self.checkConnections)
@ -99,16 +102,19 @@ class ConnectionServer(object):
def listen(self): def listen(self):
if not self.running: if not self.running:
return False return None
if self.stream_server_proxy: if self.stream_server_proxy:
gevent.spawn(self.listenProxy) gevent.spawn(self.listenProxy)
try: try:
self.stream_server.serve_forever() self.stream_server.serve_forever()
except Exception as err: except Exception as err:
self.log.info("StreamServer listen error: %s" % err) self.log.info("StreamServer listen error: %s" % err)
return False
def stop(self): def stop(self):
self.log.debug("Stopping") self.log.debug("Stopping")
self.stopping = True
self.running = False self.running = False
if self.stream_server: if self.stream_server:
self.stream_server.stop() self.stream_server.stop()

View file

@ -2,6 +2,7 @@ import logging
import time import time
import random import random
import socket import socket
import sys
import gevent import gevent
import gevent.pool import gevent.pool
@ -346,7 +347,20 @@ class FileServer(ConnectionServer):
# Bind and start serving sites # Bind and start serving sites
def start(self, check_sites=True): def start(self, check_sites=True):
if self.stopping:
return False
ConnectionServer.start(self) ConnectionServer.start(self)
try:
self.stream_server.start()
except Exception as err:
self.log.error("Error listening on: %s:%s: %s" % (self.ip, self.port, err))
if "ui_server" in dir(sys.modules["main"]):
self.log.debug("Stopping UI Server.")
sys.modules["main"].ui_server.stop()
return False
self.sites = self.site_manager.list() self.sites = self.site_manager.list()
if config.debug: if config.debug:
# Auto reload FileRequest on change # Auto reload FileRequest on change