From 11c8865248506e6c0b2ab55920a6cfd426ac0d85 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 17 Nov 2025 21:57:21 -0600 Subject: [PATCH] fixes --- esphome/components/captive_portal/captive_portal.cpp | 8 +------- esphome/components/web_server_idf/web_server_idf.cpp | 1 + 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/esphome/components/captive_portal/captive_portal.cpp b/esphome/components/captive_portal/captive_portal.cpp index e9ca7a8e14f..30438747f26 100644 --- a/esphome/components/captive_portal/captive_portal.cpp +++ b/esphome/components/captive_portal/captive_portal.cpp @@ -52,13 +52,7 @@ void CaptivePortal::handle_wifisave(AsyncWebServerRequest *request) { ESP_LOGI(TAG, " Password=" LOG_SECRET("'%s'"), psk.c_str()); wifi::global_wifi_component->save_wifi_sta(ssid, psk); wifi::global_wifi_component->start_scanning(); - - // Add Connection: close header to ensure socket is released immediately - // Without this, sockets can stay in TIME_WAIT and exhaust the socket pool - auto *response = request->beginResponse(302, ESPHOME_F("text/plain"), ESPHOME_F("")); - response->addHeader(ESPHOME_F("Location"), ESPHOME_F("/?save")); - response->addHeader(ESPHOME_F("Connection"), ESPHOME_F("close")); - request->send(response); + request->redirect(ESPHOME_F("/?save")); } void CaptivePortal::setup() { diff --git a/esphome/components/web_server_idf/web_server_idf.cpp b/esphome/components/web_server_idf/web_server_idf.cpp index ce91569de25..b99e4aa402c 100644 --- a/esphome/components/web_server_idf/web_server_idf.cpp +++ b/esphome/components/web_server_idf/web_server_idf.cpp @@ -242,6 +242,7 @@ void AsyncWebServerRequest::send(int code, const char *content_type, const char void AsyncWebServerRequest::redirect(const std::string &url) { httpd_resp_set_status(*this, "302 Found"); httpd_resp_set_hdr(*this, "Location", url.c_str()); + httpd_resp_set_hdr(*this, "Connection", "close"); httpd_resp_send(*this, nullptr, 0); }