1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-03 11:52:20 +01:00

Fix buffer corruption in API message encoding with very verbose logging (#9249)

This commit is contained in:
J. Nick Koston
2025-06-28 15:04:42 -05:00
committed by GitHub
parent 30f61b26ff
commit 13d4823db6
4 changed files with 210 additions and 5 deletions

View File

@@ -470,6 +470,10 @@ class APIConnection : public APIServerConnection {
bool sent_ping_{false};
bool service_call_subscription_{false};
bool next_close_ = false;
#ifdef HAS_PROTO_MESSAGE_DUMP
// When true, encode_message_to_buffer will only log, not encode
bool log_only_mode_{false};
#endif
uint8_t ping_retries_{0};
// 8 bytes used, no padding needed
@@ -627,6 +631,10 @@ class APIConnection : public APIServerConnection {
// State for batch buffer allocation
bool batch_first_message_{false};
#ifdef HAS_PROTO_MESSAGE_DUMP
void log_batch_item_(const DeferredBatch::BatchItem &item);
#endif
// Helper function to schedule a deferred message with known message type
bool schedule_message_(EntityBase *entity, MessageCreator creator, uint16_t message_type) {
this->deferred_batch_.add_item(entity, std::move(creator), message_type);