Merge branch 'feat/add_new_client_state_and_update_state_flow_v5.5' into 'release/v5.5'

feat(esp_http_client): added new HTTP state HTTP_STATE_CONNECTING and change state flow (v5.5)

See merge request espressif/esp-idf!41276
This commit is contained in:
Mahavir Jain
2025-09-02 09:14:17 +05:30
2 changed files with 36 additions and 1 deletions
+1 -1
View File
@@ -1773,7 +1773,7 @@ int esp_http_client_write(esp_http_client_handle_t client, const char *buffer, i
esp_err_t esp_http_client_close(esp_http_client_handle_t client)
{
if (client->state >= HTTP_STATE_INIT) {
if (client->state > HTTP_STATE_INIT) {
http_dispatch_event(client, HTTP_EVENT_DISCONNECTED, esp_transport_get_error_handle(client->transport), 0);
http_dispatch_event_to_event_loop(HTTP_EVENT_DISCONNECTED, &client, sizeof(esp_http_client_handle_t));
client->state = HTTP_STATE_INIT;
@@ -186,6 +186,41 @@ TEST_CASE("esp_http_client_set_header() should not return error if header value
esp_http_client_cleanup(client);
}
static int disconnect_event_count = 0;
static esp_err_t disconnect_event_handler(esp_http_client_event_t *evt)
{
if (evt->event_id == HTTP_EVENT_DISCONNECTED) {
disconnect_event_count++;
}
return ESP_OK;
}
TEST_CASE("esp_http_client_close() and cleanup() should not dispatch duplicate disconnect events", "[esp_http_client]")
{
esp_http_client_config_t config = {
.url = "http://httpbin.org/get",
.event_handler = disconnect_event_handler,
};
// Reset event counter
disconnect_event_count = 0;
esp_http_client_handle_t client = esp_http_client_init(&config);
TEST_ASSERT_NOT_NULL(client);
// Close the client first
esp_err_t err = esp_http_client_close(client);
TEST_ASSERT_EQUAL(ESP_OK, err);
// Then cleanup - this should not dispatch another disconnect event
err = esp_http_client_cleanup(client);
TEST_ASSERT_EQUAL(ESP_OK, err);
// Verify that only one disconnect event was dispatched (or none if client was never connected)
TEST_ASSERT_LESS_OR_EQUAL(1, disconnect_event_count);
}
void app_main(void)
{
unity_run_menu();