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@xensource.com>
This commit is contained in:
emellor@leeni.uk.xensource.com committed 2006-04-04 11:08:20 +01:00
1 parent af37573f2c
commit c0693d2c6e
1 file changed
+11
+11
View File
@@ -20,6 +20,8 @@
An enhanced XML-RPC client/server interface for Python.
"""
import types
from httplib import HTTPConnection, HTTP
from xmlrpclib import Transport
from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
@@ -77,6 +79,15 @@ class TCPXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer):
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,
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.