mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 09:39:10 -04:00
Merge branch 'bugfix/http_client_null_auth_header' into 'master'
esp_http_client: Fixed exception on 401 without Www-Authenticate header See merge request idf/esp-idf!2900
This commit is contained in:
commit
f4b23d1505
@ -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;
|
||||
|
@ -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 ++;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user