diff --git a/gunicorn/arbiter.py b/gunicorn/arbiter.py index c7861594..02f0e2b8 100644 --- a/gunicorn/arbiter.py +++ b/gunicorn/arbiter.py @@ -49,11 +49,11 @@ class Arbiter(object): SIG_QUEUE = [] SIGNALS = map( lambda x: getattr(signal, "SIG%s" % x), - "CHLD QUIT INT TERM TTIN TTOU".split() + "CHLD HUP QUIT INT TERM TTIN TTOU".split() ) SIG_NAMES = dict( (getattr(signal, name), name[3:].lower()) for name in dir(signal) - if name[:3] == "SIG" + if name[:3] == "SIG" and name[3] != "_" ) def __init__(self, address, num_workers, modname): @@ -160,6 +160,13 @@ class Arbiter(object): def handle_chld(self): self.wakeup() + def handle_hup(self): + log.info("Master hang up.") + # for now we quit on HUP + self.handle_quit() + #apply(os.execlp, (sys.argv[0],) + tuple(sys.argv)) + + def handle_quit(self): self.stop(False) raise StopIteration diff --git a/gunicorn/worker.py b/gunicorn/worker.py index 1eef1e22..944d72c7 100644 --- a/gunicorn/worker.py +++ b/gunicorn/worker.py @@ -42,7 +42,7 @@ class Worker(object): SIGNALS = map( lambda x: getattr(signal, "SIG%s" % x), - "QUIT INT TERM TTIN TTOU".split() + "HUP QUIT INT TERM TTIN TTOU".split() ) def __init__(self, workerid, ppid, socket, app):