Reload should listen on the same interface as the main server

This commit is contained in:
Kovid Goyal 2016-03-19 21:57:45 +05:30
parent f2519c96ea
commit 159e62ad37
2 changed files with 5 additions and 5 deletions

View File

@ -347,12 +347,12 @@ class ReloadServer(Thread):
daemon = True
def __init__(self):
def __init__(self, listen_on):
Thread.__init__(self, name='ReloadServer')
self.reload_handler = ReloadHandler()
self.loop = ServerLoop(
create_http_handler(websocket_handler=self.reload_handler),
opts=Options(shutdown_timeout=0.1, listen_on='127.0.0.1', port=0))
opts=Options(shutdown_timeout=0.1, listen_on=(listen_on or '127.0.0.1'), port=0))
self.loop.LISTENING_MSG = None
self.notify_reload = self.reload_handler.notify_reload
self.ping = self.reload_handler.ping
@ -376,7 +376,7 @@ class ReloadServer(Thread):
self.join(self.loop.opts.shutdown_timeout)
# }}}
def auto_reload(log, dirs=frozenset(), cmd=None, add_default_dirs=True):
def auto_reload(log, dirs=frozenset(), cmd=None, add_default_dirs=True, listen_on=None):
if Watcher is None:
raise NoAutoReload('Auto-reload is not supported on this operating system')
fpath = os.path.abspath(__file__)
@ -388,7 +388,7 @@ def auto_reload(log, dirs=frozenset(), cmd=None, add_default_dirs=True):
dirs = find_dirs_to_watch(fpath, dirs, add_default_dirs)
log('Auto-restarting server on changes press Ctrl-C to quit')
log('Watching %d directory trees for changes' % len(dirs))
with ReloadServer() as server, Worker(cmd, log, server) as worker:
with ReloadServer(listen_on) as server, Worker(cmd, log, server) as worker:
w = Watcher(dirs, worker, log)
worker.wakeup = w.wakeup
try:

View File

@ -231,7 +231,7 @@ def main(args=sys.argv):
from calibre.srv.auto_reload import auto_reload, NoAutoReload
try:
from calibre.utils.logging import default_log
return auto_reload(default_log)
return auto_reload(default_log, listen_on=opts.listen_on)
except NoAutoReload as e:
raise SystemExit(e.message)
opts.auto_reload_port=int(os.environ.get('CALIBRE_AUTORELOAD_PORT', 0))