Commit Graph

213 Commits

Author SHA1 Message Date
Mahavir Jain 2550272852 fix(esp_http_client): prevent out-of-bounds read in Digest auth
Fixed vulnerability where malicious HTTP servers could trigger OOB reads
by sending empty or very short algorithm fields in WWW-Authenticate headers.

Changes:
- Replace unsafe memcmp() with strcasecmp() for algorithm comparison
- Add algorithm NULL validation at function entry point
- Fix duplicate md5-sess check, add missing SHA-256 check
2025-12-01 18:24:03 +05:30
nilesh.kale 0c5a6473f8 feat(esp_https_ota): Support partial downloading of OTA over single connection
This commit added support to download OTA with partial download feature
over single HTTP connection if server supports persistent connection.
2025-10-27 11:01:47 +05:30
nilesh.kale e4e2f88566 fix(esp_http_client): fix dispatching of finish event condition
This commit updates the condition for dispatching of FINISH event.
With this, FINISH event will be dispatched after complete data is read.

Closes https://github.com/espressif/esp-idf/issues/17437
2025-09-12 10:19:37 +05:30
nilesh.kale 9b14abc1f5 feat(esp_http_client): handle error while reading data from server
This commit updated API esp_http_cleint_perform() to handle error and
dispatched error  event if any error occured whiling reading data from server.
2025-09-12 10:19:09 +05:30
nilesh.kale 97cfde9512 feat(esp_http_client): avoid dispatching of spurious event while closing closes connection
This commit updated the client closing condition to avoid spurious
dispatching of event HTTP_EVENT_DISCONNECTED while closing closeed connection.

Closes https://github.com/espressif/esp-idf/issues/16070
2025-08-14 17:06:32 +05:30
Ashish Sharma b72f3124ba fix(esp_http_client): fix possible double memory free 2025-08-01 15:09:44 +08:00
Mahavir Jain 95699fe5f8 Merge branch 'bugfix/fix_memory_leak_on_http_header_fetch_failure_v5.4' into 'release/v5.4'
fix(esp_http_client): free header in case of ESP_ERR_HTTP_FETCH_HEADER (v5.4)

See merge request espressif/esp-idf!40663
2025-07-25 09:32:48 +05:30
Richard Allen ae26235ebf fix(esp_http_client): fix spurious async open error
Fix esp_http_client_open() often triggering a
spurious HTTP_EVENT_ERROR when is_async=true.

Fixes https://github.com/espressif/esp-idf/issues/16075
2025-07-22 11:37:17 +05:30
Ashish Sharma cfcf66f0b4 fix(esp_http_client): fix memory leak in current_header_value buffer
Fixed memory leak in esp_http_client_cleanup() where current_header_value
buffer was not being freed when ESP_ERR_HTTP_FETCH_HEADER is returned
during header parsing failures.
2025-07-18 12:00:11 +08:00
hrushikesh.bhosale d7b3e3b978 feat(mbedtls): Add configuration to control dynamic buffer strategy in mbedtls
Problem:
1. In low-memory scenarios, the dynamic buffer feature can fail due to memory fragmentation.
2. It requires a contiguous 16KB heap chunk, but continuous allocation and deallocation of
the RX buffer can lead to fragmentation.
3. If another component allocates memory between these operations, it can break up the
available 16KB block, causing allocation failure.

Solution:
1. Introduce configurable strategy for using dynamic buffers in TLS connections.
2. For example, convert RX buffers to static after the TLS handshake.
3. Allow users to select the strategy via a new field in the esp_http_client_cfg_t structure.
4. The strategy can be controlled independently for each TLS session.
2025-06-26 12:22:44 +05:30
wanckl ea03622621 ci(esp32c61): remove c61 support from readme on 5.4 2025-06-17 15:09:40 +08:00
nilesh.kale 10fe93f1c3 fix(esp_http_client): update code format for API
This commit update code format as per IDF standard for API
esp_http_client_get_and_clear_last_tls_error().
2025-05-14 15:25:06 +05:30
Lorenzo Consolaro 5bd8026249 feat(https): Get TLS errors from http client
update PR

update mr

Update components/esp_http_client/esp_http_client.c

Co-authored-by: Nilesh Kale <nilesh.kale@espressif.com>
2025-05-14 15:25:06 +05:30
wuzhenghui 33aca83c63 change(ci): remove esp32c5 from readme since esp32c5 skipped CI build 2025-04-25 17:13:27 +08:00
nilesh.kale 27951298ab fix(esp_http_client): Added test case to verify set header functionality
This commit added testcase to verify esp_http_client_set_header
allows header value as NULL. Setting this NULL will delete the header.

