Skip to content

Commit 56b47c6

Browse files
committed
make the buffered socket buffer reads too
1 parent 2d53c14 commit 56b47c6

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

tlslite/bufferedsocket.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def __init__(self, socket):
2525
self.socket = socket
2626
self._write_queue = deque()
2727
self.buffer_writes = False
28+
self._read_buffer = bytearray()
2829

2930
def send(self, data):
3031
"""Send data to the socket"""
@@ -51,7 +52,11 @@ def flush(self):
5152

5253
def recv(self, bufsize):
5354
"""Receive data from socket (socket emulation)"""
54-
return self.socket.recv(bufsize)
55+
if not self._read_buffer:
56+
self._read_buffer += self.socket.recv(max(4096, bufsize))
57+
ret = self._read_buffer[:bufsize]
58+
del self._read_buffer[:bufsize]
59+
return ret
5560

5661
def getsockname(self):
5762
"""Return the socket's own address (socket emulation)."""

unit_tests/test_tlslite_bufferedsocket.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,9 @@ def test_flush_with_data_and_multiple_messages(self):
8989
self.raw_sock.sendall.assert_called_once_with(bytearray(b'abcdefg'))
9090

9191
def test_recv(self):
92-
value = mock.Mock()
93-
ret = self.sock.recv(value)
92+
ret = self.sock.recv(10)
9493

95-
self.raw_sock.recv.assert_called_once_with(value)
96-
self.assertIs(ret, self.raw_sock.recv.return_value)
94+
self.raw_sock.recv.assert_called_once_with(4096)
9795

9896
def test_getsockname(self):
9997
ret = self.sock.getsockname()

0 commit comments

Comments
 (0)