From 994038e0e9e190f8c70a00dfddd8fa8f42c5925e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Fri, 5 Nov 2021 10:50:06 +0100 Subject: [PATCH] esp_http_server: Check for failure in stopping http server In some cases, sending the shutdown signal may fail, which causes `httpd_stop` to wait indefinitely. This PR adds a check to prevent this infinite loop. Signed-off-by: Shubham Kulkarni Closes https://github.com/espressif/esp-idf/pull/7843 --- components/esp_http_server/src/httpd_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/esp_http_server/src/httpd_main.c b/components/esp_http_server/src/httpd_main.c index c7dfff18bb..070943189e 100644 --- a/components/esp_http_server/src/httpd_main.c +++ b/components/esp_http_server/src/httpd_main.c @@ -450,7 +450,11 @@ esp_err_t httpd_stop(httpd_handle_t handle) struct httpd_ctrl_data msg; memset(&msg, 0, sizeof(msg)); msg.hc_msg = HTTPD_CTRL_SHUTDOWN; - cs_send_to_ctrl_sock(hd->msg_fd, hd->config.ctrl_port, &msg, sizeof(msg)); + int ret = 0; + if ((ret = cs_send_to_ctrl_sock(hd->msg_fd, hd->config.ctrl_port, &msg, sizeof(msg))) < 0) { + ESP_LOGE(TAG, "Failed to send shutdown signal err=%d", ret); + return ESP_FAIL; + } ESP_LOGD(TAG, LOG_FMT("sent control msg to stop server")); while (hd->hd_td.status != THREAD_STOPPED) {