Skip to content

Commit 65a1d79

Browse files
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 #16075
1 parent 36a5a71 commit 65a1d79

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

components/esp_http_client/esp_http_client.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,11 +1722,17 @@ esp_err_t esp_http_client_open(esp_http_client_handle_t client, int write_len)
17221722
client->post_len = write_len;
17231723
esp_err_t err;
17241724
if ((err = esp_http_client_connect(client)) != ESP_OK) {
1725+
if (client->is_async && err == ESP_ERR_HTTP_CONNECTING) {
1726+
return ESP_ERR_HTTP_EAGAIN;
1727+
}
17251728
http_dispatch_event(client, HTTP_EVENT_ERROR, esp_transport_get_error_handle(client->transport), 0);
17261729
http_dispatch_event_to_event_loop(HTTP_EVENT_ERROR, &client, sizeof(esp_http_client_handle_t));
17271730
return err;
17281731
}
17291732
if ((err = esp_http_client_request_send(client, write_len)) != ESP_OK) {
1733+
if (client->is_async && errno == EAGAIN) {
1734+
return ESP_ERR_HTTP_EAGAIN;
1735+
}
17301736
http_dispatch_event(client, HTTP_EVENT_ERROR, esp_transport_get_error_handle(client->transport), 0);
17311737
http_dispatch_event_to_event_loop(HTTP_EVENT_ERROR, &client, sizeof(esp_http_client_handle_t));
17321738
return err;

0 commit comments

Comments
 (0)