fix restart problem

This commit is contained in:
2013-10-25 15:15:02 -04:00
parent f8568dba7e
commit d176dab654
+12 -7
View File
@@ -2,7 +2,7 @@
# $Id: hbd,v 1.38 2013/07/14 02:25:05 andreas Exp $
# Wait for heartbeat messages and act on them (or their absence)
#
VER = 1.38
VER = 1.51
import time, os, string, sys, socket, atexit, select, SocketServer, getopt, signal, cPickle, smtplib, traceback, urllib
@@ -500,10 +500,11 @@ def exitcurses():
curses.endwin()
class HtmlServer(SocketServer.TCPServer):
allow_reuse_address = True
#
#
class HtmlHandler(SocketServer.BaseRequestHandler):
allow_reuse_address = True
def buildhead(self, title="Heartbeat", refresh=None):
@@ -536,6 +537,7 @@ class HtmlHandler(SocketServer.BaseRequestHandler):
def handle(self):
global sig, running
headers=[]
headers.append("Date: %s" % time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)))
headers.append("Server: hbd")
@@ -586,6 +588,13 @@ class HtmlHandler(SocketServer.BaseRequestHandler):
res=self.buildhead()
res.append("Done")
elif upar[0] == "/r": # restart
res=self.buildhead()
res.append("restart request")
sig=signal.SIGHUP
running=False
log("restart request")
else:
code = 404
cause = "Not Found"
@@ -612,13 +621,9 @@ class HtmlHandler(SocketServer.BaseRequestHandler):
def saveandrestart():
if DEBUG: sys.stderr.write("mark 1\n")
sock.close()
# if DEBUG: sys.stderr.write("mark 2\n")
# serv.shutdown() #N.B. dont shutdown() as we don't use serv_forever
if DEBUG: sys.stderr.write("mark 3\n")
serv.server_close()
if DEBUG: sys.stderr.write("mark 4\n")
log("restarting")
os.execv(sys.argv[0], [sys.argv[0]]+cmdargs)
@@ -791,7 +796,7 @@ sock.bind(("", hb_port))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
ilist.append(sock)
serv = SocketServer.TCPServer((hbd_host, hbd_port), HtmlHandler)
serv = HtmlServer((hbd_host, hbd_port), HtmlHandler)
ilist.append(serv.fileno())
if not forground: