diff --git a/libraries/HTTPClient/src/HTTPClient.cpp b/libraries/HTTPClient/src/HTTPClient.cpp index 4982503a7fd..6f65a1833db 100644 --- a/libraries/HTTPClient/src/HTTPClient.cpp +++ b/libraries/HTTPClient/src/HTTPClient.cpp @@ -619,7 +619,21 @@ int HTTPClient::sendRequest(const char * type, uint8_t * payload, size_t size) // send Payload if needed if(payload && size > 0) { - if(_client->write(&payload[0], size) != size) { + size_t sent_bytes = 0; + while(sent_bytes < size){ + size_t sent = _client->write(&payload[sent_bytes], size - sent_bytes); + if (sent == 0){ + log_w("Failed to send chunk! Lets wait a bit"); + delay(100); + sent = _client->write(&payload[sent_bytes], size - sent_bytes); + if (sent == 0){ + log_e("Failed to send chunk!"); + break; + } + } + sent_bytes += sent; + } + if(sent_bytes != size){ return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED); } }