diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index dea646c39c..64141e48c0 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -251,6 +251,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; }