[Bug pyserial:185] SocketSerial.read() never returns data when timeout==0
diff --git a/serial/urlhandler/protocol_socket.py b/serial/urlhandler/protocol_socket.py
index e8da201..d0979c7 100644
--- a/serial/urlhandler/protocol_socket.py
+++ b/serial/urlhandler/protocol_socket.py
@@ -148,13 +148,11 @@
timeout = time.time() + self._timeout
else:
timeout = None
- while len(data) < size and (timeout is None or time.time() < timeout):
+ while len(data) < size:
try:
# an implementation with internal buffer would be better
# performing...
- t = time.time()
block = self._socket.recv(size - len(data))
- duration = time.time() - t
if block:
data.extend(block)
else:
@@ -167,6 +165,8 @@
except socket.error as e:
# connection fails -> terminate loop
raise SerialException('connection failed (%s)' % e)
+ if timeout is not None and time.time() > timeout:
+ break
return bytes(data)
def write(self, data):