Procházet zdrojové kódy

Fix compatibility with ESPHome 2026.1

The getpeername() function has been removed and replaced with
getpeername_to(), which writes into a caller-owned span instead.
tastopesato před 1 týdnem
rodič
revize
7546679e35
1 změnil soubory, kde provedl 8 přidání a 0 odebrání
  1. 8 0
      components/stream_server/stream_server.cpp

+ 8 - 0
components/stream_server/stream_server.cpp

@@ -80,7 +80,15 @@ void StreamServerComponent::accept() {
         return;
 
     socket->setblocking(false);
+
+#if ESPHOME_VERSION_CODE >= VERSION_CODE(2026, 1, 0)
+    std::string identifier = std::string{esphome::socket::SOCKADDR_STR_LEN, 0};
+    auto identifier_span = std::span<char, esphome::socket::SOCKADDR_STR_LEN>(identifier.data(), identifier.size());
+    identifier.resize(socket->getpeername_to(identifier_span));
+#else
     std::string identifier = socket->getpeername();
+#endif
+
     this->clients_.emplace_back(std::move(socket), identifier, this->buf_head_);
     ESP_LOGD(TAG, "New client connected from %s", identifier.c_str());
     this->publish_sensor();