summaryrefslogtreecommitdiffstats
path: root/Lib/xmlrpc
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-11-30 04:32:57 (GMT)
committerBenjamin Peterson <benjamin@python.org>2014-11-30 04:32:57 (GMT)
commitc1da3d1ed86284cc49cd7880a57a404de8965b24 (patch)
treea4a719096636491b3860437d6ec03df96f91284b /Lib/xmlrpc
parent2b3b95be6221a30f00fa110cb1a9a1f2aeb684c6 (diff)
downloadcpython-c1da3d1ed86284cc49cd7880a57a404de8965b24.zip
cpython-c1da3d1ed86284cc49cd7880a57a404de8965b24.tar.gz
cpython-c1da3d1ed86284cc49cd7880a57a404de8965b24.tar.bz2
add context parameter to xmlrpclib.ServerProxy (#22960)
Patch by Alex Gaynor.
Diffstat (limited to 'Lib/xmlrpc')
-rw-r--r--Lib/xmlrpc/client.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py
index c2ae707..50cedfc 100644
--- a/Lib/xmlrpc/client.py
+++ b/Lib/xmlrpc/client.py
@@ -1323,6 +1323,11 @@ class Transport:
class SafeTransport(Transport):
"""Handles an HTTPS transaction to an XML-RPC server."""
+ def __init__(self, use_datetime=False, use_builtin_types=False, *,
+ context=None):
+ super().__init__(use_datetime=use_datetime, use_builtin_types=use_builtin_types)
+ self.context = context
+
# FIXME: mostly untested
def make_connection(self, host):
@@ -1336,7 +1341,7 @@ class SafeTransport(Transport):
# host may be a string, or a (host, x509-dict) tuple
chost, self._extra_headers, x509 = self.get_host_info(host)
self._connection = host, http.client.HTTPSConnection(chost,
- None, **(x509 or {}))
+ None, context=self.context, **(x509 or {}))
return self._connection[1]
##
@@ -1379,7 +1384,8 @@ class ServerProxy:
"""
def __init__(self, uri, transport=None, encoding=None, verbose=False,
- allow_none=False, use_datetime=False, use_builtin_types=False):
+ allow_none=False, use_datetime=False, use_builtin_types=False,
+ *, context=None):
# establish a "logical" server connection
# get the url
@@ -1393,10 +1399,13 @@ class ServerProxy:
if transport is None:
if type == "https":
handler = SafeTransport
+ extra_kwargs = {"context": context}
else:
handler = Transport
+ extra_kwargs = {}
transport = handler(use_datetime=use_datetime,
- use_builtin_types=use_builtin_types)
+ use_builtin_types=use_builtin_types,
+ **extra_kwargs)
self.__transport = transport
self.__encoding = encoding or 'utf-8'