|
@@ -198,12 +198,13 @@ static void qio_channel_tls_handshake_task(QIOChannelTLS *ioc,
|
|
}
|
|
}
|
|
|
|
|
|
trace_qio_channel_tls_handshake_pending(ioc, status);
|
|
trace_qio_channel_tls_handshake_pending(ioc, status);
|
|
- qio_channel_add_watch_full(ioc->master,
|
|
|
|
- condition,
|
|
|
|
- qio_channel_tls_handshake_io,
|
|
|
|
- data,
|
|
|
|
- NULL,
|
|
|
|
- context);
|
|
|
|
|
|
+ ioc->hs_ioc_tag =
|
|
|
|
+ qio_channel_add_watch_full(ioc->master,
|
|
|
|
+ condition,
|
|
|
|
+ qio_channel_tls_handshake_io,
|
|
|
|
+ data,
|
|
|
|
+ NULL,
|
|
|
|
+ context);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -218,6 +219,7 @@ static gboolean qio_channel_tls_handshake_io(QIOChannel *ioc,
|
|
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(
|
|
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(
|
|
qio_task_get_source(task));
|
|
qio_task_get_source(task));
|
|
|
|
|
|
|
|
+ tioc->hs_ioc_tag = 0;
|
|
g_free(data);
|
|
g_free(data);
|
|
qio_channel_tls_handshake_task(tioc, task, context);
|
|
qio_channel_tls_handshake_task(tioc, task, context);
|
|
|
|
|
|
@@ -378,6 +380,10 @@ static int qio_channel_tls_close(QIOChannel *ioc,
|
|
{
|
|
{
|
|
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
|
|
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
|
|
|
|
|
|
|
|
+ if (tioc->hs_ioc_tag) {
|
|
|
|
+ g_clear_handle_id(&tioc->hs_ioc_tag, g_source_remove);
|
|
|
|
+ }
|
|
|
|
+
|
|
return qio_channel_close(tioc->master, errp);
|
|
return qio_channel_close(tioc->master, errp);
|
|
}
|
|
}
|
|
|
|
|