diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 99080ef42..183c51616 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -677,9 +677,20 @@ int HTTPClient::sendRequest(const char * type, const uint8_t * payload, size_t s } // send Payload if needed - if(payload && size > 0) { - if(_client->write(&payload[0], size) != size) { - return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED); + if (payload && size > 0) { + size_t byteswritten = 0; + const uint8_t *p = payload; + while (byteswritten < size) { + int written; + int towrite = std::min((int)size, (int)HTTP_TCP_BUFFER_SIZE); + written = _client->write(p, towrite); + if (written < 0) { + return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED); + } else if (written == 0) { + return returnError(HTTPC_ERROR_CONNECTION_LOST); + } + byteswritten += written; + size -= written; } }