Commit Graph
22339 Commits
Author SHA1 Message Date
J. Nick Koston 1401e55251 Revert "Revert "[web_server_idf] Remove std::string temporaries from multipart header parsing""
This reverts commit c03e38d688.
2026-02-11 17:04:34 -06:00
J. Nick Koston 464fcb7480 Merge branch 'revert_stack_buffer_multipart' into integration 2026-02-11 17:04:22 -06:00
J. Nick Koston dbe8e39aa9 [web_server_idf] Move multipart upload buffer back to heap to fix httpd stack overflow
The 1460-byte MULTIPART_CHUNK_SIZE buffer was moved from heap to stack
in #13549, but the httpd task stack is only ~4096-5632 bytes. This
causes a stack overflow crash when processing OTA uploads, especially
on configs with BLE components that add additional stack pressure.

Move it back to heap since this buffer is only used during OTA uploads
(not a hot path), so heap fragmentation is not a concern here.

Fixes stack overflow: "A stack overflow in task httpd has been detected"
2026-02-11 17:03:07 -06:00
J. Nick Koston c03e38d688 Revert "[web_server_idf] Remove std::string temporaries from multipart header parsing"
This reverts commit f6bb54486d.
2026-02-11 16:49:51 -06:00
J. Nick Koston a32c038f4b Merge branch 'web_server_idf_multipart_string_removal' into integration 2026-02-11 16:46:31 -06:00
J. Nick Koston f6bb54486d [web_server_idf] Remove std::string temporaries from multipart header parsing
Refactor multipart utility functions to work with const char* + length
instead of std::string to eliminate temporary heap allocations during
header parsing. The original implementations used std::string for
convenience when the OTA multipart support was first added, but these
can be avoided since the multipart parser already provides raw pointers
and lengths in its callbacks.

- extract_header_param: takes (const char*, size_t, const char*, std::string&)
  instead of (const std::string&, const std::string&) -> std::string.
  Assigns directly to destination, avoiding intermediate string construction.
- str_startswith_case_insensitive: takes (const char*, size_t, const char*)
  instead of (const std::string&, const std::string&)
- str_trim: takes (const char*, size_t, std::string&) instead of
  (const std::string&) -> std::string
- Rename stristr to strcasestr_n with explicit haystack length parameter
  to make the relationship to POSIX strcasestr clear and fix a latent
  buffer over-read risk (stristr relied on null-termination which the
  multipart parser does not guarantee for its callback data)
- process_header_ no longer creates a std::string copy of the raw
  parser buffer before calling utility functions

