Skip to content

Commit 0adb75b

Browse files
authored
Merge pull request #185 from us3r64/fix/recv_into-self-_buffer
Fix potential socket data read already into self._buffer
2 parents c69b6f2 + e119719 commit 0adb75b

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

adafruit_esp32spi/adafruit_esp32spi_socket.py

+13
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,19 @@ def recv_into(self, buffer, nbytes: int = 0):
113113
num_to_read = len(buffer) if nbytes == 0 else nbytes
114114
num_read = 0
115115
while num_to_read > 0:
116+
# we might have read socket data into the self._buffer with:
117+
# esp32spi_wsgiserver: socket_readline
118+
if len(self._buffer) > 0:
119+
bytes_to_read = min(num_to_read, len(self._buffer))
120+
buffer[num_read : num_read + bytes_to_read] = self._buffer[
121+
:bytes_to_read
122+
]
123+
num_read += bytes_to_read
124+
num_to_read -= bytes_to_read
125+
self._buffer = self._buffer[bytes_to_read:]
126+
# explicitly recheck num_to_read to avoid extra checks
127+
continue
128+
116129
num_avail = self._available()
117130
if num_avail > 0:
118131
last_read_time = time.monotonic()

0 commit comments

Comments
 (0)