Issue #25951: Fix SSLSocket.sendall() to return None, by Aviv Palivoda

This commit is contained in:
Martin Panter 2016-04-03 02:12:54 +00:00
parent 50badad807
commit 519f91215b
3 changed files with 13 additions and 7 deletions

View File

@ -886,7 +886,6 @@ class SSLSocket(socket):
while (count < amount):
v = self.send(data[count:])
count += v
return amount
else:
return socket.sendall(self, data, flags)

View File

@ -2709,12 +2709,13 @@ if _have_threads:
count, addr = s.recvfrom_into(b)
return b[:count]
# (name, method, whether to expect success, *args)
# (name, method, expect success?, *args, return value func)
send_methods = [
('send', s.send, True, []),
('sendto', s.sendto, False, ["some.address"]),
('sendall', s.sendall, True, []),
('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)
recv_methods = [
('recv', s.recv, True, []),
('recvfrom', s.recvfrom, False, ["some.address"]),
@ -2723,10 +2724,13 @@ if _have_threads:
]
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(

View File

@ -237,6 +237,9 @@ Core and Builtins
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.