diff --git a/src/TinyGsmClientA6.h b/src/TinyGsmClientA6.h index 9934396..ae655bf 100644 --- a/src/TinyGsmClientA6.h +++ b/src/TinyGsmClientA6.h @@ -136,7 +136,8 @@ public: virtual int read(uint8_t *buf, size_t size) { TINY_GSM_YIELD(); size_t cnt = 0; - while (cnt < size) { + uint32_t _startMillis = millis(); + while (cnt < size && millis() - _startMillis < _timeout) { size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); diff --git a/src/TinyGsmClientESP8266.h b/src/TinyGsmClientESP8266.h index de84295..5df1ca8 100644 --- a/src/TinyGsmClientESP8266.h +++ b/src/TinyGsmClientESP8266.h @@ -133,7 +133,8 @@ public: virtual int read(uint8_t *buf, size_t size) { TINY_GSM_YIELD(); size_t cnt = 0; - while (cnt < size) { + uint32_t _startMillis = millis(); + while (cnt < size && millis() - _startMillis < _timeout) { size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); diff --git a/src/TinyGsmClientM590.h b/src/TinyGsmClientM590.h index 787e9b6..b15ef72 100644 --- a/src/TinyGsmClientM590.h +++ b/src/TinyGsmClientM590.h @@ -134,7 +134,8 @@ public: virtual int read(uint8_t *buf, size_t size) { TINY_GSM_YIELD(); size_t cnt = 0; - while (cnt < size) { + uint32_t _startMillis = millis(); + while (cnt < size && millis() - _startMillis < _timeout) { size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk);