From 34f32873237ddff206dd26dcc4c1b6615dbe2f85 Mon Sep 17 00:00:00 2001 From: Mahavir Jain Date: Mon, 14 Nov 2022 17:48:21 +0530 Subject: [PATCH 1/2] esp_http_server: fix default control port for HTTPS configuration For simultaneous HTTP and HTTPS server use-case, default configurations set same control socket port and hence one of the server initialization fails with an error "error in creating control socket". This commit modifies default initializers to use different control socket port in HTTP vs HTTPS server case. Closes https://github.com/espressif/esp-idf/issues/10160 Closes IDFGH-8719 --- components/esp_http_server/include/esp_http_server.h | 4 +++- components/esp_https_server/include/esp_https_server.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/components/esp_http_server/include/esp_http_server.h b/components/esp_http_server/include/esp_http_server.h index 08552f4d57..92c057c4bb 100644 --- a/components/esp_http_server/include/esp_http_server.h +++ b/components/esp_http_server/include/esp_http_server.h @@ -19,6 +19,8 @@ extern "C" { #endif +#define ESP_HTTPD_DEF_CTRL_PORT (32768) /*!< HTTP Server control socket port*/ + /* note: esp_https_server.h includes a customized copy of this initializer that should be kept in sync @@ -28,7 +30,7 @@ initializer that should be kept in sync .stack_size = 4096, \ .core_id = tskNO_AFFINITY, \ .server_port = 80, \ - .ctrl_port = 32768, \ + .ctrl_port = ESP_HTTPD_DEF_CTRL_PORT, \ .max_open_sockets = 7, \ .max_uri_handlers = 8, \ .max_resp_headers = 8, \ diff --git a/components/esp_https_server/include/esp_https_server.h b/components/esp_https_server/include/esp_https_server.h index bffdfce62b..c93d43ccf6 100644 --- a/components/esp_https_server/include/esp_https_server.h +++ b/components/esp_https_server/include/esp_https_server.h @@ -122,7 +122,7 @@ typedef struct httpd_ssl_config httpd_ssl_config_t; .stack_size = 10240, \ .core_id = tskNO_AFFINITY, \ .server_port = 0, \ - .ctrl_port = 32768, \ + .ctrl_port = ESP_HTTPD_DEF_CTRL_PORT+1, \ .max_open_sockets = 4, \ .max_uri_handlers = 8, \ .max_resp_headers = 8, \ From 79216c657e7e867f12efe91ad843a643d42e30dc Mon Sep 17 00:00:00 2001 From: Mahavir Jain Date: Mon, 14 Nov 2022 17:50:40 +0530 Subject: [PATCH 2/2] esp_http_server: modify error print for clarifying internal socket usage Closes https://github.com/espressif/esp-idf/issues/10108 Closes IDFGH-8663 --- components/esp_http_server/include/esp_http_server.h | 2 +- components/esp_http_server/src/httpd_main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/esp_http_server/include/esp_http_server.h b/components/esp_http_server/include/esp_http_server.h index 92c057c4bb..8103dcf1b7 100644 --- a/components/esp_http_server/include/esp_http_server.h +++ b/components/esp_http_server/include/esp_http_server.h @@ -155,7 +155,7 @@ typedef struct httpd_config { */ uint16_t ctrl_port; - uint16_t max_open_sockets; /*!< Max number of sockets/clients connected at any time*/ + uint16_t max_open_sockets; /*!< Max number of sockets/clients connected at any time (3 sockets are reserved for internal working of the HTTP server) */ uint16_t max_uri_handlers; /*!< Maximum allowed uri handlers */ uint16_t max_resp_headers; /*!< Maximum allowed additional headers in HTTP response */ uint16_t backlog_conn; /*!< Number of backlog connections */ diff --git a/components/esp_http_server/src/httpd_main.c b/components/esp_http_server/src/httpd_main.c index 50ca7d8bf6..6268ca79fe 100644 --- a/components/esp_http_server/src/httpd_main.c +++ b/components/esp_http_server/src/httpd_main.c @@ -466,7 +466,7 @@ esp_err_t httpd_start(httpd_handle_t *handle, const httpd_config_t *config) * So the total number of required sockets is max_open_sockets + 3 */ if (CONFIG_LWIP_MAX_SOCKETS < config->max_open_sockets + 3) { - ESP_LOGE(TAG, "Configuration option max_open_sockets is too large (max allowed %d)\n\t" + ESP_LOGE(TAG, "Config option max_open_sockets is too large (max allowed %d, 3 sockets used by HTTP server internally)\n\t" "Either decrease this or configure LWIP_MAX_SOCKETS to a larger value", CONFIG_LWIP_MAX_SOCKETS - 3); return ESP_ERR_INVALID_ARG;