mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
merge 3.4 (#22960)
This commit is contained in:
commit
e39bba2ab1
3 changed files with 22 additions and 6 deletions
|
@ -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
|
constructed data. If you need to parse untrusted or unauthenticated data see
|
||||||
:ref:`xml-vulnerabilities`.
|
:ref:`xml-vulnerabilities`.
|
||||||
|
|
||||||
.. versionchanged:: 3.4.3
|
.. versionchanged:: 3.5
|
||||||
|
|
||||||
For https URIs, :mod:`xmlrpc.client` now performs all the necessary
|
For https URIs, :mod:`xmlrpc.client` now performs all the necessary
|
||||||
certificate and hostname checks by default
|
certificate and hostname checks by default
|
||||||
|
|
||||||
.. class:: ServerProxy(uri, transport=None, encoding=None, verbose=False, \
|
.. class:: ServerProxy(uri, transport=None, encoding=None, verbose=False, \
|
||||||
allow_none=False, use_datetime=False, \
|
allow_none=False, use_datetime=False, \
|
||||||
use_builtin_types=False)
|
use_builtin_types=False, context=None)
|
||||||
|
|
||||||
.. versionchanged:: 3.3
|
.. versionchanged:: 3.3
|
||||||
The *use_builtin_types* flag was added.
|
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
|
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
|
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
|
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
|
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
|
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
|
:class:`Server` is retained as an alias for :class:`ServerProxy` for backwards
|
||||||
compatibility. New code should use :class:`ServerProxy`.
|
compatibility. New code should use :class:`ServerProxy`.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.5
|
||||||
|
Added the *context* argument.
|
||||||
|
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
|
|
|
@ -1324,6 +1324,11 @@ class Transport:
|
||||||
class SafeTransport(Transport):
|
class SafeTransport(Transport):
|
||||||
"""Handles an HTTPS transaction to an XML-RPC server."""
|
"""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
|
# FIXME: mostly untested
|
||||||
|
|
||||||
def make_connection(self, host):
|
def make_connection(self, host):
|
||||||
|
@ -1337,7 +1342,7 @@ class SafeTransport(Transport):
|
||||||
# host may be a string, or a (host, x509-dict) tuple
|
# host may be a string, or a (host, x509-dict) tuple
|
||||||
chost, self._extra_headers, x509 = self.get_host_info(host)
|
chost, self._extra_headers, x509 = self.get_host_info(host)
|
||||||
self._connection = host, http.client.HTTPSConnection(chost,
|
self._connection = host, http.client.HTTPSConnection(chost,
|
||||||
None, **(x509 or {}))
|
None, context=self.context, **(x509 or {}))
|
||||||
return self._connection[1]
|
return self._connection[1]
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -1380,7 +1385,8 @@ class ServerProxy:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, uri, transport=None, encoding=None, verbose=False,
|
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
|
# establish a "logical" server connection
|
||||||
|
|
||||||
# get the url
|
# get the url
|
||||||
|
@ -1394,10 +1400,13 @@ class ServerProxy:
|
||||||
if transport is None:
|
if transport is None:
|
||||||
if type == "https":
|
if type == "https":
|
||||||
handler = SafeTransport
|
handler = SafeTransport
|
||||||
|
extra_kwargs = {"context": context}
|
||||||
else:
|
else:
|
||||||
handler = Transport
|
handler = Transport
|
||||||
|
extra_kwargs = {}
|
||||||
transport = handler(use_datetime=use_datetime,
|
transport = handler(use_datetime=use_datetime,
|
||||||
use_builtin_types=use_builtin_types)
|
use_builtin_types=use_builtin_types,
|
||||||
|
**extra_kwargs)
|
||||||
self.__transport = transport
|
self.__transport = transport
|
||||||
|
|
||||||
self.__encoding = encoding or 'utf-8'
|
self.__encoding = encoding or 'utf-8'
|
||||||
|
|
|
@ -191,6 +191,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor.
|
||||||
|
|
||||||
- Issue #22389: Add contextlib.redirect_stderr().
|
- Issue #22389: Add contextlib.redirect_stderr().
|
||||||
|
|
||||||
- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The
|
- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue