X-Git-Url: https://git.distorted.org.uk/~mdw/hippotat/blobdiff_plain/bb450e0a353c3f4c13a9c198dd25018713996472..8c771381ce4cfa26901412997c266457b05921d4:/hippotatd diff --git a/hippotatd b/hippotatd index a235929..cb86c2b 100755 --- a/hippotatd +++ b/hippotatd @@ -25,7 +25,7 @@ # the file AGPLv3+CAFv2. If not, email Ian Jackson # . - +#@ import sys; sys.path.append('@PYBUILD_INSTALL_DIR@') from hippotatlib import * import os @@ -38,7 +38,6 @@ import twisted.internet from twisted.web.server import NOT_DONE_YET import twisted.web.static -import twisted.python.syslog import hippotatlib.ownsource from hippotatlib.ownsource import SourceShipmentPreparer @@ -347,7 +346,9 @@ def catch_termination(): raise RuntimeError('did not die due to signal %s !' % name) for sig in (signal.SIGINT, signal.SIGTERM): - signal.signal(sig, partial(signal_handler, sig.name)) + try: signame = sig.name + except AttributeError: signame = "signal %d" % sig + signal.signal(sig, partial(signal_handler, signame)) def daemonise(): global syslogfacility @@ -360,6 +361,7 @@ def daemonise(): facility=facilnum, logoption=syslog.LOG_PID) def emit(event): + if logevent_is_boringtwisted(event): return m = twisted.logger.formatEvent(event) #print(repr(event), m, file=org_stderr) level = event.get('log_level') @@ -378,6 +380,8 @@ def daemonise(): daemonic_reactor = (twisted.internet.interfaces.IReactorDaemonize .providedBy(reactor)) if daemonic_reactor: reactor.beforeDaemonize() + if opts.pidfile is not None: + pidfile_h = open(opts.pidfile, 'w') rfd, wfd = os.pipe() childpid = os.fork() if childpid: @@ -395,17 +399,16 @@ def daemonise(): grandchildpid = os.fork() if grandchildpid: # we are the intermediate child + if opts.pidfile is not None: + print(grandchildpid, file=pidfile_h) + pidfile_h.close() os._exit(0) - mypid = os.getpid() if opts.pidfile is not None: - pfh = open(opts.pidfile, 'w') - print(mypid, file=pfh) - pfh.close() - + pidfile_h.close() + logger = subprocess.Popen(['logger','-d', - '-t','hippotat(stderr)', - '--id=%d' % mypid, + '-t','hippotat[%d](stderr)' % os.getpid(), '-p',opts.syslogfacility + '.err'], stdin=subprocess.PIPE, stdout=subprocess.DEVNULL,