}
client->request->buffer->data[wlen] = 0;
ESP_LOGD(TAG, "Write header[%d]: %s", header_index, client->request->buffer->data);
- if (transport_write(client->transport, client->request->buffer->data, wlen, client->timeout_ms) <= 0) {
- ESP_LOGE(TAG, "Error write request");
- esp_http_client_close(client);
- return ESP_ERR_HTTP_WRITE_DATA;
+
+ int widx = 0, wret = 0;
+ while (wlen > 0) {
+ wret = transport_write(client->transport, client->request->buffer->data + widx, wlen, client->timeout_ms);
+ if (wret <= 0) {
+ ESP_LOGE(TAG, "Error write request");
+ esp_http_client_close(client);
+ return ESP_ERR_HTTP_WRITE_DATA;
+ }
+ widx += wret;
+ wlen -= wret;
}
wlen = client->buffer_size;
}
if (client->state < HTTP_STATE_REQ_COMPLETE_HEADER) {
return ESP_FAIL;
}
- int need_write;
+
int wlen = 0, widx = 0;
while (len > 0) {
- need_write = len;
- if (need_write > client->buffer_size) {
- need_write = client->buffer_size;
- }
- wlen = transport_write(client->transport, buffer + widx, need_write, client->timeout_ms);
+ wlen = transport_write(client->transport, buffer + widx, len, client->timeout_ms);
if (wlen <= 0) {
return wlen;
}