mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
io: release active GSource in TLS channel finalizer
While code is supposed to call qio_channel_close() before releasing the last reference on an QIOChannel, this is not guaranteed. QIOChannelFile and QIOChannelSocket both cleanup resources in their finalizer if the close operation was missed. This ensures the TLS channel will do the same failsafe cleanup. Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
@@ -342,6 +342,16 @@ static void qio_channel_tls_finalize(Object *obj)
|
||||
{
|
||||
QIOChannelTLS *ioc = QIO_CHANNEL_TLS(obj);
|
||||
|
||||
if (ioc->hs_ioc_tag) {
|
||||
trace_qio_channel_tls_handshake_cancel(ioc);
|
||||
g_clear_handle_id(&ioc->hs_ioc_tag, g_source_remove);
|
||||
}
|
||||
|
||||
if (ioc->bye_ioc_tag) {
|
||||
trace_qio_channel_tls_bye_cancel(ioc);
|
||||
g_clear_handle_id(&ioc->bye_ioc_tag, g_source_remove);
|
||||
}
|
||||
|
||||
object_unref(OBJECT(ioc->master));
|
||||
qcrypto_tls_session_free(ioc->session);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user