diff options
author | Benjamin Peterson <benjamin@python.org> | 2014-11-29 22:55:35 -0500 |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2014-11-29 22:55:35 -0500 |
commit | 594b6c6b9f649cd71e8b4ec71764c770e02a6e52 (patch) | |
tree | 9389bcd300f26fc142c6f307fc29b080ba6d37be | |
parent | 598238668cf7c45ea2deaaf3fb963bf3618cb08c (diff) | |
download | cpython-594b6c6b9f649cd71e8b4ec71764c770e02a6e52.tar.gz |
add context parameter to xmlrpclib.ServerProxy (#22960)
Patch from Alex Gaynor.
-rw-r--r-- | Doc/library/xmlrpclib.rst | 11 | ||||
-rw-r--r-- | Lib/xmlrpclib.py | 10 | ||||
-rw-r--r-- | Misc/NEWS | 11 |
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 @@ -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? =============================================== |