X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=blobdiff_plain;f=hippotatd;h=40f4c69d32ebcb0d0ab659bd76e0da44828e9e49;hp=e2bed4216091b5dec535c299ccf896468969ef64;hb=969a1fca85d025005604f4da892da678488c8835;hpb=d96f4d70037bcd739dd9674f4fb2f3d38abce956 diff --git a/hippotatd b/hippotatd index e2bed42..40f4c69 100755 --- a/hippotatd +++ b/hippotatd @@ -104,7 +104,8 @@ class Client(): def _req_cancel(self, request): self._log(DBG.HTTP_CTRL, 'cancel', idof=request) - request.finish() + try: request.finish() + except Exception: pass def _req_error(self, err, request): self._log(DBG.HTTP_CTRL, 'error %s' % err, idof=request) @@ -125,7 +126,7 @@ class Client(): nf = request.notifyFinish() nf.addErrback(self._req_error, request) nf.addCallback(self._req_fin, request, cl) - self._rq.append(request) + self._rq.append((request,nf)) self._check_outbound() def _req_write(self, req, d): @@ -135,9 +136,9 @@ class Client(): def _check_outbound(self): log_debug(DBG.HTTP_CTRL, 'CHKO') while True: - try: request = self._rq[0] + try: (request,nf) = self._rq[0] except IndexError: request = None - if request and request.finished: + if request and nf.called: self._log(DBG.HTTP_CTRL, 'CHKO req finished, discard', idof=request) self._rq.popleft() continue @@ -165,7 +166,7 @@ class Client(): # round again, looking for more to do while len(self._rq) > self.cc.target_requests_outstanding: - request = self._rq.popleft() + (request, nf) = self._rq.popleft() self._log(DBG.HTTP, 'CHKO above target, returning empty', idof=request) request.finish() @@ -296,10 +297,10 @@ def process_cfg(_opts, putative_servers, putative_clients): global c c = ConfigResults() - try: c.server = cfg.get('SERVER','server') + try: c.server = cfg1get('SERVER','server') except NoOptionError: c.server = 'SERVER' - cfg_process_common(c, c.server) + cfg_process_general(c, c.server) cfg_process_saddrs(c, c.server) cfg_process_vnetwork(c, c.server) cfg_process_vaddr(c, c.server) @@ -313,24 +314,24 @@ def process_cfg(_opts, putative_servers, putative_clients): Client(ci, cc) try: - c.vrelay = cfg.get(c.server, 'vrelay') + c.vrelay = cfg1get(c.server, 'vrelay') except NoOptionError: for search in c.vnetwork.hosts(): if search == c.vaddr: continue c.vrelay = search break - try: c.ifname = cfg.get(c.server, 'ifname_server', raw=True) + try: c.ifname = cfg1get(c.server, 'ifname_server', raw=True) except NoOptionError: pass cfg_process_ipif(c, - [c.server, 'DEFAULT'], + [c.server, 'COMMON'], (('local','vaddr'), ('peer', 'vrelay'), ('rnets','vnetwork'))) if opts.printconfig is not None: - try: val = cfg.get(c.server, opts.printconfig) + try: val = cfg1get(c.server, opts.printconfig) except NoOptionError: pass else: print(val) sys.exit(0) @@ -375,6 +376,10 @@ def daemonise(): elif level == LogLevel.warn : sl = syslog.LOG_WARNING else : sl = syslog.LOG_INFO syslog.syslog(sl,m) + failure = event.get('log_failure') + if failure is not None: + for l in failure.getTraceback().split('\n'): + syslog.syslog(sl,l) glp = twisted.logger.globalLogPublisher glp.addObserver(emit) log_debug(DBG.INIT, 'starting to log to syslog')