소스 검색

esp_http_client: Fix issue when response headers have empty value

Closes: https://github.com/espressif/esp-idf/issues/5553
Shubham Kulkarni 5 년 전
부모
커밋
bb8981903e
3개의 변경된 파일8개의 추가작업 그리고 8개의 파일을 삭제
  1. 5 5
      components/esp_http_client/esp_http_client.c
  2. 2 2
      components/esp_http_client/lib/http_header.c
  3. 1 1
      components/esp_http_client/lib/http_utils.c

+ 5 - 5
components/esp_http_client/esp_http_client.c

@@ -434,12 +434,12 @@ static esp_err_t _set_config(esp_http_client_handle_t client, const esp_http_cli
     }
 
     if (config->transport_type == HTTP_TRANSPORT_OVER_SSL) {
-        http_utils_assign_string(&client->connection_info.scheme, "https", 0);
+        http_utils_assign_string(&client->connection_info.scheme, "https", -1);
         if (client->connection_info.port == 0) {
             client->connection_info.port = DEFAULT_HTTPS_PORT;
         }
     } else {
-        http_utils_assign_string(&client->connection_info.scheme, "http", 0);
+        http_utils_assign_string(&client->connection_info.scheme, "http", -1);
         if (client->connection_info.port == 0) {
             client->connection_info.port = DEFAULT_HTTP_PORT;
         }
@@ -783,10 +783,10 @@ esp_err_t esp_http_client_set_url(esp_http_client_handle_t client, const char *u
             if (password) {
                 *password = 0;
                 password ++;
-                http_utils_assign_string(&client->connection_info.password, password, 0);
+                http_utils_assign_string(&client->connection_info.password, password, -1);
                 HTTP_MEM_CHECK(TAG, client->connection_info.password, return ESP_ERR_NO_MEM);
             }
-            http_utils_assign_string(&client->connection_info.username, username, 0);
+            http_utils_assign_string(&client->connection_info.username, username, -1);
             HTTP_MEM_CHECK(TAG, client->connection_info.username, return ESP_ERR_NO_MEM);
             free(user_info);
         } else {
@@ -798,7 +798,7 @@ esp_err_t esp_http_client_set_url(esp_http_client_handle_t client, const char *u
     if (purl.field_data[UF_PATH].len) {
         http_utils_assign_string(&client->connection_info.path, url + purl.field_data[UF_PATH].off, purl.field_data[UF_PATH].len);
     } else {
-        http_utils_assign_string(&client->connection_info.path, "/", 0);
+        http_utils_assign_string(&client->connection_info.path, "/", -1);
     }
     HTTP_MEM_CHECK(TAG, client->connection_info.path, return ESP_ERR_NO_MEM);
 

+ 2 - 2
components/esp_http_client/lib/http_header.c

@@ -86,10 +86,10 @@ static esp_err_t http_header_new_item(http_header_handle_t header, const char *k
 
     item = calloc(1, sizeof(http_header_item_t));
     HTTP_MEM_CHECK(TAG, item, return ESP_ERR_NO_MEM);
-    http_utils_assign_string(&item->key, key, 0);
+    http_utils_assign_string(&item->key, key, -1);
     HTTP_MEM_CHECK(TAG, item->key, goto _header_new_item_exit);
     http_utils_trim_whitespace(&item->key);
-    http_utils_assign_string(&item->value, value, 0);
+    http_utils_assign_string(&item->value, value, -1);
     HTTP_MEM_CHECK(TAG, item->value, goto _header_new_item_exit);
     http_utils_trim_whitespace(&item->value);
     STAILQ_INSERT_TAIL(header, item, next);

+ 1 - 1
components/esp_http_client/lib/http_utils.c

@@ -45,7 +45,7 @@ char *http_utils_assign_string(char **str, const char *new_str, int len)
         return NULL;
     }
     char *old_str = *str;
-    if (l <= 0) {
+    if (l < 0) {
         l = strlen(new_str);
     }
     if (old_str) {