Closes https://github.com/espressif/esp-idf/issues/15714
2025-04-07 11:14:13 +05:30
Mathew Harman bbd57a2204 fix(esp_http_client): fix error return when set_header has value==NULL
Prior to v5.4, headers could be deleted from an HTTP client by calling
esp_http_client_set_header("Header", NULL). This pattern is used by
esp_http_client_set_post_field(NULL, 0), which is the only API usage
that will delete the request body in a persistent connection scenario.
2025-04-07 11:14:13 +05:30
Shu Chen f481174cbd Merge branch 'feat/add_config_to_set_addrfamily_v5.4' into 'release/v5.4'
feat(tcp_transport): add an api to configure the addr family (v5.4)

See merge request espressif/esp-idf!37911
2025-04-01 19:32:14 +08:00
Xu Si Yu db3840e94d feat(tcp_transport): add an api to configure the addr family 2025-03-20 16:07:54 +08:00
Christopher Durand 72d4204a6f fix(esp_http_client): Fix invalid content length header
In case a request with no content is sent after one with the content
length header set the header of the previous request is sent with the
subsequent one.
For instance, an empty GET request after a PUT request will still
indicate the non-zero content length of the previous request.

This is fixed by clearing the content length header when it shouldn't be
set.
2025-03-06 12:18:20 +05:30
nilesh.kale 90d2dbad99 fix(esp_http_client): updated API esp_http_client_get_url to get URL in correct format
This commit updates the API to include the port number in the URL,
which was previously missing.
2025-01-13 11:14:20 +05:30
nilesh.kale 8d8b3fc0a2 fix(esp_http_client): Fix ota failure with openssl server
If the TLS server (e.g., openssl) closes connection with encrypted close-notify alert
then `errno` is not explicitly set on the socket by LwIP stack.
For this scenario, we must rely only on `ERR_TCP_TRANSPORT_CONNECTION_CLOSED_BY_FIN`
return value as the connection close case and do the graceful connection closure.

Closes https://github.com/espressif/esp-idf/issues/14724
2024-10-15 16:37:32 +05:30
nilesh.kale f9961fda62 fix(esp_http_client): added initial argument checking for APIs'
This MR added checks for arguments passed in APIS' of esp_http_client.c
2024-09-27 17:05:04 +05:30
Duco Sebel 73e1085e54 feat(esp_http_client): Add function to delete all headers set by 'esp_http_client_set_header' 2024-09-27 16:57:54 +05:30
Serhii Kulyk c87cb854f3 fix(http): fix invalid content-length header in http get 2024-08-29 00:14:49 +02:00
hrushikesh.bhosale 52cd89698e feat(esp_http_client): Added http method REPORT
Added support http REPORT method and tested it using local server.
Added test case for REPOPRT method in esp_http_client_example.c
The URL(httpbin.org) does not support for /report endpoint.

Closes https://github.com/espressif/esp-idf/issues/14147
2024-07-23 16:43:33 +05:30
wanlei 3cf069c7d8 feat(esp32c61): disable unsupported build test 2024-07-16 16:06:19 +08:00
fbp2m adb307da29 fix: fixed allocating if_name in client context multiple times
Do not allocate client->if_name twice in esp_http_client_init().

Signed-off-by: Harshit Malpani <harshit.malpani@espressif.com>

Closes https://github.com/espressif/esp-idf/pull/13945
2024-06-19 11:39:56 +05:30
Mahavir Jain a3dff04cf3 Merge branch 'bugfix/fix_resetting_redirect_counter' into 'master'
fix: reset redirect counter for using same handler

Closes IDFGH-12636 and IDFGH-12667

See merge request espressif/esp-idf!30395
2024-05-10 12:02:36 +08:00
Harshit Malpani 1ac2ebbeb9 fix: Add config option to set timeout for posting events
Event posting to the event loop should not hinder the working of
HTTP Client or HTTP Server. This commit add a config option to set
the timeout for posting the events to the loop.

Closes https://github.com/espressif/esp-idf/issues/13641
2024-05-08 11:41:05 +05:30
Harshit Malpani 1987f055c9 fix: reset redirect counter for using same handler
Closes https://github.com/espressif/esp-idf/issues/13633
2024-05-07 10:27:23 +05:30
laokaiyao 65b1fd33d3 ci(esp32c5mp): disable the unsupported tests 2024-04-07 12:13:29 +08:00
Harshit Malpani 2814b5a330 Revert "fix(esp_http_client): Call event_handler after header value is received"
This reverts commit 04ac8e43db.

