mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-01 18:50:34 +03:00
feat(esp_http_client): detect oversized headers in tx buffer while sending request
When CONFIG_ESP_HTTP_CLIENT_STRICT_HEADER_BUFFER is enabled, esp_http_client_request_send() fails fast when a single request header is larger than buffer_size_tx, instead of silently emitting a truncated request. The condition is reported with a dedicated ESP_ERR_HTTP_HEADER_TOO_LONG error code rather than overloading ESP_ERR_HTTP_WRITE_DATA, so callers can tell a permanent header-sizing failure apart from a transient write error. errno is cleared on this path so the async caller (which maps errno == EAGAIN to "retry later") does not spin retrying a request that can never succeed. Closes https://github.com/espressif/esp-idf/issues/18639 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c2e931b1b1
commit
8c181842f1
@@ -298,6 +298,7 @@ typedef enum {
|
||||
#define ESP_ERR_HTTP_READ_TIMEOUT (ESP_ERR_HTTP_BASE + 11) /*!< HTTP data read timeout */
|
||||
#define ESP_ERR_HTTP_INCOMPLETE_DATA (ESP_ERR_HTTP_BASE + 12) /*!< Incomplete data received, less than Content-Length or last chunk */
|
||||
#define ESP_ERR_HTTP_REDIRECT_DOWNGRADE (ESP_ERR_HTTP_BASE + 13) /*!< HTTPS origin redirected to a non-HTTPS scheme (downgrade blocked) */
|
||||
#define ESP_ERR_HTTP_HEADER_TOO_LONG (ESP_ERR_HTTP_BASE + 14) /*!< A single request header is larger than buffer_size_tx and cannot be sent (only when CONFIG_ESP_HTTP_CLIENT_STRICT_HEADER_BUFFER is enabled) */
|
||||
|
||||
/**
|
||||
* @brief Start a HTTP session
|
||||
@@ -368,6 +369,8 @@ esp_err_t esp_http_client_prepare(esp_http_client_handle_t client);
|
||||
* - ESP_OK on successful
|
||||
* - ESP_FAIL on error
|
||||
* - ESP_ERR_HTTP_WRITE_DATA if write operation fails
|
||||
* - ESP_ERR_HTTP_HEADER_TOO_LONG if a single request header is larger than buffer_size_tx
|
||||
* (only when CONFIG_ESP_HTTP_CLIENT_STRICT_HEADER_BUFFER is enabled)
|
||||
*/
|
||||
esp_err_t esp_http_client_request_send(esp_http_client_handle_t client, int write_len);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user