From f9ffd134df87dddbb411623bfafbf39348f13b4b Mon Sep 17 00:00:00 2001 From: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com> Date: Mon, 12 Jan 2026 14:10:15 -0500 Subject: [PATCH] [packet_transport] Fix packet size check to account for round4 padding (#13165) Co-authored-by: Claude Opus 4.5 --- esphome/components/packet_transport/packet_transport.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/esphome/components/packet_transport/packet_transport.cpp b/esphome/components/packet_transport/packet_transport.cpp index 4a53ab110b..cefe9a604e 100644 --- a/esphome/components/packet_transport/packet_transport.cpp +++ b/esphome/components/packet_transport/packet_transport.cpp @@ -274,7 +274,7 @@ void PacketTransport::flush_() { void PacketTransport::add_binary_data_(uint8_t key, const char *id, bool data) { auto len = 1 + 1 + 1 + strlen(id); - if (len + this->header_.size() + this->data_.size() > this->get_max_packet_size()) { + if (round4(this->header_.size()) + round4(this->data_.size() + len) > this->get_max_packet_size()) { this->flush_(); this->init_data_(); } @@ -289,7 +289,7 @@ void PacketTransport::add_data_(uint8_t key, const char *id, float data) { void PacketTransport::add_data_(uint8_t key, const char *id, uint32_t data) { auto len = 4 + 1 + 1 + strlen(id); - if (len + this->header_.size() + this->data_.size() > this->get_max_packet_size()) { + if (round4(this->header_.size()) + round4(this->data_.size() + len) > this->get_max_packet_size()) { this->flush_(); this->init_data_(); }