From d83ed9ebe1d41fffa08efbe36e9f7751a1d65efb Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 13 Aug 2025 23:04:38 -0500 Subject: [PATCH 1/4] Revert "preen" This reverts commit 0207444765f6bebc3daf654cf87bec09d54661b1. --- esphome/components/api/api_connection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index 75c033cc76..fc4bf6b4f2 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -307,7 +307,8 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint8_t mess } // Encode directly into buffer - msg.encode({&shared_buf}); + ProtoWriteBuffer buffer{&shared_buf}; + msg.encode(buffer); // Calculate actual encoded size (not including header that was already added) size_t actual_payload_size = shared_buf.size() - size_before_encode; From 58074e03577432aea96821b18825a8a48e7e5034 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 13 Aug 2025 23:05:12 -0500 Subject: [PATCH 2/4] Revert "preen" This reverts commit 51bf2c35116b6a6494a076a12f9149401253278a. --- esphome/components/api/api_connection.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index fc4bf6b4f2..c8e6480e1e 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -302,8 +302,9 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint8_t mess } else { // Batch message second or later // Add padding for previous message footer + this message header - shared_buf.reserve(size_before_encode + total_calculated_size); - shared_buf.resize(size_before_encode + footer_size + header_padding); + size_t current_size = shared_buf.size(); + shared_buf.reserve(current_size + total_calculated_size); + shared_buf.resize(current_size + footer_size + header_padding); } // Encode directly into buffer From 09fa349349caf7c495755f01971eb84d36824737 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 13 Aug 2025 23:06:23 -0500 Subject: [PATCH 3/4] Revert "Revert "preen"" This reverts commit d83ed9ebe1d41fffa08efbe36e9f7751a1d65efb. --- esphome/components/api/api_connection.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index c8e6480e1e..9557c9943b 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -308,8 +308,7 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint8_t mess } // Encode directly into buffer - ProtoWriteBuffer buffer{&shared_buf}; - msg.encode(buffer); + msg.encode({&shared_buf}); // Calculate actual encoded size (not including header that was already added) size_t actual_payload_size = shared_buf.size() - size_before_encode; From 9bcd6c7a8546d01ad1efd11b16e6209625a5a29d Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 13 Aug 2025 23:07:22 -0500 Subject: [PATCH 4/4] fix --- esphome/components/api/api_connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index 9557c9943b..ced0f489be 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -291,7 +291,6 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint8_t mess // Get buffer size after allocation (which includes header padding) std::vector &shared_buf = conn->parent_->get_shared_buffer_ref(); - size_t size_before_encode = shared_buf.size(); if (is_single || conn->flags_.batch_first_message) { // Single message or first batch message @@ -308,6 +307,7 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint8_t mess } // Encode directly into buffer + size_t size_before_encode = shared_buf.size(); msg.encode({&shared_buf}); // Calculate actual encoded size (not including header that was already added)