diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index 4309b37ceb..e21b93da2f 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -563,10 +563,10 @@ static esp_err_t esp_http_check_response(esp_http_client_handle_t client) break; case HttpStatus_Unauthorized: auth_header = client->auth_header; - http_utils_trim_whitespace(&auth_header); - ESP_LOGI(TAG, "UNAUTHORIZED: %s", auth_header); - client->redirect_counter ++; if (auth_header) { + http_utils_trim_whitespace(&auth_header); + ESP_LOGD(TAG, "UNAUTHORIZED: %s", auth_header); + client->redirect_counter ++; if (http_utils_str_starts_with(auth_header, "Digest") == 0) { ESP_LOGD(TAG, "type = Digest"); client->connection_info.auth_type = HTTP_AUTH_TYPE_DIGEST; @@ -575,7 +575,7 @@ static esp_err_t esp_http_check_response(esp_http_client_handle_t client) client->connection_info.auth_type = HTTP_AUTH_TYPE_BASIC; } else { client->connection_info.auth_type = HTTP_AUTH_TYPE_NONE; - ESP_LOGE(TAG, "Unsupport Auth Type"); + ESP_LOGE(TAG, "This authentication method is not supported: %s", auth_header); break; } @@ -590,6 +590,9 @@ static esp_err_t esp_http_check_response(esp_http_client_handle_t client) client->auth_data->nonce = http_utils_get_string_between(auth_header, "nonce=\"", "\""); client->auth_data->opaque = http_utils_get_string_between(auth_header, "opaque=\"", "\""); client->process_again = 1; + } else { + client->connection_info.auth_type = HTTP_AUTH_TYPE_NONE; + ESP_LOGW(TAG, "This request requires authentication, but does not provide header information for that"); } } return ESP_OK; diff --git a/components/esp_http_client/lib/http_utils.c b/components/esp_http_client/lib/http_utils.c index 2ccc501313..2e65888abc 100644 --- a/components/esp_http_client/lib/http_utils.c +++ b/components/esp_http_client/lib/http_utils.c @@ -63,8 +63,14 @@ char *http_utils_assign_string(char **str, const char *new_str, int len) void http_utils_trim_whitespace(char **str) { - char *end; - char *start = *str; + char *end, *start; + if (str == NULL) { + return; + } + start = *str; + if (start == NULL) { + return; + } // Trim leading space while (isspace((unsigned char)*start)) start ++;