summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-02-13 10:50:01 (GMT)
committerGeorg Brandl <georg@python.org>2009-02-13 10:50:01 (GMT)
commitc8dcfb6cece2da41d7b86879af1f4b81f98d70df (patch)
treeb3b568eb77b87c263cc5e042435e84c1f6b19681 /Lib
parent35e2c4e67adee5910819b95297d19285270eb7fe (diff)
downloadcpython-c8dcfb6cece2da41d7b86879af1f4b81f98d70df.zip
cpython-c8dcfb6cece2da41d7b86879af1f4b81f98d70df.tar.gz
cpython-c8dcfb6cece2da41d7b86879af1f4b81f98d70df.tar.bz2
part of #3613: fix get_host_info() usage of base64.encodestring().
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_xmlrpc.py8
-rw-r--r--Lib/xmlrpc/client.py3
2 files changed, 10 insertions, 1 deletions
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index 7c68e4c..d1ed40f 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -135,6 +135,14 @@ class XMLRPCTestCase(unittest.TestCase):
xmlrpclib.loads(strg)[0][0])
self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,))
+ def test_get_host_info(self):
+ # see bug #3613, this raised a TypeError
+ transp = xmlrpc.client.Transport()
+ self.assertEquals(transp.get_host_info("user@host.tld"),
+ ('host.tld',
+ [('Authorization', 'Basic dXNlcg==')], {}))
+
+
class HelperTestCase(unittest.TestCase):
def test_escape(self):
self.assertEqual(xmlrpclib.escape("a&b"), "a&amp;b")
diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py
index e66ee84..86988de 100644
--- a/Lib/xmlrpc/client.py
+++ b/Lib/xmlrpc/client.py
@@ -1161,7 +1161,8 @@ class Transport:
if auth:
import base64
- auth = base64.encodestring(urllib.parse.unquote(auth))
+ auth = urllib.parse.unquote_to_bytes(auth)
+ auth = base64.encodestring(auth).decode("utf-8")
auth = "".join(auth.split()) # get rid of whitespace
extra_headers = [
("Authorization", "Basic " + auth)