From d602a2e5e4080d84c4fb2929c4dda5a5e10b7c9b Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 26 Jan 2026 08:44:06 -1000 Subject: [PATCH] compile tmie safety at higheer level --- esphome/components/api/api_connection.h | 4 +++- esphome/components/api/api_frame_helper.cpp | 6 +++--- esphome/components/api/api_frame_helper.h | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/esphome/components/api/api_connection.h b/esphome/components/api/api_connection.h index ceaba5ddaf..8d74533cfb 100644 --- a/esphome/components/api/api_connection.h +++ b/esphome/components/api/api_connection.h @@ -282,7 +282,9 @@ class APIConnection final : public APIServerConnection { const char *get_name() const { return this->helper_->get_client_name(); } /// Get peer name (IP address) into caller-provided buffer, returns buf for convenience - const char *get_peername_to(char *buf) const { return this->helper_->get_peername_to(buf); } + const char *get_peername_to(std::span buf) const { + return this->helper_->get_peername_to(buf); + } protected: // Helper function to handle authentication completion diff --git a/esphome/components/api/api_frame_helper.cpp b/esphome/components/api/api_frame_helper.cpp index 463bfb5e7b..e432a976b0 100644 --- a/esphome/components/api/api_frame_helper.cpp +++ b/esphome/components/api/api_frame_helper.cpp @@ -245,13 +245,13 @@ APIError APIFrameHelper::try_send_tx_buf_() { return APIError::OK; // All buffers sent successfully } -const char *APIFrameHelper::get_peername_to(char *buf) const { +const char *APIFrameHelper::get_peername_to(std::span buf) const { if (this->socket_) { - this->socket_->getpeername_to(std::span(buf, socket::SOCKADDR_STR_LEN)); + this->socket_->getpeername_to(buf); } else { buf[0] = '\0'; } - return buf; + return buf.data(); } APIError APIFrameHelper::init_common_() { diff --git a/esphome/components/api/api_frame_helper.h b/esphome/components/api/api_frame_helper.h index 279a2ca066..03f3814bb9 100644 --- a/esphome/components/api/api_frame_helper.h +++ b/esphome/components/api/api_frame_helper.h @@ -92,7 +92,7 @@ class APIFrameHelper { const char *get_client_name() const { return this->client_name_; } // Get client peername/IP into caller-provided buffer (fetches on-demand from socket) // Returns pointer to buf for convenience in printf-style calls - const char *get_peername_to(char *buf) const; + const char *get_peername_to(std::span buf) const; // Set client name from buffer with length (truncates if needed) void set_client_name(const char *name, size_t len) { size_t copy_len = std::min(len, sizeof(this->client_name_) - 1);