Supply a modified factory with increased pipelining and timeouts.
[quix0rs-apt-p2p.git] / apt_dht / HTTPServer.py
index 616fc2df5b3b7ad21b8c9761919dc47525db470f..38c7c0912d7da63815e40638ca1cc0ca61e468a9 100644 (file)
@@ -44,6 +44,14 @@ class TopLevel(resource.Resource):
         self.directory = directory
         self.manager = manager
         self.subdirs = {}
+        self.factory = None
+
+    def getHTTPFactory(self):
+        if self.factory is None:
+            self.factory = channel.HTTPFactory(server.Site(self),
+                                               **{'maxPipeline': 10, 
+                                                  'betweenRequestsTimeOut': 60})
+        return self.factory
 
     def setDirectories(self, dirs):
         self.subdirs = {}
@@ -75,16 +83,15 @@ class TopLevel(resource.Resource):
             return FileDownloader(self.directory.path, self.manager), segments[0:]
         else:
             return self, ()
-        
+
 if __name__ == '__builtin__':
     # Running from twistd -y
     t = TopLevel('/home', None)
-    t.addDirectory('/tmp')
-    t.addDirectory('/var/log')
-    site = server.Site(t)
+    t.setDirectories({'~1': '/tmp', '~2': '/var/log'})
+    factory = t.getHTTPFactory()
     
     # Standard twisted application Boilerplate
     from twisted.application import service, strports
     application = service.Application("demoserver")
-    s = strports.service('tcp:18080', channel.HTTPFactory(site))
+    s = strports.service('tcp:18080', factory)
     s.setServiceParent(application)