Skip to content

Commit

Permalink
Merge branch 'fix/http_client_disable_auto_redirect_causes_loop' into…
Browse files Browse the repository at this point in the history
… 'master'

http_client: fixed looping caused when disable_auto_redirect enabled

Closes IDFGH-9243

See merge request espressif/esp-idf!22158
  • Loading branch information
mahavirj committed Feb 24, 2023
2 parents 6c1a544 + 32e78b7 commit 190f4c7
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
13 changes: 9 additions & 4 deletions components/esp_http_client/esp_http_client.c
Expand Up @@ -861,7 +861,12 @@ esp_err_t esp_http_client_set_redirection(esp_http_client_handle_t client)
return ESP_ERR_INVALID_ARG;
}
ESP_LOGD(TAG, "Redirect to %s", client->location);
return esp_http_client_set_url(client, client->location);
esp_err_t err = esp_http_client_set_url(client, client->location);
if (err == ESP_OK) {
client->redirect_counter ++;
client->process_again = 1; // used only in the blocking mode (when esp_http_client_perform() is called)
}
return err;
}

static esp_err_t esp_http_check_response(esp_http_client_handle_t client)
Expand All @@ -882,10 +887,10 @@ static esp_err_t esp_http_check_response(esp_http_client_handle_t client)
if (client->disable_auto_redirect) {
http_dispatch_event(client, HTTP_EVENT_REDIRECT, NULL, 0);
} else {
ESP_ERROR_CHECK(esp_http_client_set_redirection(client));
if (esp_http_client_set_redirection(client) != ESP_OK){
return ESP_FAIL;
};
}
client->redirect_counter ++;
client->process_again = 1;
break;
case HttpStatus_Unauthorized:
esp_http_client_add_auth(client);
Expand Down
1 change: 1 addition & 0 deletions components/esp_http_client/include/esp_http_client.h
Expand Up @@ -537,6 +537,7 @@ esp_http_client_transport_t esp_http_client_get_transport_type(esp_http_client_h
* @brief Set redirection URL.
* When received the 30x code from the server, the client stores the redirect URL provided by the server.
* This function will set the current URL to redirect to enable client to execute the redirection request.
* When `disable_auto_redirect` is set, the client will not call this function but the event `HTTP_EVENT_REDIRECT` will be dispatched giving the user contol over the redirection event.
*
* @param[in] client The esp_http_client handle
*
Expand Down

0 comments on commit 190f4c7

Please sign in to comment.