From ae26235ebf6025efcfb74088b766832f81b100cc Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Thu, 5 Jun 2025 17:40:12 -0500 Subject: [PATCH] fix(esp_http_client): fix spurious async open error Fix esp_http_client_open() often triggering a spurious HTTP_EVENT_ERROR when is_async=true. Fixes https://github.com/espressif/esp-idf/issues/16075 --- components/esp_http_client/esp_http_client.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index 9929d8bfdf..3b17ec1800 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -1690,11 +1690,17 @@ esp_err_t esp_http_client_open(esp_http_client_handle_t client, int write_len) client->post_len = write_len; esp_err_t err; if ((err = esp_http_client_connect(client)) != ESP_OK) { + if (client->is_async && err == ESP_ERR_HTTP_CONNECTING) { + return ESP_ERR_HTTP_EAGAIN; + } 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)); return err; } if ((err = esp_http_client_request_send(client, write_len)) != ESP_OK) { + if (client->is_async && errno == EAGAIN) { + return ESP_ERR_HTTP_EAGAIN; + } 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)); return err;