diff --git a/src/TinyGsmClientA6.h b/src/TinyGsmClientA6.h index ab37837..af96627 100644 --- a/src/TinyGsmClientA6.h +++ b/src/TinyGsmClientA6.h @@ -125,8 +125,7 @@ public: virtual int read(uint8_t *buf, size_t size) { TINY_GSM_YIELD(); size_t cnt = 0; - uint32_t _startMillis = millis(); - while (cnt < size && millis() - _startMillis < _timeout) { + while (cnt < size && sock_connected) { size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); @@ -135,9 +134,8 @@ public: continue; } // TODO: Read directly into user buffer? - if (!rx.size() && sock_connected) { + if (!rx.size()) { at->maintain(); - //break; } } return cnt; diff --git a/src/TinyGsmClientESP8266.h b/src/TinyGsmClientESP8266.h index fa75abe..6f5d7b8 100644 --- a/src/TinyGsmClientESP8266.h +++ b/src/TinyGsmClientESP8266.h @@ -122,8 +122,7 @@ public: virtual int read(uint8_t *buf, size_t size) { TINY_GSM_YIELD(); size_t cnt = 0; - uint32_t _startMillis = millis(); - while (cnt < size && millis() - _startMillis < _timeout) { + while (cnt < size && sock_connected) { size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); @@ -132,9 +131,8 @@ public: continue; } // TODO: Read directly into user buffer? - if (!rx.size() && sock_connected) { + if (!rx.size()) { at->maintain(); - //break; } } return cnt; diff --git a/src/TinyGsmClientM590.h b/src/TinyGsmClientM590.h index b2eb97d..877964e 100644 --- a/src/TinyGsmClientM590.h +++ b/src/TinyGsmClientM590.h @@ -122,8 +122,7 @@ public: virtual int read(uint8_t *buf, size_t size) { TINY_GSM_YIELD(); size_t cnt = 0; - uint32_t _startMillis = millis(); - while (cnt < size && millis() - _startMillis < _timeout) { + while (cnt < size && sock_connected) { size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); @@ -132,9 +131,8 @@ public: continue; } // TODO: Read directly into user buffer? - if (!rx.size() && sock_connected) { + if (!rx.size()) { at->maintain(); - //break; } } return cnt; diff --git a/src/TinyGsmClientM95.h b/src/TinyGsmClientM95.h index 1b9e869..404ddfa 100644 --- a/src/TinyGsmClientM95.h +++ b/src/TinyGsmClientM95.h @@ -137,7 +137,7 @@ public: // TODO: Read directly into user buffer? at->maintain(); if (sock_available > 0) { - at->modemRead(rx.free(), mux); + sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux); } else { break; } diff --git a/src/TinyGsmClientMC60.h b/src/TinyGsmClientMC60.h index 265cd4b..c2b5226 100644 --- a/src/TinyGsmClientMC60.h +++ b/src/TinyGsmClientMC60.h @@ -141,7 +141,7 @@ public: // TODO: Read directly into user buffer? at->maintain(); if (sock_available > 0) { - at->modemRead(rx.free(), mux); + sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux); } else { break; } diff --git a/src/TinyGsmClientSIM800.h b/src/TinyGsmClientSIM800.h index 24fcacb..122a5bb 100644 --- a/src/TinyGsmClientSIM800.h +++ b/src/TinyGsmClientSIM800.h @@ -150,7 +150,7 @@ public: // TODO: Read directly into user buffer? at->maintain(); if (sock_available > 0) { - at->modemRead(rx.free(), mux); + sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux); } else { break; }