Skip to content

Commit e4583c6

Browse files
committed
Fix potential socket data read already into self._buffer
1 parent c69b6f2 commit e4583c6

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

adafruit_esp32spi/adafruit_esp32spi_socket.py

+11
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,17 @@ 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[:bytes_to_read]
121+
num_read += bytes_to_read
122+
num_to_read -= bytes_to_read
123+
self._buffer = self._buffer[bytes_to_read:]
124+
# explicitly recheck num_to_read to avoid extra checks
125+
continue
126+
116127
num_avail = self._available()
117128
if num_avail > 0:
118129
last_read_time = time.monotonic()

0 commit comments

Comments
 (0)