diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-09-14 14:47:08 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-09-14 14:47:08 (GMT) |
commit | 5974cdd5f598423002709d912276963c2032c69a (patch) | |
tree | 6194b100caec2d1cbcb93b5097e1626079d42b8c /Lib | |
parent | 3a883214ee3e7d79b14dcd42720d8efe55c147ad (diff) | |
download | cpython-5974cdd5f598423002709d912276963c2032c69a.zip cpython-5974cdd5f598423002709d912276963c2032c69a.tar.gz cpython-5974cdd5f598423002709d912276963c2032c69a.tar.bz2 |
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.
........
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/ssl.py | 10 | ||||
-rw-r--r-- | Lib/test/test_ssl.py | 12 |
2 files changed, 18 insertions, 4 deletions
@@ -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() diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index b622da5..987a425 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -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. |