diff -ru xen-3.0.3-testing-11633.orig/tools/python/xen/web/httpserver.py xen-3.0.3-testing-11633.new/tools/python/xen/web/httpserver.py --- xen-3.0.3-testing-11633.orig/tools/python/xen/web/httpserver.py 2006-09-28 18:52:38.000000000 -0400 +++ xen-3.0.3-testing-11633.new/tools/python/xen/web/httpserver.py 2006-10-05 19:48:41.000000000 -0400 @@ -264,7 +264,32 @@ s += x + "/" self.write(' %s/' % (s, x)) self.write("") - + +class HttpServerClient: + + def __init__(self, server, sock, addr): + self.server = server + self.sock = sock + self.addr = addr + + def process(self): + thread = threading.Thread(target=self.doProcess) + thread.setDaemon(True) + thread.start() + + def doProcess(self): + try: + rp = RequestProcessor(self.server, self.sock, self.addr) + rp.process() + except SystemExit: + raise + except Exception, ex: + print 'HttpServer>processRequest> exception: ', ex + try: + self.sock.close() + except: + pass + class HttpServer: backlog = 5 @@ -286,8 +311,8 @@ while not self.closed: (sock, addr) = self.accept() - self.processRequest(sock, addr) - + cl = HttpServerClient(self, sock, addr) + cl.process() def stop(self): self.close() @@ -314,19 +339,6 @@ except: pass - def processRequest(self, sock, addr): - try: - rp = RequestProcessor(self, sock, addr) - rp.process() - except SystemExit: - raise - except Exception, ex: - print 'HttpServer>processRequest> exception: ', ex - try: - sock.close() - except: - pass - def getServerAddr(self): return (socket.gethostname(), self.port)