chiark / gitweb /
wip new config
[hippotat.git] / server
diff --git a/server b/server
index 3781d5607ab95d99e2bb4fb7be5e213420742d8b..bdd893c8e33feaba3e044f4f083b0090db94af07 100755 (executable)
--- a/server
+++ b/server
@@ -90,10 +90,17 @@ class Client():
     self._pq.append(packet)
     self._check_outbound()
 
+  def _req_fin(self, dummy, request, cl):
+    self._log(DBG.HTTP_CTRL, '_req_fin ' + repr(dummy), idof=request)
+    try: cl.cancel()
+    except twisted.internet.error.AlreadyCalled: pass
+
   def new_request(self, request):
     request.setHeader('Content-Type','application/octet-stream')
-    reactor.callLater(self.http_timeout, self._req_cancel, request)
-    request.notifyFinish().addErrback(self._req_error, request)
+    cl = reactor.callLater(self.http_timeout, self._req_cancel, request)
+    nf = request.notifyFinish()
+    nf.addErrback(self._req_error, request)
+    nf.addCallback(self._req_fin, request, cl)
     self._rq.append(request)
     self._check_outbound()
 
@@ -234,8 +241,7 @@ def process_cfg():
                     ('peer', 'relay'),
                     ('rnets','network')))
 
-common_startup()
-process_cfg()
+common_startup(process_cfg)
 start_ipif(c.ipif_command, (lambda p,s,d: route(p,"[ipif]",s,d)))
 start_http()
 common_run()