From 52cc24880c3d210249bf7a4350394d4030c13167 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 1 Mar 2026 14:06:39 -1000 Subject: [PATCH] guards --- esphome/components/socket/bsd_sockets_impl.cpp | 1 + esphome/components/socket/lwip_sockets_impl.cpp | 1 + esphome/components/socket/socket.cpp | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/esphome/components/socket/bsd_sockets_impl.cpp b/esphome/components/socket/bsd_sockets_impl.cpp index ac4083ae2d..824a4bea45 100644 --- a/esphome/components/socket/bsd_sockets_impl.cpp +++ b/esphome/components/socket/bsd_sockets_impl.cpp @@ -34,6 +34,7 @@ int BSDSocketImpl::close() { #ifdef USE_LWIP_FAST_SELECT if (this->loop_monitored_) { App.unregister_socket(this->cached_sock_); + this->cached_sock_ = nullptr; } #else if (this->loop_monitored_) { diff --git a/esphome/components/socket/lwip_sockets_impl.cpp b/esphome/components/socket/lwip_sockets_impl.cpp index 810e6b090d..4c68da2aaf 100644 --- a/esphome/components/socket/lwip_sockets_impl.cpp +++ b/esphome/components/socket/lwip_sockets_impl.cpp @@ -34,6 +34,7 @@ int LwIPSocketImpl::close() { #ifdef USE_LWIP_FAST_SELECT if (this->loop_monitored_) { App.unregister_socket(this->cached_sock_); + this->cached_sock_ = nullptr; } #else if (this->loop_monitored_) { diff --git a/esphome/components/socket/socket.cpp b/esphome/components/socket/socket.cpp index 3e34b7c0bf..54111892a0 100644 --- a/esphome/components/socket/socket.cpp +++ b/esphome/components/socket/socket.cpp @@ -12,7 +12,7 @@ namespace esphome::socket { // Shared ready() implementation for fd-based socket implementations (BSD and LWIP sockets). // Uses cached lwip_sock pointer for direct rcvevent read — no fd lookup overhead. bool socket_ready(struct lwip_sock *cached_sock, bool loop_monitored) { - return !loop_monitored || esphome_lwip_socket_has_data(cached_sock); + return !loop_monitored || (cached_sock != nullptr && esphome_lwip_socket_has_data(cached_sock)); } #elif defined(USE_SOCKET_SELECT_SUPPORT) // Shared ready() implementation for fd-based socket implementations (BSD and LWIP sockets).