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
This commit is contained in:
Shubham Kulkarni 2020-09-30 19:06:13 +05:30
parent 18a1bc9e7f
commit b951b5adec
3 changed files with 8 additions and 0 deletions

View File

@ -664,6 +664,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;

View File

@ -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,

View File

@ -124,6 +124,7 @@ static void http_rest_with_url(void)
.query = "esp",
.event_handler = _http_event_handler,
.user_data = local_response_buffer, // Pass address of local buffer to get response
.disable_auto_redirect = true,
};
esp_http_client_handle_t client = esp_http_client_init(&config);