diff --git a/components/tcp_transport/private_include/esp_transport_internal.h b/components/tcp_transport/private_include/esp_transport_internal.h index ea9c64b4a8..05e08b0283 100644 --- a/components/tcp_transport/private_include/esp_transport_internal.h +++ b/components/tcp_transport/private_include/esp_transport_internal.h @@ -57,6 +57,7 @@ enum tcp_transport_errors { ERR_TCP_TRANSPORT_CONNECTION_CLOSED_BY_FIN, ERR_TCP_TRANSPORT_CONNECTION_FAILED, ERR_TCP_TRANSPORT_SETOPT_FAILED, + ERR_TCP_TRANSPORT_NO_MEM, }; /** diff --git a/components/tcp_transport/transport.c b/components/tcp_transport/transport.c index 8de4f9d355..3ea382e407 100644 --- a/components/tcp_transport/transport.c +++ b/components/tcp_transport/transport.c @@ -345,6 +345,9 @@ void capture_tcp_transport_error(esp_transport_handle_t t, enum tcp_transport_er case ERR_TCP_TRANSPORT_SETOPT_FAILED: err_handle->last_error = ESP_ERR_ESP_TLS_SOCKET_SETOPT_FAILED; break; + case ERR_TCP_TRANSPORT_NO_MEM: + err_handle->last_error = ESP_ERR_NO_MEM; + break; } } diff --git a/components/tcp_transport/transport_ssl.c b/components/tcp_transport/transport_ssl.c index 5dfd1c2cb2..a1a678404a 100644 --- a/components/tcp_transport/transport_ssl.c +++ b/components/tcp_transport/transport_ssl.c @@ -104,6 +104,11 @@ static int esp_tls_connect(esp_transport_handle_t t, const char *host, int port, ssl->ssl_initialized = true; ssl->tls = esp_tls_init(); + if (ssl->tls == NULL) { + ESP_LOGE(TAG, "Failed to initialize new connection object"); + capture_tcp_transport_error(t, ERR_TCP_TRANSPORT_NO_MEM); + return -1; + } if (esp_tls_conn_new_sync(host, strlen(host), port, &ssl->cfg, ssl->tls) <= 0) { ESP_LOGE(TAG, "Failed to open a new connection"); esp_transport_set_errors(t, ssl->tls->error_handle);