quic: fix memory leak & crash on connection delete
- quicly conn struct leaked on connection delete - Occasionally connection delete is called twice before connection is closed which caused a crash. Type: fix Change-Id: Ifaaaeda55f71d58c97fa4d6652bda60a3efd4b69 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
This commit is contained in:
@ -572,6 +572,12 @@ quic_connection_delete (quic_ctx_t * ctx)
|
|||||||
clib_bihash_kv_16_8_t kv;
|
clib_bihash_kv_16_8_t kv;
|
||||||
quicly_conn_t *conn;
|
quicly_conn_t *conn;
|
||||||
|
|
||||||
|
if (ctx->conn == NULL)
|
||||||
|
{
|
||||||
|
QUIC_DBG (2, "Skipping redundant delete of connection %u",
|
||||||
|
ctx->c_c_index);
|
||||||
|
return;
|
||||||
|
}
|
||||||
QUIC_DBG (2, "Deleting connection %u", ctx->c_c_index);
|
QUIC_DBG (2, "Deleting connection %u", ctx->c_c_index);
|
||||||
|
|
||||||
QUIC_ASSERT (!quic_ctx_is_stream (ctx));
|
QUIC_ASSERT (!quic_ctx_is_stream (ctx));
|
||||||
@ -587,8 +593,8 @@ quic_connection_delete (quic_ctx_t * ctx)
|
|||||||
|
|
||||||
quic_disconnect_transport (ctx);
|
quic_disconnect_transport (ctx);
|
||||||
|
|
||||||
if (ctx->conn)
|
if (conn)
|
||||||
quicly_free (ctx->conn);
|
quicly_free (conn);
|
||||||
session_transport_delete_notify (&ctx->connection);
|
session_transport_delete_notify (&ctx->connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user