mirror of
https://github.com/python/cpython.git
synced 2025-11-25 21:11:09 +00:00
Merged revisions 84807 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r84807 | antoine.pitrou | 2010-09-14 16:43:44 +0200 (mar., 14 sept. 2010) | 4 lines Issue #9853: Fix the signature of SSLSocket.recvfrom() and SSLSocket.sendto() to match the corresponding socket methods. ........
This commit is contained in:
parent
3a883214ee
commit
5974cdd5f5
3 changed files with 21 additions and 4 deletions
10
Lib/ssl.py
10
Lib/ssl.py
|
|
@ -221,13 +221,15 @@ class SSLSocket(socket):
|
|||
else:
|
||||
return socket.send(self, data, flags)
|
||||
|
||||
def sendto(self, data, addr, flags=0):
|
||||
def sendto(self, data, flags_or_addr, addr=None):
|
||||
self._checkClosed()
|
||||
if self._sslobj:
|
||||
raise ValueError("sendto not allowed on instances of %s" %
|
||||
self.__class__)
|
||||
elif addr is None:
|
||||
return socket.sendto(self, data, flags_or_addr)
|
||||
else:
|
||||
return socket.sendto(self, data, addr, flags)
|
||||
return socket.sendto(self, data, flags_or_addr, addr)
|
||||
|
||||
def sendall(self, data, flags=0):
|
||||
self._checkClosed()
|
||||
|
|
@ -267,13 +269,13 @@ class SSLSocket(socket):
|
|||
else:
|
||||
return socket.recv_into(self, buffer, nbytes, flags)
|
||||
|
||||
def recvfrom(self, addr, buflen=1024, flags=0):
|
||||
def recvfrom(self, buflen=1024, flags=0):
|
||||
self._checkClosed()
|
||||
if self._sslobj:
|
||||
raise ValueError("recvfrom not allowed on instances of %s" %
|
||||
self.__class__)
|
||||
else:
|
||||
return socket.recvfrom(self, addr, buflen, flags)
|
||||
return socket.recvfrom(self, buflen, flags)
|
||||
|
||||
def recvfrom_into(self, buffer, nbytes=None, flags=0):
|
||||
self._checkClosed()
|
||||
|
|
|
|||
|
|
@ -92,6 +92,18 @@ class BasicTests(unittest.TestCase):
|
|||
del ss
|
||||
self.assertEqual(wr(), None)
|
||||
|
||||
def test_wrapped_unconnected(self):
|
||||
# Methods on an unconnected SSLSocket propagate the original
|
||||
# socket.error raise by the underlying socket object.
|
||||
s = socket.socket(socket.AF_INET)
|
||||
ss = ssl.wrap_socket(s)
|
||||
self.assertRaises(socket.error, ss.recv, 1)
|
||||
self.assertRaises(socket.error, ss.recv_into, bytearray(b'x'))
|
||||
self.assertRaises(socket.error, ss.recvfrom, 1)
|
||||
self.assertRaises(socket.error, ss.recvfrom_into, bytearray(b'x'), 1)
|
||||
self.assertRaises(socket.error, ss.send, b'x')
|
||||
self.assertRaises(socket.error, ss.sendto, b'x', ('0.0.0.0', 0))
|
||||
|
||||
def test_timeout(self):
|
||||
# Issue #8524: when creating an SSL socket, the timeout of the
|
||||
# original socket should be retained.
|
||||
|
|
|
|||
|
|
@ -117,6 +117,9 @@ C-API
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #9853: Fix the signature of SSLSocket.recvfrom() and
|
||||
SSLSocket.sendto() to match the corresponding socket methods.
|
||||
|
||||
- Issue #9792: In case of connection failure, socket.create_connection()
|
||||
would swallow the exception and raise a new one, making it impossible
|
||||
to fetch the original errno, or to filter timeout errors. Now the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue