Răsfoiți Sursa

esp_http_client: Fix HEAD request will affect the all next HTTP requests unless we close the HTTP request

Closes https://github.com/espressif/esp-idf/issues/7777
yuanjm 4 ani în urmă
părinte
comite
cbfffc7269
1 a modificat fișierele cu 7 adăugiri și 0 ștergeri
  1. 7 0
      components/esp_http_client/esp_http_client.c

+ 7 - 0
components/esp_http_client/esp_http_client.c

@@ -258,6 +258,13 @@ static int http_on_headers_complete(http_parser *parser)
     client->response->data_process = 0;
     ESP_LOGD(TAG, "http_on_headers_complete, status=%d, offset=%d, nread=%d", parser->status_code, client->response->data_offset, parser->nread);
     client->state = HTTP_STATE_RES_COMPLETE_HEADER;
+    if (client->connection_info.method == HTTP_METHOD_HEAD) {
+        /* In a HTTP_RESPONSE parser returning '1' from on_headers_complete will tell the
+           parser that it should not expect a body. This is used when receiving a response
+           to a HEAD request which may contain 'Content-Length' or 'Transfer-Encoding: chunked'
+           headers that indicate the presence of a body.*/
+        return 1;
+    }
     return 0;
 }