From 40935f7ae4410aebcbf1825e89b36e3bd130a22f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 15 Jul 2025 15:43:55 -1000 Subject: [PATCH] Skip API log message calls for unsubscribed log levels (#9514) --- esphome/components/api/api_connection.cpp | 3 --- esphome/components/api/api_connection.h | 1 + esphome/components/api/api_server.cpp | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index f935518dbc..e6f5ea9d80 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -1404,9 +1404,6 @@ void APIConnection::update_command(const UpdateCommandRequest &msg) { #endif bool APIConnection::try_send_log_message(int level, const char *tag, const char *line, size_t message_len) { - if (this->flags_.log_subscription < level) - return false; - // Pre-calculate message size to avoid reallocations uint32_t msg_size = 0; diff --git a/esphome/components/api/api_connection.h b/esphome/components/api/api_connection.h index 0a3cb7b4d4..d7bf9a3858 100644 --- a/esphome/components/api/api_connection.h +++ b/esphome/components/api/api_connection.h @@ -209,6 +209,7 @@ class APIConnection : public APIServerConnection { return static_cast(this->flags_.connection_state) == ConnectionState::CONNECTED || this->is_authenticated(); } + uint8_t get_log_subscription_level() const { return this->flags_.log_subscription; } void on_fatal_error() override; void on_unauthenticated_access() override; void on_no_setup_connection() override; diff --git a/esphome/components/api/api_server.cpp b/esphome/components/api/api_server.cpp index 7b634de003..d95cec2f23 100644 --- a/esphome/components/api/api_server.cpp +++ b/esphome/components/api/api_server.cpp @@ -104,7 +104,7 @@ void APIServer::setup() { return; } for (auto &c : this->clients_) { - if (!c->flags_.remove) + if (!c->flags_.remove && c->get_log_subscription_level() >= level) c->try_send_log_message(level, tag, message, message_len); } });