[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Workaround bug in xmlrpclib's string escaping. That library outputs invalid
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID 395e57314710c0c8d21e3ebc695f17ef6b93709d # Parent 13e6993a0c6536a4d51453409011a54c22fbf216 Workaround bug in xmlrpclib's string escaping. That library outputs invalid UTF-8 if given a string containing high-bit characters, so instead pass in Unicode strings, for which the escaping is correct. This fixes a bug seen when the dmesg of a machine contains high bit characters, but I'm sure there are other ways in which it might be triggered. Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> diff -r 13e6993a0c65 -r 395e57314710 tools/python/xen/util/xmlrpclib2.py --- a/tools/python/xen/util/xmlrpclib2.py Tue Apr 4 08:53:53 2006 +++ b/tools/python/xen/util/xmlrpclib2.py Tue Apr 4 10:08:20 2006 @@ -19,6 +19,8 @@ """ An enhanced XML-RPC client/server interface for Python. """ + +import types from httplib import HTTPConnection, HTTP from xmlrpclib import Transport @@ -77,6 +79,15 @@ else: response = self._dispatch(method, params) + # Convert strings to unicode strings so that they are escaped + # properly by xmlrpclib. We use latin-1 here, but any + # ASCII-compatible scheme would do -- we just care about getting + # the bytes across the wire. + # Any message handler that actually cares about the charset in + # use should be returning Unicode strings. + if isinstance(response, types.StringType): + response = unicode(response, 'iso-8859-1') + response = (response,) response = xmlrpclib.dumps(response, methodresponse=1, _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |