Skip to content

Commit

Permalink
Merge branch 'bugfix/esp_tls_timeout_v4.3' into 'release/v4.3'
Browse files Browse the repository at this point in the history
esp_tls: Fix issue when timeout is not explicitly given in esp_tls_cfg_t (v4.3)

See merge request espressif/esp-idf!21745
  • Loading branch information
AdityaHPatwardhan committed Dec 28, 2022
2 parents 81fb7b0 + dbedcc2 commit 5811166
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions components/esp-tls/esp_tls.c
Expand Up @@ -72,6 +72,8 @@ static const char *TAG = "esp-tls";
#error "No TLS stack configured"
#endif

#define ESP_TLS_DEFAULT_CONN_TIMEOUT (10) /*!< Default connection timeout in seconds */

static esp_err_t create_ssl_handle(const char *hostname, size_t hostlen, const void *cfg, esp_tls_t *tls)
{
return _esp_create_ssl_handle(hostname, hostlen, cfg, tls);
Expand Down Expand Up @@ -226,18 +228,22 @@ static esp_err_t esp_tcp_connect(const char *host, int hostlen, int port, int *s
}

if (cfg) {
if (cfg->timeout_ms >= 0) {
struct timeval tv;
struct timeval tv = {};
if (cfg->timeout_ms > 0) {
ms_to_timeval(cfg->timeout_ms, &tv);
setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
if (cfg->keep_alive_cfg && cfg->keep_alive_cfg->keep_alive_enable) {
if (esp_tls_tcp_enable_keep_alive(fd, cfg->keep_alive_cfg) < 0) {
ESP_LOGE(TAG, "Error setting keep-alive");
goto err_freesocket;
}
} else {
tv.tv_sec = ESP_TLS_DEFAULT_CONN_TIMEOUT;
tv.tv_usec = 0;
}
setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
if (cfg->keep_alive_cfg && cfg->keep_alive_cfg->keep_alive_enable) {
if (esp_tls_tcp_enable_keep_alive(fd, cfg->keep_alive_cfg) < 0) {
ESP_LOGE(TAG, "Error setting keep-alive");
goto err_freesocket;
}
}

if (cfg->non_block) {
int flags = fcntl(fd, F_GETFL, 0);
ret = fcntl(fd, F_SETFL, flags | O_NONBLOCK);
Expand Down

0 comments on commit 5811166

Please sign in to comment.