From 5f6fd238b6fed8cb5e0acbd147e8c707b3a469b8 Mon Sep 17 00:00:00 2001 From: Aidan Cyr Date: Fri, 29 Nov 2019 14:17:51 +1100 Subject: [PATCH] fix: esp_http_client and esp_https_ota can follow 307 Redirects Closes https://github.com/espressif/esp-idf/pull/4431 --- components/esp_http_client/esp_http_client.c | 1 + components/esp_http_client/include/esp_http_client.h | 1 + components/esp_https_ota/src/esp_https_ota.c | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index 517e95b96..0f8d2a2e8 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -657,6 +657,7 @@ static esp_err_t esp_http_check_response(esp_http_client_handle_t client) switch (client->response->status_code) { case HttpStatus_MovedPermanently: case HttpStatus_Found: + case HttpStatus_TemporaryRedirect: esp_http_client_set_redirection(client); client->redirect_counter ++; client->process_again = 1; diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index 2f35fc975..e26849eca 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -131,6 +131,7 @@ typedef enum { /* 3xx - Redirection */ HttpStatus_MovedPermanently = 301, HttpStatus_Found = 302, + HttpStatus_TemporaryRedirect = 307, /* 4xx - Client Error */ HttpStatus_Unauthorized = 401 diff --git a/components/esp_https_ota/src/esp_https_ota.c b/components/esp_https_ota/src/esp_https_ota.c index a6c993e0c..c5c80c551 100644 --- a/components/esp_https_ota/src/esp_https_ota.c +++ b/components/esp_https_ota/src/esp_https_ota.c @@ -47,6 +47,7 @@ static bool process_again(int status_code) switch (status_code) { case HttpStatus_MovedPermanently: case HttpStatus_Found: + case HttpStatus_TemporaryRedirect: case HttpStatus_Unauthorized: return true; default: @@ -58,7 +59,7 @@ static bool process_again(int status_code) static esp_err_t _http_handle_response_code(esp_http_client_handle_t http_client, int status_code) { esp_err_t err; - if (status_code == HttpStatus_MovedPermanently || status_code == HttpStatus_Found) { + if (status_code == HttpStatus_MovedPermanently || status_code == HttpStatus_Found || status_code == HttpStatus_TemporaryRedirect) { err = esp_http_client_set_redirection(http_client); if (err != ESP_OK) { ESP_LOGE(TAG, "URL redirection Failed");