Report the original stream:error stanza to clients.
[punjab-krb5-preauth] / punjab / __init__.py
index d750444..d932699 100644 (file)
@@ -4,6 +4,7 @@ Punjab - multiple http interfaces to jabber.
 """
 from twisted.python import log
 from twisted.application import service
+import twisted_patches
 
 
 def uriCheck(elem, uri):
@@ -13,6 +14,23 @@ def uriCheck(elem, uri):
     if str(elem.toXml()).find('xmlns') == -1:
         elem['xmlns'] = uri
 
+
+class PunjabService(service.MultiService):
+    """Punjab parent service"""
+
+    httpb = None
+
+    def startService(self):
+        return service.MultiService.startService(self)
+
+    def stopService(self):
+        def cb(result):
+            return service.MultiService.stopService(self)
+
+        d = self.httpb.stopService()
+        d.addCallback(cb).addErrback(log.err)
+        return d
+
 class Service(service.Service):
     """
     Punjab generice service
@@ -48,7 +66,7 @@ def makeService(config):
     import httpb
 
 
-    serviceCollection = service.MultiService()
+    serviceCollection = PunjabService()
 
     if config['html_dir']:
         r = static.File(config['html_dir'])
@@ -59,6 +77,9 @@ def makeService(config):
     if config['white_list']:
         httpb.HttpbService.white_list = config['white_list'].split(',')
 
+    if config['black_list']:
+        httpb.HttpbService.black_list = config['black_list'].split(',')
+
     if config['httpb']:
         b = httpb.HttpbService(config['verbose'], config['polling'])
         if config['httpb'] == '':
@@ -85,5 +106,7 @@ def makeService(config):
         
         sm.setServiceParent(serviceCollection)
 
-    return sm
+    serviceCollection.httpb = b
+
+    return serviceCollection