summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-11-29 22:55:35 -0500
committerBenjamin Peterson <benjamin@python.org>2014-11-29 22:55:35 -0500
commit594b6c6b9f649cd71e8b4ec71764c770e02a6e52 (patch)
tree9389bcd300f26fc142c6f307fc29b080ba6d37be
parent598238668cf7c45ea2deaaf3fb963bf3618cb08c (diff)
downloadcpython-594b6c6b9f649cd71e8b4ec71764c770e02a6e52.tar.gz
add context parameter to xmlrpclib.ServerProxy (#22960)
Patch from Alex Gaynor.
-rw-r--r--Doc/library/xmlrpclib.rst11
-rw-r--r--Lib/xmlrpclib.py10
-rw-r--r--Misc/NEWS11
3 files changed, 26 insertions, 6 deletions
diff --git a/Doc/library/xmlrpclib.rst b/Doc/library/xmlrpclib.rst
index 3aa8be0708..833dc7ac7d 100644
--- a/Doc/library/xmlrpclib.rst
+++ b/Doc/library/xmlrpclib.rst
@@ -39,7 +39,7 @@ between conformable Python objects and XML on the wire.
For https URIs, :mod:`xmlrpclib` now performs all the necessary certificate
and hostname checks by default
-.. class:: ServerProxy(uri[, transport[, encoding[, verbose[, allow_none[, use_datetime]]]]])
+.. class:: ServerProxy(uri[, transport[, encoding[, verbose[, allow_none[, use_datetime[, context]]]]]])
A :class:`ServerProxy` instance is an object that manages communication with a
remote XML-RPC server. The required first argument is a URI (Uniform Resource
@@ -57,11 +57,13 @@ between conformable Python objects and XML on the wire.
:class:`datetime.datetime` objects may be passed to calls.
Both the HTTP and HTTPS transports support the URL syntax extension for HTTP
- Basic Authentication: ``http://user:pass@host:port/path``. The ``user:pass``
+ Basic Authentication: ``http://user:pass@host:port/path``. The ``user:pass``
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
@@ -131,6 +133,9 @@ between conformable Python objects and XML on the wire.
*__dict__* attribute and don't have a base class that is marshalled in a
special way.
+ .. versionchanged:: 2.7.9
+ Added the *context* argument.
+
.. seealso::
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py
index 1a8b3fb431..f5682c9cf0 100644
--- a/Lib/xmlrpclib.py
+++ b/Lib/xmlrpclib.py
@@ -1478,6 +1478,10 @@ class Transport:
class SafeTransport(Transport):
"""Handles an HTTPS transaction to an XML-RPC server."""
+ def __init__(self, use_datetime=0, context=None):
+ Transport.__init__(self, use_datetime=use_datetime)
+ self.context = context
+
# FIXME: mostly untested
def make_connection(self, host):
@@ -1493,7 +1497,7 @@ class SafeTransport(Transport):
)
else:
chost, self._extra_headers, x509 = self.get_host_info(host)
- self._connection = host, HTTPS(chost, None, **(x509 or {}))
+ self._connection = host, HTTPS(chost, None, context=context, **(x509 or {}))
return self._connection[1]
##
@@ -1536,7 +1540,7 @@ class ServerProxy:
"""
def __init__(self, uri, transport=None, encoding=None, verbose=0,
- allow_none=0, use_datetime=0):
+ allow_none=0, use_datetime=0, context=None):
# establish a "logical" server connection
if isinstance(uri, unicode):
@@ -1553,7 +1557,7 @@ class ServerProxy:
if transport is None:
if type == "https":
- transport = SafeTransport(use_datetime=use_datetime)
+ transport = SafeTransport(use_datetime=use_datetime, context=context)
else:
transport = Transport(use_datetime=use_datetime)
self.__transport = transport
diff --git a/Misc/NEWS b/Misc/NEWS
index ed81c3b65e..8beb192649 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -2,6 +2,17 @@
Python News
+++++++++++
+What's New in Python 2.7.9?
+===========================
+
+*Release date: 2014-12-XX*
+
+Library
+-------
+
+- Issue #22960: Add a context argument to xmlrpclib.ServerProxy.
+
+
What's New in Python 2.7.9 release candidate 1?
===============================================