reorg config - will break
[hippotat] / server
diff --git a/server b/server
index 3781d56..144866f 100755 (executable)
--- a/server
+++ b/server
@@ -52,7 +52,9 @@ class Client():
     if ip not in c.network:
       raise ValueError('client %s not in network' % ip)
 
-    for k in ('max_batch_down','max_queue_time','http_timeout',
+    for k in ('max_batch_down',
+              'max_queue_time',
+              'http_timeout',
               'target_requests_outstanding'):
       req = cfg.getint(cs, k)
       limit = cfg.getint('limits',k)
@@ -90,10 +92,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()
 
@@ -213,29 +222,37 @@ def start_http():
 
 #---------- config and setup ----------
         
-def process_cfg():
-  process_cfg_common_always()
-  process_cfg_server()
-  process_cfg_network()
+def process_cfg(putative_servers, putative_clients):
+  c = ConfigResults()
+  c.server = cfg.get('SERVER','server')
+
+  process_cfg_common(c, c.server)
+  process_cfg_saddrs(c, c.server)
+  process_cfg_vnetwork(c, c.server)
+  process_cfg_vaddr(c, c.server)
+
+  for (ci,cs) in putative_clients.items():
+    cc = ConfigResults()
+    sections = cfg_process_client_common(cc,c.server,cs,ci):
+    if not sections: continue
+    cfg_process_client_limited(cc,c.server,sections, 'max_batch_down')
+    cfg_process_client_limited(cc,c.server,sections, 'max_queue_time')
 
   try:
-    c.relay = cfg.get('virtual','relay')
+    c.relay = cfg.get(c.server, 'relay')
   except NoOptionError:
     for search in c.network.hosts():
       if search == c.server: continue
       c.relay = search
       break
 
-  process_cfg_saddrs()
-  process_cfg_clients(Client)
-
-  process_cfg_ipif('server',
-                   (('local','server'),
-                    ('peer', 'relay'),
-                    ('rnets','network')))
+  process_cfg_ipif(c,
+                   [c.server, 'DEFAULT'],
+                   (('local','vaddr'),
+                    ('peer', 'vrelay'),
+                    ('rnets','vnetwork')))
 
-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()