When `http_on_header_event` is called, event_handler is invoked and
then the current header key and header value are freed. In the previous
approach, `http_on_header_event` was called from `http_on_header_value`,
but it lead to an issue where if the value is received in multiple chunks,
then the current header key and value were freed and thus header was not
processed correctly which might result in connection issues. Calling
`http_on_heaher_event` from `http_on_header_field` ensures that the current
header field and value are processed properly

Fixes https://github.com/espressif/esp-idf/issues/13497
Fixes https://github.com/espressif/esp-idf/issues/13097
2024-04-01 13:41:47 +05:30
Marius Vikhammer 1f7c666701 ci(test_apps): limit dependencies for misc test_apps
Only pull in direct dependencies for the test apps, reducing build time
as well making it possible for CI to determine if the test should run or not
when dependencies are changed.
2024-02-18 16:01:58 +08:00
Harshit Malpani bc901c0a3a fix(esp_http_client): Fix http digest auth without qop
Closes https://github.com/espressif/esp-idf/issues/12962
2024-01-23 12:22:35 +05:30
jim 14a9e01931 esp_http_client: Fix reset errno to 0 before call esp_transport_read
Closes https://github.com/espressif/esp-idf/issues/9020
2023-12-22 10:54:40 +08:00
Harshit Malpani 803ad150cf feat(esp_http_client): SHA256 support in digest auth
Added support for using SHA256 algorithm while calculating
digest auth in HTTP client connection

Closes https://github.com/espressif/esp-idf/issues/12383
2023-12-15 11:32:57 +05:30
Shinichi Tanaka c5cb67d49c fix(esp_http_client): correct the typo in the error log string
Corrected the module name in the error log.
("https_ota" to "http_client")
2023-12-14 09:21:24 +09:00
David Čermák 096d1ce1bb Merge branch 'feat/http_client_session_ticket' into 'master'
feat(http_client): Restore TLS session and custom transport

See merge request espressif/esp-idf!26059
2023-12-01 15:11:20 +08:00
David Cermak 96069eef3b feat(http_client): Add support for using custom tcp_transport 2023-11-29 20:48:40 +01:00
David Cermak 7e22a13afe feat(http_client): Add support for TLS session tickets 2023-11-29 20:48:35 +01:00
Harshit Malpani 61d4775027 fix(esp_http_client): Fix esp_http_client async mode
Closes https://github.com/espressif/esp-idf/issues/12358
2023-11-06 13:13:15 +05:30
Harshit Malpani 27681a5073 fix(esp-tls): Use TLS 1.2 and TLS 1.3 simultaneously
This commit fixes the issue with TLS 1.2 connection when TLS 1.3 is
enabled in config.
2023-10-23 16:23:10 +05:30
Harshit Malpani 04ac8e43db fix(esp_http_client): Call event_handler after header value is received 2023-09-25 12:27:54 +05:30
Harshit Malpani 96a8316e71 feat(esp_http_client): Add API to set auth data
This new API can be used to set the authentication data in the client context
when the auth data is received in the custom header

Closes: https://github.com/espressif/esp-idf/pull/12131
2023-09-25 12:27:53 +05:30
Mahavir Jain 2b3418b4a0 Merge branch 'feature/use_ecdsa_perph_while_mutual_auth' into 'master'
feat: ECDSA peripheral while performing http connection with mutual auth

Closes IDF-7390

See merge request espressif/esp-idf!25052
2023-09-11 19:41:21 +08:00
Mahavir Jain bd0eac77b2 Merge branch 'feature/add_support_for_ds_peripheral_on_ota' into 'master'
feat(esp_http_client): Added support for OTA using ds peripheral for TLS

See merge request espressif/esp-idf!25713
2023-09-11 16:36:58 +08:00
Harshit Malpani 692e1a9e61 feat: ECDSA peripheral while performing http connection with mutual auth 2023-09-08 12:22:41 +05:30
David Cermak 7c012e3fe1 fix(http_client): Set common tcp config to both TCP and SSL transport
Foundation transport contained TCP properties for both TCP and SSL
transport, so it was enough to set the TCP connection properties
(keepalive, interface binding) to one transport only. After merging
5778a7c7 we have separate TCP properties for these transports and need
to set the same for both.
This commit also fixes unnecessary allocation of 1 more byte for if_name

Closes https://github.com/espressif/esp-protocols/issues/322
2023-09-07 08:33:44 +02:00
Aditya Patwardhan 4be9bc4e2e feat(esp_http_client): Added support for OTA using ds peripheral for TLS 2023-09-04 09:00:03 +05:30
Armando 7dbd3f6909 feat(ci): Enable p4 example, test_apps and unit tests CI build 2023-08-24 12:51:19 +08:00