WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH 1/4] Fix Xend's HTTP/1.1 Keep-Alive support

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 1/4] Fix Xend's HTTP/1.1 Keep-Alive support
From: Anthony Liguori <aliguori@xxxxxxxxxx>
Date: 2006年6月14日 14:31:35 -0500
Cc: Ewan Mellor <ewan@xxxxxxxxxxxxx>
Delivery-date: 2006年6月14日 12:32:26 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <44906357.90107@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <44906357.90107@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.4 (X11/20060612)
Repost of earlier patch
Regards,
Anthony Liguori
# HG changeset patch
# User anthony@xxxxxxxxxxxxxxxxxxxxx
# Node ID 9ad475c664bff5e668cebbf864861807583d657d
# Parent 4f1e39ec05d6ec711f9ba4a66a3653ed3e168311
Add support to Xend XML-RPC server for HTTP/1.1 Keep-Alive.
This patch fixes a few bugs in the Python SimpleXMLRPC server and enables
HTTP/1.1 by default. This allows a client to use Keep-Alive. Keep-Alive
improves performance by eliminating the overhead of connection setup and,
more importantly, avoids credential caching when executing multiple
commands over a secure connection.
Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx>
diff -r 4f1e39ec05d6 -r 9ad475c664bf tools/python/xen/util/xmlrpclib2.py
--- a/tools/python/xen/util/xmlrpclib2.py Thu Jun 8 15:51:39 2006
+++ b/tools/python/xen/util/xmlrpclib2.py Fri Jun 9 23:16:19 2006
@@ -39,6 +39,31 @@
 # httpu:///absolute/path/to/socket.sock
 #
 # It assumes that the RPC handler is /RPC2. This probably needs to be improved
+
+# We're forced to subclass the RequestHandler class so that we can work around
+# some bugs in Keep-Alive handling and also enabled it by default
+class XMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
+ protocol_version = "HTTP/1.1"
+
+ # this is inspired by SimpleXMLRPCRequestHandler's do_POST but differs
+ # in a few non-trivial ways
+ # 1) we never generate internal server errors. We let the exception
+ # propagate so that it shows up in the Xend debug logs
+ # 2) we don't bother checking for a _dispatch function since we don't
+ # use one
+ # 3) we never shutdown the connection. This appears to be a bug in
+ # SimpleXMLRPCServer.py as it breaks HTTP Keep-Alive
+ def do_POST(self):
+ data = self.rfile.read(int(self.headers["content-length"]))
+ rsp = self.server._marshaled_dispatch(data)
+
+ self.send_response(200)
+ self.send_header("Content-Type", "text/xml")
+ self.send_header("Content-Length", str(len(rsp)))
+ self.end_headers()
+
+ self.wfile.write(rsp)
+ self.wfile.flush()
 
 class HTTPUnixConnection(HTTPConnection):
 def connect(self):
@@ -94,6 +119,10 @@
 class TCPXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer):
 allow_reuse_address = True
 
+ def __init__(self, addr, requestHandler=XMLRPCRequestHandler,
+ logRequests=1):
+ SimpleXMLRPCServer.__init__(self, addr, requestHandler, logRequests)
+
 def _marshaled_dispatch(self, data, dispatch_method = None):
 params, method = xmlrpclib.loads(data)
 try:
@@ -131,10 +160,10 @@
 # It implements proper support for allow_reuse_address by
 # unlink()'ing an existing socket.
 
-class UnixXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
+class UnixXMLRPCRequestHandler(XMLRPCRequestHandler):
 def address_string(self):
 try:
- return SimpleXMLRPCRequestHandler.address_string(self)
+ return XMLRPCRequestHandler.address_string(self)
 except ValueError, e:
 return self.client_address[:2]
 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
Previous by Date: [Xen-devel] [PATCH 0/4] Add support for XML-RPC over SSH (take two) , Anthony Liguori
Next by Date: [Xen-devel] [PATCH 2/4] Add support for an xm serve command , Anthony Liguori
Previous by Thread: [Xen-devel] [PATCH 0/4] Add support for XML-RPC over SSH (take two) , Anthony Liguori
Next by Thread: [Xen-devel] [PATCH 2/4] Add support for an xm serve command , Anthony Liguori
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /