From 723e22341ff466f14359c4919a4ddd827b69d003 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 27 May 2025 15:20:44 -0500 Subject: [PATCH 1/2] guards --- esphome/components/socket/bsd_sockets_impl.cpp | 7 +++++++ esphome/components/socket/lwip_sockets_impl.cpp | 7 +++++++ esphome/components/socket/socket.cpp | 2 +- esphome/components/socket/socket.h | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/esphome/components/socket/bsd_sockets_impl.cpp b/esphome/components/socket/bsd_sockets_impl.cpp index 88f78b0fcd..d32c058d0b 100644 --- a/esphome/components/socket/bsd_sockets_impl.cpp +++ b/esphome/components/socket/bsd_sockets_impl.cpp @@ -42,6 +42,7 @@ std::string format_sockaddr(const struct sockaddr_storage &storage) { class BSDSocketImpl : public Socket { public: BSDSocketImpl(int fd, bool monitor_loop = false) : fd_(fd) { +#ifdef USE_SOCKET_SELECT_SUPPORT // Register new socket with the application for select() if monitoring requested if (monitor_loop && fd_ >= 0) { // Only set loop_monitored_ to true if registration succeeds @@ -49,6 +50,10 @@ class BSDSocketImpl : public Socket { } else { loop_monitored_ = false; } +#else + // Without select support, ignore monitor_loop parameter + (void) monitor_loop; +#endif } ~BSDSocketImpl() override { if (!closed_) { @@ -75,10 +80,12 @@ class BSDSocketImpl : public Socket { int bind(const struct sockaddr *addr, socklen_t addrlen) override { return ::bind(fd_, addr, addrlen); } int close() override { if (!closed_) { +#ifdef USE_SOCKET_SELECT_SUPPORT // Unregister from select() before closing if monitored if (loop_monitored_) { App.unregister_socket_fd(fd_); } +#endif int ret = ::close(fd_); closed_ = true; return ret; diff --git a/esphome/components/socket/lwip_sockets_impl.cpp b/esphome/components/socket/lwip_sockets_impl.cpp index 83c487e38c..ec020c3ac5 100644 --- a/esphome/components/socket/lwip_sockets_impl.cpp +++ b/esphome/components/socket/lwip_sockets_impl.cpp @@ -35,6 +35,7 @@ std::string format_sockaddr(const struct sockaddr_storage &storage) { class LwIPSocketImpl : public Socket { public: LwIPSocketImpl(int fd, bool monitor_loop = false) : fd_(fd) { +#ifdef USE_SOCKET_SELECT_SUPPORT // Register new socket with the application for select() if monitoring requested if (monitor_loop && fd_ >= 0) { // Only set loop_monitored_ to true if registration succeeds @@ -42,6 +43,10 @@ class LwIPSocketImpl : public Socket { } else { loop_monitored_ = false; } +#else + // Without select support, ignore monitor_loop parameter + (void) monitor_loop; +#endif } ~LwIPSocketImpl() override { if (!closed_) { @@ -68,10 +73,12 @@ class LwIPSocketImpl : public Socket { int bind(const struct sockaddr *addr, socklen_t addrlen) override { return lwip_bind(fd_, addr, addrlen); } int close() override { if (!closed_) { +#ifdef USE_SOCKET_SELECT_SUPPORT // Unregister from select() before closing if monitored if (loop_monitored_) { App.unregister_socket_fd(fd_); } +#endif int ret = lwip_close(fd_); closed_ = true; return ret; diff --git a/esphome/components/socket/socket.cpp b/esphome/components/socket/socket.cpp index 704f326080..1c8e72b8fd 100644 --- a/esphome/components/socket/socket.cpp +++ b/esphome/components/socket/socket.cpp @@ -12,12 +12,12 @@ namespace socket { Socket::~Socket() {} bool Socket::ready() const { +#ifdef USE_SOCKET_SELECT_SUPPORT if (!loop_monitored_) { // Non-monitored sockets always return true (assume data may be available) return true; } -#ifdef USE_SOCKET_SELECT_SUPPORT // For loop-monitored sockets, check with the Application's select() results int fd = this->get_fd(); if (fd < 0) { diff --git a/esphome/components/socket/socket.h b/esphome/components/socket/socket.h index 1a2bb96a59..8f0d28362e 100644 --- a/esphome/components/socket/socket.h +++ b/esphome/components/socket/socket.h @@ -59,7 +59,9 @@ class Socket { bool ready() const; protected: +#ifdef USE_SOCKET_SELECT_SUPPORT bool loop_monitored_{false}; ///< Whether this socket is monitored by the event loop +#endif }; /// Create a socket of the given domain, type and protocol. From ce4b20b06714664640d4dc4c17b2c0e2917271c8 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 27 May 2025 15:26:55 -0500 Subject: [PATCH 2/2] fi xhost --- esphome/core/application.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/esphome/core/application.h b/esphome/core/application.h index 2db5b8d288..db5be1f7f7 100644 --- a/esphome/core/application.h +++ b/esphome/core/application.h @@ -10,6 +10,10 @@ #include "esphome/core/preferences.h" #include "esphome/core/scheduler.h" +#ifdef USE_SOCKET_SELECT_SUPPORT +#include +#endif + #ifdef USE_BINARY_SENSOR #include "esphome/components/binary_sensor/binary_sensor.h" #endif