summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2010-09-14 14:47:08 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2010-09-14 14:47:08 (GMT)
commit5974cdd5f598423002709d912276963c2032c69a (patch)
tree6194b100caec2d1cbcb93b5097e1626079d42b8c /Lib
parent3a883214ee3e7d79b14dcd42720d8efe55c147ad (diff)
downloadcpython-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.py10
-rw-r--r--Lib/test/test_ssl.py12
2 files changed, 18 insertions, 4 deletions
diff --git a/Lib/ssl.py b/Lib/ssl.py
index 0ba3442..f98bd73 100644
--- a/Lib/ssl.py
+++ b/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()
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.