diff -r 3eec7bcc14a4 Lib/ssl.py --- a/Lib/ssl.py Thu Mar 24 17:53:20 2016 +0100 +++ b/Lib/ssl.py Thu Mar 24 19:58:36 2016 +0200 @@ -886,7 +886,7 @@ while (count < amount): v = self.send(data[count:]) count += v - return amount + return None else: return socket.sendall(self, data, flags) diff -r 3eec7bcc14a4 Lib/test/test_ssl.py --- a/Lib/test/test_ssl.py Thu Mar 24 17:53:20 2016 +0100 +++ b/Lib/test/test_ssl.py Thu Mar 24 19:58:36 2016 +0200 @@ -2718,12 +2718,13 @@ count, addr = s.recvfrom_into(b) return b[:count] + # (name, method, whether to expect success, *args, calculate_return_value_method) + send_methods = [ + ('send', s.send, True, [], lambda x: len(x)), + ('sendto', s.sendto, False, ["some.address"], lambda x: len(x)), + ('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"]), @@ -2732,10 +2733,20 @@ ] 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) + if ret != ret_val_meth(indata): + self.fail( + "While sending with <<{name:s}>> bad return value " + "<<{retvalue:r}>> received; " + "expected <<{expected_retvalue:r}>>\n".format( + name=meth_name, + retvalue=ret, + excpected_retvalue=ret_val_meth(indata) + ) + ) outdata = s.read() if outdata != indata.lower(): self.fail(