From 888bbdc192ec4db888a294ef758cf5510442dc9a Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Thu, 7 Sep 2017 14:18:21 -0700 Subject: bpo-27340: Use memoryview in SSLSocket.sendall() (#3384) * bpo-27340: Use memoryview in SSLSocket.sendall() SSLSocket.sendall() now uses memoryview to create slices of data. This fix support for all bytes-like object. It is also more efficient and avoids costly copies. Signed-off-by: Christian Heimes * Cast view to bytes, fix typo Signed-off-by: Christian Heimes --- Lib/ssl.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'Lib/ssl.py') diff --git a/Lib/ssl.py b/Lib/ssl.py index 8ad4a339a93..7a574dcb2b1 100644 --- a/Lib/ssl.py +++ b/Lib/ssl.py @@ -959,11 +959,12 @@ class SSLSocket(socket): raise ValueError( "non-zero flags not allowed in calls to sendall() on %s" % self.__class__) - amount = len(data) count = 0 - while (count < amount): - v = self.send(data[count:]) - count += v + with memoryview(data) as view, view.cast("B") as byte_view: + amount = len(byte_view) + while count < amount: + v = self.send(byte_view[count:]) + count += v else: return socket.sendall(self, data, flags) -- cgit v1.2.3