partially revert 154c4ea9e
authorchrysn <chrysn@fsfe.org>
Wed, 12 Mar 2014 10:11:14 +0000 (11:11 +0100)
committerchrysn <chrysn@fsfe.org>
Wed, 12 Mar 2014 10:11:14 +0000 (11:11 +0100)
explicitly en- and decoding xmlrpc requests in the python proxy broke
plugins on debian sid, while it was introduced to fix breakage in debian
stable. it is assumed that an xml module involved changed its behavior
from str to unicode, this patch handles both cases.

plugins/proxy.py

index d70a967a5b706845202121b0be77352c47924036..e8782e6e450dbd8e4d44db8c4a31d05ab51d5ef0 100755 (executable)
@@ -158,15 +158,23 @@ class _IkiWikiExtPluginXMLRPCHandler(object):
     def send_rpc(self, cmd, in_fd, out_fd, *args, **kwargs):
         xml = _xmlrpc_client.dumps(sum(kwargs.items(), args), cmd)
         self._debug_fn(
-            "calling ikiwiki procedure `{0}': [{1}]".format(cmd, xml))
-        _IkiWikiExtPluginXMLRPCHandler._write(out_fd, xml.encode('utf8'))
+            "calling ikiwiki procedure `{0}': [{1}]".format(cmd, repr(xml)))
+        if isinstance(xml, unicode):
+            encoded = xml.encode('utf8')
+        else:
+            encoded = xml
+        _IkiWikiExtPluginXMLRPCHandler._write(out_fd, encoded)
 
         self._debug_fn('reading response from ikiwiki...')
 
-        xml = _IkiWikiExtPluginXMLRPCHandler._read(in_fd).decode('utf8')
+        response = _IkiWikiExtPluginXMLRPCHandler._read(in_fd)
+        if isinstance(response, unicode):
+            xml = response.encode('utf8')
+        else:
+            xml = response
         self._debug_fn(
             'read response to procedure {0} from ikiwiki: [{1}]'.format(
-                cmd, xml))
+                cmd, repr(xml)))
         if xml is None:
             # ikiwiki is going down
             self._debug_fn('ikiwiki is going down, and so are we...')