From 171ef0146857745a42af38c37298ef4a1b4a6984 Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Thu, 30 Mar 2023 00:03:28 +0300 Subject: [PATCH] Add support for large uploads to HTTPClient --- libraries/HTTPClient/src/HTTPClient.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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); } }