Răsfoiți Sursa

Fix no connection under ESPHome 2026.3

dv49273 3 luni în urmă
părinte
comite
9e05b0a3fe

+ 10 - 0
components/stream_server/stream_server.cpp

@@ -25,7 +25,12 @@ void StreamServerComponent::setup() {
     socklen_t bind_addrlen = socket::set_sockaddr_any(reinterpret_cast<struct sockaddr *>(&bind_addr), sizeof(bind_addr), htons(this->port_));
 #endif
 
+#if ESPHOME_VERSION_CODE >= VERSION_CODE(2026, 3, 0)    
+    this->socket_ = socket::socket_ip_loop_monitored(SOCK_STREAM, PF_INET).release();    
+#else
     this->socket_ = socket::socket_ip(SOCK_STREAM, PF_INET);
+#endif 
+      
     this->socket_->setblocking(false);
     this->socket_->bind(reinterpret_cast<struct sockaddr *>(&bind_addr), bind_addrlen);
     this->socket_->listen(8);
@@ -57,6 +62,11 @@ void StreamServerComponent::dump_config() {
 }
 
 void StreamServerComponent::on_shutdown() {
+#if ESPHOME_VERSION_CODE >= VERSION_CODE(2026, 3, 0)
+    delete this->socket_;
+    this->socket_ = nullptr;    
+#endif 
+
     for (const Client &client : this->clients_)
         client.socket->shutdown(SHUT_RDWR);
 }

+ 6 - 0
components/stream_server/stream_server.h

@@ -1,5 +1,6 @@
 #pragma once
 
+#include "esphome/core/version.h"
 #include "esphome/core/component.h"
 #include "esphome/components/socket/socket.h"
 #include "esphome/components/uart/uart.h"
@@ -75,6 +76,11 @@ protected:
     size_t buf_head_{0};
     size_t buf_tail_{0};
 
+#if ESPHOME_VERSION_CODE >= VERSION_CODE(2026, 3, 0)
+    esphome::socket::ListenSocket *socket_{nullptr};
+#else
     std::unique_ptr<esphome::socket::Socket> socket_{};
+#endif 
+
     std::vector<Client> clients_{};
 };