From bffeb8705cccf05a36d0337c3931e8420626ef55 Mon Sep 17 00:00:00 2001 From: Shubham Kulkarni Date: Wed, 30 Sep 2020 19:06:13 +0530 Subject: [PATCH] esp_http_client: Skip check for redirection counter if status code is success. Set disable_auto_redirect in esp_http_client example to validate this condition in CI --- components/esp_http_client/esp_http_client.c | 3 +++ components/esp_http_client/include/esp_http_client.h | 4 ++++ .../protocols/esp_http_client/main/esp_http_client_example.c | 1 + 3 files changed, 8 insertions(+) diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index b3e63d0ec7..d6eb3d13cd 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -656,6 +656,9 @@ esp_err_t esp_http_client_set_redirection(esp_http_client_handle_t client) static esp_err_t esp_http_check_response(esp_http_client_handle_t client) { + if (client->response->status_code >= HttpStatus_Ok && client->response->status_code < HttpStatus_MultipleChoices) { + return ESP_OK; + } if (client->redirect_counter >= client->max_redirection_count || client->disable_auto_redirect) { ESP_LOGE(TAG, "Error, reach max_redirection_count count=%d", client->redirect_counter); return ESP_ERR_HTTP_MAX_REDIRECT; diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index 8d9243a0ba..82fe6a2687 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -128,7 +128,11 @@ typedef struct { * Enum for the HTTP status codes. */ typedef enum { + /* 2xx - Success */ + HttpStatus_Ok = 200, + /* 3xx - Redirection */ + HttpStatus_MultipleChoices = 300, HttpStatus_MovedPermanently = 301, HttpStatus_Found = 302, HttpStatus_TemporaryRedirect = 307, diff --git a/examples/protocols/esp_http_client/main/esp_http_client_example.c b/examples/protocols/esp_http_client/main/esp_http_client_example.c index fc2485cce5..a4a76ee368 100644 --- a/examples/protocols/esp_http_client/main/esp_http_client_example.c +++ b/examples/protocols/esp_http_client/main/esp_http_client_example.c @@ -81,6 +81,7 @@ static void http_rest_with_url(void) esp_http_client_config_t config = { .url = "http://httpbin.org/get", .event_handler = _http_event_handler, + .disable_auto_redirect = true, }; esp_http_client_handle_t client = esp_http_client_init(&config);