fix(esp_http_client): fix dispatching of finish event condition

This commit updates the condition for dispatching of FINISH event.
With this, FINISH event will be dispatched after complete data is read.

Closes https://github.com/espressif/esp-idf/issues/17437
This commit is contained in:
nilesh.kale
2025-08-29 11:24:54 +05:30
parent 9b14abc1f5
commit e4e2f88566
2 changed files with 4 additions and 4 deletions

View File

@@ -1454,10 +1454,10 @@ esp_err_t esp_http_client_perform(esp_http_client_handle_t client)
if (err != ESP_OK) { if (err != ESP_OK) {
http_dispatch_event(client, HTTP_EVENT_ERROR, esp_transport_get_error_handle(client->transport), 0); http_dispatch_event(client, HTTP_EVENT_ERROR, esp_transport_get_error_handle(client->transport), 0);
http_dispatch_event_to_event_loop(HTTP_EVENT_ERROR, &client, sizeof(esp_http_client_handle_t)); http_dispatch_event_to_event_loop(HTTP_EVENT_ERROR, &client, sizeof(esp_http_client_handle_t));
} } else {
http_dispatch_event(client, HTTP_EVENT_ON_FINISH, NULL, 0); http_dispatch_event(client, HTTP_EVENT_ON_FINISH, NULL, 0);
http_dispatch_event_to_event_loop(HTTP_EVENT_ON_FINISH, &client, sizeof(esp_http_client_handle_t)); http_dispatch_event_to_event_loop(HTTP_EVENT_ON_FINISH, &client, sizeof(esp_http_client_handle_t));
}
client->response->buffer->raw_len = 0; client->response->buffer->raw_len = 0;
if (!http_should_keep_alive(client->parser)) { if (!http_should_keep_alive(client->parser)) {

View File

@@ -40,7 +40,7 @@ typedef enum {
and will be deprecated in future versions esp-idf */ and will be deprecated in future versions esp-idf */
HTTP_EVENT_ON_HEADER, /*!< Occurs when receiving each header sent from the server */ HTTP_EVENT_ON_HEADER, /*!< Occurs when receiving each header sent from the server */
HTTP_EVENT_ON_DATA, /*!< Occurs when receiving data from the server, possibly multiple portions of the packet */ HTTP_EVENT_ON_DATA, /*!< Occurs when receiving data from the server, possibly multiple portions of the packet */
HTTP_EVENT_ON_FINISH, /*!< Occurs when finish a HTTP session */ HTTP_EVENT_ON_FINISH, /*!< Occurs when complete data is received */
HTTP_EVENT_DISCONNECTED, /*!< The connection has been disconnected */ HTTP_EVENT_DISCONNECTED, /*!< The connection has been disconnected */
HTTP_EVENT_REDIRECT, /*!< Intercepting HTTP redirects to handle them manually */ HTTP_EVENT_REDIRECT, /*!< Intercepting HTTP redirects to handle them manually */
} esp_http_client_event_id_t; } esp_http_client_event_id_t;