summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-11-30 04:34:30 (GMT)
committerBenjamin Peterson <benjamin@python.org>2014-11-30 04:34:30 (GMT)
commite39bba2ab18db15e629f1738f0daf269de086724 (patch)
tree7dc4c0651fb3cb6398d841c809fcd738b4f81a56
parent3a9c68e608aca856da55eb5765173d3bf0a55ed2 (diff)
parentc1da3d1ed86284cc49cd7880a57a404de8965b24 (diff)
downloadcpython-e39bba2ab18db15e629f1738f0daf269de086724.zip
cpython-e39bba2ab18db15e629f1738f0daf269de086724.tar.gz
cpython-e39bba2ab18db15e629f1738f0daf269de086724.tar.bz2
merge 3.4 (#22960)
-rw-r--r--Doc/library/xmlrpc.client.rst11
-rw-r--r--Lib/xmlrpc/client.py15
-rw-r--r--Misc/NEWS2
3 files changed, 22 insertions, 6 deletions
diff --git a/Doc/library/xmlrpc.client.rst b/Doc/library/xmlrpc.client.rst
index 1d87f49..cc40920 100644
--- a/Doc/library/xmlrpc.client.rst
+++ b/Doc/library/xmlrpc.client.rst
@@ -27,14 +27,14 @@ between conformable Python objects and XML on the wire.
constructed data. If you need to parse untrusted or unauthenticated data see
:ref:`xml-vulnerabilities`.
-.. versionchanged:: 3.4.3
+.. versionchanged:: 3.5
For https URIs, :mod:`xmlrpc.client` now performs all the necessary
certificate and hostname checks by default
.. class:: ServerProxy(uri, transport=None, encoding=None, verbose=False, \
allow_none=False, use_datetime=False, \
- use_builtin_types=False)
+ use_builtin_types=False, context=None)
.. versionchanged:: 3.3
The *use_builtin_types* flag was added.
@@ -63,7 +63,9 @@ between conformable Python objects and XML on the wire.
portion will be base64-encoded as an HTTP 'Authorization' header, and sent to
the remote server as part of the connection process when invoking an XML-RPC
method. You only need to use this if the remote server requires a Basic
- Authentication user and password.
+ Authentication user and password. If an HTTPS url is provided, *context* may
+ be :class:`ssl.SSLContext` and configures the SSL settings of the underlying
+ HTTPS connection.
The returned instance is a proxy object with methods that can be used to invoke
corresponding RPC calls on the remote server. If the remote server supports the
@@ -127,6 +129,9 @@ between conformable Python objects and XML on the wire.
:class:`Server` is retained as an alias for :class:`ServerProxy` for backwards
compatibility. New code should use :class:`ServerProxy`.
+ .. versionchanged:: 3.5
+ Added the *context* argument.
+
.. seealso::
diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py
index 3a1435d..dbd9143 100644
--- a/Lib/xmlrpc/client.py
+++ b/Lib/xmlrpc/client.py
@@ -1324,6 +1324,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):
@@ -1337,7 +1342,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]
##
@@ -1380,7 +1385,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
@@ -1394,10 +1400,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'
diff --git a/Misc/NEWS b/Misc/NEWS
index 86762f8..21769d8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -191,6 +191,8 @@ Core and Builtins
Library
-------
+- Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor.
+
- Issue #22389: Add contextlib.redirect_stderr().
- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The