mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-02 20:24:32 +02:00
Merge branch 'bugfix/http_client_tcp_config_v5.0' into 'release/v5.0'
http_client: Set common tcp config to both TCP and SSL transport (v5.0) See merge request espressif/esp-idf!26206
This commit is contained in:
@@ -565,6 +565,25 @@ static char *_get_host_header(char *host, int port)
|
|||||||
return host_name;
|
return host_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool init_common_tcp_transport(esp_http_client_handle_t client, const esp_http_client_config_t *config, esp_transport_handle_t transport)
|
||||||
|
{
|
||||||
|
if (config->keep_alive_enable == true) {
|
||||||
|
client->keep_alive_cfg.keep_alive_enable = true;
|
||||||
|
client->keep_alive_cfg.keep_alive_idle = (config->keep_alive_idle == 0) ? DEFAULT_KEEP_ALIVE_IDLE : config->keep_alive_idle;
|
||||||
|
client->keep_alive_cfg.keep_alive_interval = (config->keep_alive_interval == 0) ? DEFAULT_KEEP_ALIVE_INTERVAL : config->keep_alive_interval;
|
||||||
|
client->keep_alive_cfg.keep_alive_count = (config->keep_alive_count == 0) ? DEFAULT_KEEP_ALIVE_COUNT : config->keep_alive_count;
|
||||||
|
esp_transport_tcp_set_keep_alive(transport, &client->keep_alive_cfg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config->if_name) {
|
||||||
|
client->if_name = calloc(1, sizeof(struct ifreq));
|
||||||
|
ESP_RETURN_ON_FALSE(client->if_name, false, TAG, "Memory exhausted");
|
||||||
|
memcpy(client->if_name, config->if_name, sizeof(struct ifreq));
|
||||||
|
esp_transport_tcp_set_interface_name(transport, client->if_name);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
esp_http_client_handle_t esp_http_client_init(const esp_http_client_config_t *config)
|
esp_http_client_handle_t esp_http_client_init(const esp_http_client_config_t *config)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -603,20 +622,7 @@ esp_http_client_handle_t esp_http_client_init(const esp_http_client_config_t *co
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config->keep_alive_enable == true) {
|
ESP_GOTO_ON_FALSE(init_common_tcp_transport(client, config, tcp), ESP_FAIL, error, TAG, "Failed to set TCP config");
|
||||||
client->keep_alive_cfg.keep_alive_enable = true;
|
|
||||||
client->keep_alive_cfg.keep_alive_idle = (config->keep_alive_idle == 0) ? DEFAULT_KEEP_ALIVE_IDLE : config->keep_alive_idle;
|
|
||||||
client->keep_alive_cfg.keep_alive_interval = (config->keep_alive_interval == 0) ? DEFAULT_KEEP_ALIVE_INTERVAL : config->keep_alive_interval;
|
|
||||||
client->keep_alive_cfg.keep_alive_count = (config->keep_alive_count == 0) ? DEFAULT_KEEP_ALIVE_COUNT : config->keep_alive_count;
|
|
||||||
esp_transport_tcp_set_keep_alive(tcp, &client->keep_alive_cfg);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config->if_name) {
|
|
||||||
client->if_name = calloc(1, sizeof(struct ifreq) + 1);
|
|
||||||
ESP_GOTO_ON_FALSE(client->if_name, ESP_FAIL, error, TAG, "Memory exhausted");
|
|
||||||
memcpy(client->if_name, config->if_name, sizeof(struct ifreq));
|
|
||||||
esp_transport_tcp_set_interface_name(tcp, client->if_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS
|
#ifdef CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS
|
||||||
esp_transport_handle_t ssl = NULL;
|
esp_transport_handle_t ssl = NULL;
|
||||||
@@ -631,6 +637,8 @@ esp_http_client_handle_t esp_http_client_init(const esp_http_client_config_t *co
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ESP_GOTO_ON_FALSE(init_common_tcp_transport(client, config, ssl), ESP_FAIL, error, TAG, "Failed to set SSL config");
|
||||||
|
|
||||||
if (config->crt_bundle_attach != NULL) {
|
if (config->crt_bundle_attach != NULL) {
|
||||||
#ifdef CONFIG_MBEDTLS_CERTIFICATE_BUNDLE
|
#ifdef CONFIG_MBEDTLS_CERTIFICATE_BUNDLE
|
||||||
esp_transport_ssl_crt_bundle_attach(ssl, config->crt_bundle_attach);
|
esp_transport_ssl_crt_bundle_attach(ssl, config->crt_bundle_attach);
|
||||||
|
Reference in New Issue
Block a user