diff --git a/components/tcp_transport/transport_ssl.c b/components/tcp_transport/transport_ssl.c index b32fbcc624..c8ee4b0491 100644 --- a/components/tcp_transport/transport_ssl.c +++ b/components/tcp_transport/transport_ssl.c @@ -244,7 +244,10 @@ esp_transport_handle_t esp_transport_ssl_init() { esp_transport_handle_t t = esp_transport_init(); transport_ssl_t *ssl = calloc(1, sizeof(transport_ssl_t)); - ESP_TRANSPORT_MEM_CHECK(TAG, ssl, return NULL); + ESP_TRANSPORT_MEM_CHECK(TAG, ssl, { + esp_transport_destroy(t); + return NULL; + }); esp_transport_set_context_data(t, ssl); esp_transport_set_func(t, ssl_connect, ssl_read, ssl_write, ssl_close, ssl_poll_read, ssl_poll_write, ssl_destroy); esp_transport_set_async_connect_func(t, ssl_connect_async); diff --git a/components/tcp_transport/transport_tcp.c b/components/tcp_transport/transport_tcp.c index af3954a5f5..b5c317f9c7 100644 --- a/components/tcp_transport/transport_tcp.c +++ b/components/tcp_transport/transport_tcp.c @@ -226,7 +226,10 @@ esp_transport_handle_t esp_transport_tcp_init() { esp_transport_handle_t t = esp_transport_init(); transport_tcp_t *tcp = calloc(1, sizeof(transport_tcp_t)); - ESP_TRANSPORT_MEM_CHECK(TAG, tcp, return NULL); + ESP_TRANSPORT_MEM_CHECK(TAG, tcp, { + esp_transport_destroy(t); + return NULL; + }); tcp->sock = -1; esp_transport_set_func(t, tcp_connect, tcp_read, tcp_write, tcp_close, tcp_poll_read, tcp_poll_write, tcp_destroy); esp_transport_set_context_data(t, tcp); diff --git a/components/tcp_transport/transport_ws.c b/components/tcp_transport/transport_ws.c index ea5ee29bc1..a636e5c294 100644 --- a/components/tcp_transport/transport_ws.c +++ b/components/tcp_transport/transport_ws.c @@ -441,12 +441,14 @@ esp_transport_handle_t esp_transport_ws_init(esp_transport_handle_t parent_handl ws->path = strdup("/"); ESP_TRANSPORT_MEM_CHECK(TAG, ws->path, { free(ws); + esp_transport_destroy(t); return NULL; }); ws->buffer = malloc(DEFAULT_WS_BUFFER); ESP_TRANSPORT_MEM_CHECK(TAG, ws->buffer, { free(ws->path); free(ws); + esp_transport_destroy(t); return NULL; });