mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 19:24:33 +02:00
when netconn created directly,netconn_delete() will not call netconn_free(),
which will lead to memory leak Closes https://github.com/espressif/esp-idf/issues/784
This commit is contained in:
@@ -136,6 +136,15 @@ netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, netconn_cal
|
|||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_created_by_socket(struct netconn *conn)
|
||||||
|
{
|
||||||
|
#if LWIP_SOCKET
|
||||||
|
if (conn && (conn->socket != -1)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Close a netconn 'connection' and free its resources.
|
* Close a netconn 'connection' and free its resources.
|
||||||
* UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate
|
* UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate
|
||||||
@@ -174,7 +183,12 @@ netconn_delete(struct netconn *conn)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !ESP_THREAD_SAFE
|
#if ESP_THREAD_SAFE
|
||||||
|
if (is_created_by_socket(conn) == false) {
|
||||||
|
LWIP_DEBUGF(ESP_THREAD_SAFE_DEBUG, ("netconn_delete - free conn\n"));
|
||||||
|
netconn_free(conn);
|
||||||
|
}
|
||||||
|
#else
|
||||||
LWIP_DEBUGF(ESP_THREAD_SAFE_DEBUG, ("netconn_delete - free conn\n"));
|
LWIP_DEBUGF(ESP_THREAD_SAFE_DEBUG, ("netconn_delete - free conn\n"));
|
||||||
netconn_free(conn);
|
netconn_free(conn);
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user