qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS hands


From: Daniel P . Berrangé
Subject: Re: [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS handshake
Date: Thu, 1 Mar 2018 15:50:01 +0000
User-agent: Mutt/1.9.2 (2017-12-15)

On Thu, Mar 01, 2018 at 04:44:34PM +0800, Peter Xu wrote:
> qio_channel_tls_handshake_full() is introduced to allow the TLS to be
> run on a non-default context.  Still, no functional change.
> 
> Signed-off-by: Peter Xu <address@hidden>
> ---
>  include/io/channel-tls.h | 17 ++++++++++++++++
>  io/channel-tls.c         | 51 
> +++++++++++++++++++++++++++++++++++-------------
>  2 files changed, 54 insertions(+), 14 deletions(-)
> 

>  static void qio_channel_tls_handshake_task(QIOChannelTLS *ioc,
> -                                           QIOTask *task)
> +                                           QIOTask *task,
> +                                           GMainContext *context)
>  {
>      Error *err = NULL;
>      QCryptoTLSSessionHandshakeStatus status;
> @@ -171,6 +177,11 @@ static void qio_channel_tls_handshake_task(QIOChannelTLS 
> *ioc,
>          qio_task_complete(task);
>      } else {
>          GIOCondition condition;
> +        QIOChannelTLSData *data = g_new0(typeof(*data), 1);
> +
> +        data->task = task;
> +        data->context = context;

The 'context' reference is only valid for as long as the caller
exists. So you need to acquire a reference on 'context' here....


> @@ -191,20 +203,23 @@ static gboolean qio_channel_tls_handshake_io(QIOChannel 
> *ioc,
>                                               GIOCondition condition,
>                                               gpointer user_data)
>  {
> -    QIOTask *task = user_data;
> +    QIOChannelTLSData *data = user_data;
> +    QIOTask *task = data->task;
> +    GMainContext *context = data->context;
>      QIOChannelTLS *tioc = QIO_CHANNEL_TLS(
>          qio_task_get_source(task));
>  
> -    qio_channel_tls_handshake_task(
> -       tioc, task);

> +    g_free(data);
> +    qio_channel_tls_handshake_task(tioc, task, context);

And release the reference on context here.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



reply via email to

[Prev in Thread] Current Thread [Next in Thread]