Commit 5974cdd5 authored by Antoine Pitrou's avatar Antoine Pitrou

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.
........
parent 3a883214
...@@ -221,13 +221,15 @@ class SSLSocket(socket): ...@@ -221,13 +221,15 @@ class SSLSocket(socket):
else: else:
return socket.send(self, data, flags) return socket.send(self, data, flags)
def sendto(self, data, addr, flags=0): def sendto(self, data, flags_or_addr, addr=None):
self._checkClosed() self._checkClosed()
if self._sslobj: if self._sslobj:
raise ValueError("sendto not allowed on instances of %s" % raise ValueError("sendto not allowed on instances of %s" %
self.__class__) self.__class__)
elif addr is None:
return socket.sendto(self, data, flags_or_addr)
else: else:
return socket.sendto(self, data, addr, flags) return socket.sendto(self, data, flags_or_addr, addr)
def sendall(self, data, flags=0): def sendall(self, data, flags=0):
self._checkClosed() self._checkClosed()
...@@ -267,13 +269,13 @@ class SSLSocket(socket): ...@@ -267,13 +269,13 @@ class SSLSocket(socket):
else: else:
return socket.recv_into(self, buffer, nbytes, flags) 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() self._checkClosed()
if self._sslobj: if self._sslobj:
raise ValueError("recvfrom not allowed on instances of %s" % raise ValueError("recvfrom not allowed on instances of %s" %
self.__class__) self.__class__)
else: else:
return socket.recvfrom(self, addr, buflen, flags) return socket.recvfrom(self, buflen, flags)
def recvfrom_into(self, buffer, nbytes=None, flags=0): def recvfrom_into(self, buffer, nbytes=None, flags=0):
self._checkClosed() self._checkClosed()
......
...@@ -92,6 +92,18 @@ class BasicTests(unittest.TestCase): ...@@ -92,6 +92,18 @@ class BasicTests(unittest.TestCase):
del ss del ss
self.assertEqual(wr(), None) 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): def test_timeout(self):
# Issue #8524: when creating an SSL socket, the timeout of the # Issue #8524: when creating an SSL socket, the timeout of the
# original socket should be retained. # original socket should be retained.
......
...@@ -117,6 +117,9 @@ C-API ...@@ -117,6 +117,9 @@ C-API
Library 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() - Issue #9792: In case of connection failure, socket.create_connection()
would swallow the exception and raise a new one, making it impossible would swallow the exception and raise a new one, making it impossible
to fetch the original errno, or to filter timeout errors. Now the to fetch the original errno, or to filter timeout errors. Now the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment