Skip to content

Commit

Permalink
Merge branch 'bugfix/http_client_tcp_config_v4.4' into 'release/v4.4'
Browse files Browse the repository at this point in the history
http_client: Set common tcp config to both TCP and SSL transport (v4.4)

See merge request espressif/esp-idf!26207
  • Loading branch information
mahavirj committed Oct 4, 2023
2 parents d9a6dbe + 05cde47 commit fd07086
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions components/esp_http_client/esp_http_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,25 @@ static char *_get_host_header(char *host, int port)
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));
HTTP_MEM_CHECK(TAG, client->if_name, return false);
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)
{

Expand Down Expand Up @@ -606,19 +625,9 @@ esp_http_client_handle_t esp_http_client_init(const esp_http_client_config_t *co
goto error;
}

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(tcp, &client->keep_alive_cfg);
}

if (config->if_name) {
client->if_name = calloc(1, sizeof(struct ifreq) + 1);
HTTP_MEM_CHECK(TAG, client->if_name, goto error);
memcpy(client->if_name, config->if_name, sizeof(struct ifreq));
esp_transport_tcp_set_interface_name(tcp, client->if_name);
if (!init_common_tcp_transport(client, config, tcp)) {
ESP_LOGE(TAG, "Failed to set TCP config");
goto error;
}

#ifdef CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS
Expand All @@ -634,6 +643,11 @@ esp_http_client_handle_t esp_http_client_init(const esp_http_client_config_t *co
goto error;
}

if (!init_common_tcp_transport(client, config, ssl)) {
ESP_LOGE(TAG, "Failed to set SSL config");
goto error;
}

if (config->crt_bundle_attach != NULL) {
#ifdef CONFIG_MBEDTLS_CERTIFICATE_BUNDLE
esp_transport_ssl_crt_bundle_attach(ssl, config->crt_bundle_attach);
Expand Down

0 comments on commit fd07086

Please sign in to comment.