From 4337a4cd0d30e22104938a4a3e43e9271e857c2d Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 5 Feb 2026 11:23:03 +0100 Subject: [PATCH] fix double prep --- esphome/components/api/api_connection.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index 5149d6d9ac..e4e8333cc7 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -331,9 +331,12 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint8_t mess std::vector &shared_buf = conn->parent_->get_shared_buffer_ref(); if (conn->flags_.batch_first_message) { - // Single message or first batch message - conn->prepare_first_message_buffer(shared_buf, header_padding, total_calculated_size); + // First message - clear flag conn->flags_.batch_first_message = false; + // If buffer not prepped by caller (batch pre-reserves with size == header_padding), prep now + if (shared_buf.size() != header_padding) { + conn->prepare_first_message_buffer(shared_buf, header_padding, total_calculated_size); + } } else { // Batch message second or later // Add padding for previous message footer + this message header