Saves ~350 bytes of flash.
2026-02-11 16:38:26 -06:00
J. Nick Koston 8ef99d3f53 Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 16:09:41 -06:00
J. Nick KostonandCopilot e12ed08487 [wifi] Add CompactString to reduce WiFi scan heap fragmentation (#13472)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-11 21:24:24 +00:00
tomaszduda23andJonathan Swoboda 374cbf4452 [nrf52,zigbee] count sleep time of zigbee thread (#13933)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-11 21:21:10 +00:00
dependabot[bot] 7287a43f2a Bump docker/build-push-action from 6.18.0 to 6.19.1 in /.github/actions/build-image (#13937)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-11 15:12:05 -06:00
J. Nick Koston 19b0d38a43 Merge branch 'compact_string_wifi' into integration 2026-02-11 14:57:38 -06:00
J. Nick Koston 340156945f remove now unused 2026-02-11 14:57:17 -06:00
J. Nick Koston a7c28fb68a Merge branch 'compact_string_wifi' into integration 2026-02-11 14:53:45 -06:00
J. Nick Koston ee0f3a8548 fix pre-existing bug 2026-02-11 14:52:06 -06:00
J. Nick Koston 6a5015b2df debloat 2026-02-11 14:43:24 -06:00
J. Nick Koston 322fe205ab debloat 2026-02-11 14:40:05 -06:00
J. Nick Koston f8115e9b18 Revert "reduce blast"
This reverts commit c1d53d9bad.
2026-02-11 14:39:54 -06:00
J. Nick Koston 0113575e4c reduce some of the StringRef bloat 2026-02-11 14:33:29 -06:00
J. Nick Koston c1d53d9bad reduce blast 2026-02-11 14:02:10 -06:00
J. Nick KostonandJonathan Swoboda 483b7693e1 [api] Fix debug asserts in production code, encode_bool bug, and reduce flash overhead (#13936)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-11 13:57:08 -06:00
J. Nick Koston 18a6e43db8 avoid some conversion overhead 2026-02-11 13:51:49 -06:00
J. Nick Koston 2506831445 contain complexity into wifi 2026-02-11 13:34:18 -06:00
J. Nick Koston 90209e73c0 Merge branch 'dev' into compact_string_wifi 2026-02-11 13:20:38 -06:00
J. Nick Koston 64a98599a6 Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 12:22:26 -06:00
J. Nick Koston fc7e9c8a0c add reverse operators 2026-02-11 12:20:36 -06:00
c9c125aa8d [socket] Devirtualize Socket::ready() and implement working ready() for LWIP raw TCP (#13913)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-11 17:54:58 +00:00
schrob 8d62a6a88a [openthread] Fix warning on old C89 implicit field zero init (#13935) 2026-02-11 11:54:31 -06:00
J. Nick Koston 5d4fcaaf34 Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 11:42:01 -06:00
J. Nick Koston 0ec02d4886 [preferences] Replace per-element erase with clear() in sync() (#13934) 2026-02-11 11:41:53 -06:00
Nate ClarkandClaude Sonnet 4.5 1411868a0b [mqtt.cover] Add option to publish states as JSON payload (#12639)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 11:40:27 -06:00
J. Nick Koston 68c233b3bd Merge branch 'api-optimize-varint-encoding' into integration 2026-02-11 11:37:42 -06:00
J. Nick Koston 8f7e64dd0b Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 11:37:35 -06:00
J. Nick Koston 069c90ec4a [api] Split process_batch_ to reduce stack on single-message hot path (#13907) 2026-02-11 11:34:43 -06:00
J. Nick Koston 242d152edc Use ESPHOME_DEBUG_API guard instead of DEBUG
CI compile tests also define DEBUG, so a dedicated guard is needed.
Enable ESPHOME_DEBUG_API in integration tests via conftest.py.
2026-02-11 11:34:14 -06:00
J. Nick Koston e63308aa33 Use DEBUG guard for asserts instead of custom define
Integration tests already pass -DDEBUG, so no custom define needed.
2026-02-11 11:30:51 -06:00
J. Nick Koston 93ff39709a Enable ESPHOME_DEBUG_API in API integration tests 2026-02-11 11:28:08 -06:00
J. Nick Koston d3e47a5d80 Fix encode_bool to encode actual value when force=true 2026-02-11 11:20:41 -06:00
J. Nick Koston 77d8fc80be Guard asserts with ESPHOME_DEBUG_API to avoid flash overhead 2026-02-11 11:18:50 -06:00
J. Nick Koston fb1c495506 tweaks 2026-02-11 11:12:46 -06:00
J. Nick Koston dc2085cc25 tweaks 2026-02-11 11:11:22 -06:00
J. Nick Koston 930a186168 [web_server_idf] Use constant-time comparison for Basic Auth (#13868) 2026-02-11 11:03:27 -06:00
J. Nick Koston 25baec48ee [api] Optimize varint encoding to eliminate uint64_t widening
Replace ProtoVarInt temporaries with direct uint32_t encoding functions
to avoid unnecessary 64-bit widening on 32-bit architectures (ESP32 Xtensa).

- Add encode_varint_to_buffer() free function for direct buffer encoding
- Replace encode_varint_raw(ProtoVarInt) with uint32_t-native implementation
- Add encode_varint_raw_64() for the few call sites needing 64-bit (BLE)
- Remove unused ProtoVarInt::encode() and encode_to_buffer_unchecked()
- Remove dead null checks from ProtoVarInt::parse()

Net savings: -152 bytes flash on ESP32 IDF.
2026-02-11 11:02:03 -06:00
Djordje Mandic b1f0db9da8 [bl0942] Update reference values (#12867) 2026-02-11 11:10:32 -05:00
J. Nick Koston 923445eb5d [light] Eliminate redundant clamp in LightCall::validate_() (#13923) 2026-02-11 10:06:44 -06:00
J. Nick Koston 86f0012abd Merge remote-tracking branch 'upstream/dev' into integration 2026-02-11 09:56:47 -06:00
J. Nick Koston c82d630cf5 Merge branch 'preferences-clear-on-sync' into integration 2026-02-11 09:53:45 -06:00
J. Nick Koston 185786604b [preferences] Replace per-element erase with clear() in sync()
NVS/FDB write failures are permanent (flash worn out, partition full,
handle invalid). The NVS layer already performs internal garbage
collection during writes, so retrying the same call will always fail
again. Keeping failed entries in the vector leaked memory and forced
a reverse-iterate + per-element erase pattern that generated ~130
bytes of inlined vector move/destroy code for NVSData objects.

Replace with a forward range-for and a single clear() at the end.
2026-02-11 09:48:32 -06:00
tomaszduda23andJ. Nick Koston 9bdae5183c [nrf52,logger] add support for task_log_buffer_size (#13862)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-11 15:43:55 +00:00
J. Nick Koston e0f3d87c17 Merge remote-tracking branch 'tomaszduda23/logger_threading' into integration 2026-02-11 09:18:41 -06:00
J. Nick Koston 8b53f9a649 revert to 0 disabled to test off path 2026-02-11 08:48:22 -06:00