kopia lustrzana https://github.com/espressif/esp-idf
fix(esp_https_server): Convert HTTPD_SSL_CONFIG_DEFAULT MACRO to function
Previously with HTTPD_SSL_CONFIG_DEFAULT being a MACRO, the configuration options could not be applied to it. This was casuing error in multiple scenarios. For e.g., here user_cert_cb is a part of httpd_ssl_config_t which this macro defines. But the type of user_cert_cb (esp_tls_server_callback_t) is only available when it is enabled in esp-tls. The MACRO however cannot be modified to set the defaults based on configuration option. This fix solves the issue without breaking the compatibilitypull/12525/head
rodzic
d4544a0d5c
commit
a0d73b5155
|
@ -104,70 +104,30 @@ struct httpd_ssl_config {
|
|||
esp_https_server_user_cb *user_cb;
|
||||
|
||||
void *ssl_userdata; /*!< user data to add to the ssl context */
|
||||
#if CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK
|
||||
esp_tls_handshake_callback cert_select_cb; /*!< Certificate selection callback to use */
|
||||
#endif
|
||||
|
||||
const char** alpn_protos; /*!< Application protocols the server supports in order of prefernece. Used for negotiating during the TLS handshake, first one the client supports is selected. The data structure must live as long as the https server itself! */
|
||||
};
|
||||
|
||||
typedef struct httpd_ssl_config httpd_ssl_config_t;
|
||||
|
||||
/* Macro kept for compatibility reasons */
|
||||
#define HTTPD_SSL_CONFIG_DEFAULT httpd_ssl_config_default
|
||||
/**
|
||||
* Default config struct init
|
||||
*
|
||||
* (http_server default config had to be copied for customization)
|
||||
* Returns the httpd config struct with default initialisation
|
||||
*
|
||||
* @return
|
||||
* httpd_ssl_config_t HTTPD ssl config struct
|
||||
* with default initialisation
|
||||
* Notes:
|
||||
* - port is set when starting the server, according to 'transport_mode'
|
||||
* - one socket uses ~ 40kB RAM with SSL, we reduce the default socket count to 4
|
||||
* - SSL sockets are usually long-lived, closing LRU prevents pool exhaustion DOS
|
||||
* - Stack size may need adjustments depending on the user application
|
||||
*/
|
||||
#define HTTPD_SSL_CONFIG_DEFAULT() { \
|
||||
.httpd = { \
|
||||
.task_priority = tskIDLE_PRIORITY+5, \
|
||||
.stack_size = 10240, \
|
||||
.core_id = tskNO_AFFINITY, \
|
||||
.server_port = 0, \
|
||||
.ctrl_port = ESP_HTTPD_DEF_CTRL_PORT+1, \
|
||||
.max_open_sockets = 4, \
|
||||
.max_uri_handlers = 8, \
|
||||
.max_resp_headers = 8, \
|
||||
.backlog_conn = 5, \
|
||||
.lru_purge_enable = true, \
|
||||
.recv_wait_timeout = 5, \
|
||||
.send_wait_timeout = 5, \
|
||||
.global_user_ctx = NULL, \
|
||||
.global_user_ctx_free_fn = NULL, \
|
||||
.global_transport_ctx = NULL, \
|
||||
.global_transport_ctx_free_fn = NULL, \
|
||||
.enable_so_linger = false, \
|
||||
.linger_timeout = 0, \
|
||||
.keep_alive_enable = false, \
|
||||
.keep_alive_idle = 0, \
|
||||
.keep_alive_interval = 0, \
|
||||
.keep_alive_count = 0, \
|
||||
.open_fn = NULL, \
|
||||
.close_fn = NULL, \
|
||||
.uri_match_fn = NULL \
|
||||
}, \
|
||||
.servercert = NULL, \
|
||||
.servercert_len = 0, \
|
||||
.cacert_pem = NULL, \
|
||||
.cacert_len = 0, \
|
||||
.prvtkey_pem = NULL, \
|
||||
.prvtkey_len = 0, \
|
||||
.use_ecdsa_peripheral = false, \
|
||||
.ecdsa_key_efuse_blk = 0, \
|
||||
.transport_mode = HTTPD_SSL_TRANSPORT_SECURE, \
|
||||
.port_secure = 443, \
|
||||
.port_insecure = 80, \
|
||||
.session_tickets = false, \
|
||||
.use_secure_element = false, \
|
||||
.user_cb = NULL, \
|
||||
.ssl_userdata = NULL, \
|
||||
.cert_select_cb = NULL, \
|
||||
.alpn_protos = NULL, \
|
||||
}
|
||||
httpd_ssl_config_t httpd_ssl_config_default(void);
|
||||
|
||||
/**
|
||||
* Create a SSL capable HTTP server (secure mode may be disabled in config)
|
||||
|
|
|
@ -48,6 +48,60 @@ static void httpd_ssl_close(void *ctx)
|
|||
ESP_LOGD(TAG, "Secure socket closed");
|
||||
}
|
||||
|
||||
httpd_ssl_config_t httpd_ssl_config_default(void)
|
||||
{
|
||||
httpd_ssl_config_t config = {
|
||||
.httpd = {
|
||||
.task_priority = tskIDLE_PRIORITY + 5,
|
||||
.stack_size = 10240,
|
||||
.core_id = tskNO_AFFINITY,
|
||||
.server_port = 0,
|
||||
.ctrl_port = ESP_HTTPD_DEF_CTRL_PORT + 1,
|
||||
.max_open_sockets = 4,
|
||||
.max_uri_handlers = 8,
|
||||
.max_resp_headers = 8,
|
||||
.backlog_conn = 5,
|
||||
.lru_purge_enable = true,
|
||||
.recv_wait_timeout = 5,
|
||||
.send_wait_timeout = 5,
|
||||
.global_user_ctx = NULL,
|
||||
.global_user_ctx_free_fn = NULL,
|
||||
.global_transport_ctx = NULL,
|
||||
.global_transport_ctx_free_fn = NULL,
|
||||
.enable_so_linger = false,
|
||||
.linger_timeout = 0,
|
||||
.keep_alive_enable = false,
|
||||
.keep_alive_idle = 0,
|
||||
.keep_alive_interval = 0,
|
||||
.keep_alive_count = 0,
|
||||
.open_fn = NULL,
|
||||
.close_fn = NULL,
|
||||
.uri_match_fn = NULL,
|
||||
},
|
||||
.servercert = NULL,
|
||||
.servercert_len = 0,
|
||||
.cacert_pem = NULL,
|
||||
.cacert_len = 0,
|
||||
.prvtkey_pem = NULL,
|
||||
.prvtkey_len = 0,
|
||||
.use_ecdsa_peripheral = false,
|
||||
.ecdsa_key_efuse_blk = 0,
|
||||
.transport_mode = HTTPD_SSL_TRANSPORT_SECURE,
|
||||
.port_secure = 443,
|
||||
.port_insecure = 80,
|
||||
.session_tickets = false,
|
||||
.use_secure_element = false,
|
||||
.user_cb = NULL,
|
||||
.ssl_userdata = NULL,
|
||||
#if CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK
|
||||
.cert_select_cb = NULL,
|
||||
#endif
|
||||
.alpn_protos = NULL,
|
||||
};
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
/**
|
||||
* SSL socket pending-check function
|
||||
*
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
CONFIG_ESP_HTTPS_SERVER_ENABLE=y
|
||||
CONFIG_ESP_TLS_CERT_SELECT_HOOK=y
|
||||
CONFIG_EXAMPLE_ENABLE_HTTPS_USER_CALLBACK=y
|
||||
CONFIG_EXAMPLE_WIFI_SSID_PWD_FROM_STDIN=y
|
||||
|
|
Ładowanie…
Reference in New Issue