[Python-checkins] cpython: Issue #25951: Fix SSLSocket.sendall() to return None, by Aviv Palivoda

martin.panter python-checkins at python.org
Sat Apr 2 22:38:06 EDT 2016


https://hg.python.org/cpython/rev/92947704321c
changeset:   100839:92947704321c
user:        Martin Panter <vadmium+py at gmail.com>
date:        Sun Apr 03 02:12:54 2016 +0000
summary:
  Issue #25951: Fix SSLSocket.sendall() to return None, by Aviv Palivoda

files:
  Lib/ssl.py           |   1 -
  Lib/test/test_ssl.py |  18 +++++++++++-------
  Misc/NEWS            |   3 +++
  3 files changed, 14 insertions(+), 8 deletions(-)


diff --git a/Lib/ssl.py b/Lib/ssl.py
--- a/Lib/ssl.py
+++ b/Lib/ssl.py
@@ -886,7 +886,6 @@
             while (count < amount):
                 v = self.send(data[count:])
                 count += v
-            return amount
         else:
             return socket.sendall(self, data, flags)
 
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -2709,12 +2709,13 @@
                     count, addr = s.recvfrom_into(b)
                     return b[:count]
 
+                # (name, method, expect success?, *args, return value func)
+                send_methods = [
+                    ('send', s.send, True, [], len),
+                    ('sendto', s.sendto, False, ["some.address"], len),
+                    ('sendall', s.sendall, True, [], lambda x: None),
+                ]
                 # (name, method, whether to expect success, *args)
-                send_methods = [
-                    ('send', s.send, True, []),
-                    ('sendto', s.sendto, False, ["some.address"]),
-                    ('sendall', s.sendall, True, []),
-                ]
                 recv_methods = [
                     ('recv', s.recv, True, []),
                     ('recvfrom', s.recvfrom, False, ["some.address"]),
@@ -2723,10 +2724,13 @@
                 ]
                 data_prefix = "PREFIX_"
 
-                for meth_name, send_meth, expect_success, args in send_methods:
+                for (meth_name, send_meth, expect_success, args,
+                        ret_val_meth) in send_methods:
                     indata = (data_prefix + meth_name).encode('ascii')
                     try:
-                        send_meth(indata, *args)
+                        ret = send_meth(indata, *args)
+                        msg = "sending with {}".format(meth_name)
+                        self.assertEqual(ret, ret_val_meth(indata), msg=msg)
                         outdata = s.read()
                         if outdata != indata.lower():
                             self.fail(
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -237,6 +237,9 @@
 Library
 -------
 
+- Issue #25951: Change SSLSocket.sendall() to return None, as explicitly
+  documented for plain socket objects.  Patch by Aviv Palivoda.
+
 - Issue #26586: In http.server, respond with "413 Request header fields too
   large" if there are too many header fields to parse, rather than killing
   the connection and raising an unhandled exception.  Patch by Xiang Zhang.

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list