Hi, On Wed, Aug 03, 2016 at 09:49:53AM +0200, Christophe Fergeau wrote: > Now that the ConnectAsyncData we need is set as GTask data, we can pass > around the GTask rather than the ConnectAsyncData instance, and remove > the GTask pointer from it. We can get the ConnectAsyncData from the > GTask when needed using g_task_get_task_data(). Yes, much better Acked-by: Victor Toso <victortoso@xxxxxxxxxx> > --- > src/wocky-http-proxy.c | 54 +++++++++++++++++++++++++------------------------- > 1 file changed, 27 insertions(+), 27 deletions(-) > > diff --git a/src/wocky-http-proxy.c b/src/wocky-http-proxy.c > index cf51ba3..8120a55 100644 > --- a/src/wocky-http-proxy.c > +++ b/src/wocky-http-proxy.c > @@ -252,7 +252,6 @@ error: > > typedef struct > { > - GTask *task; > GIOStream *io_stream; > gchar *buffer; > gssize length; > @@ -283,35 +282,35 @@ free_connect_data (ConnectAsyncData *data) > } > > static void > -complete_async_from_error (ConnectAsyncData *data, GError *error) > +complete_async_from_error (GTask *task, GError *error) > { > - GTask *task = data->task; > - > if (error == NULL) > g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED, > "HTTP proxy server closed connection unexpectedly."); > > - g_task_return_error(data->task, error); > + g_task_return_error (task, error); > g_object_unref (task); > } > > static void > -do_write (GAsyncReadyCallback callback, ConnectAsyncData *data) > +do_write (GAsyncReadyCallback callback, GTask *task) > { > GOutputStream *out; > + ConnectAsyncData *data = g_task_get_task_data (task); > out = g_io_stream_get_output_stream (data->io_stream); > g_output_stream_write_async (out, > data->buffer + data->offset, > data->length - data->offset, > - G_PRIORITY_DEFAULT, g_task_get_cancellable(data->task), > - callback, data); > + G_PRIORITY_DEFAULT, g_task_get_cancellable(task), > + callback, task); > } > > static void > -stream_connected (ConnectAsyncData *data, > +stream_connected (GTask *task, > GIOStream *io_stream) > { > GInputStream *in; > + ConnectAsyncData *data = g_task_get_task_data (task); > > data->io_stream = g_object_ref (io_stream); > in = g_io_stream_get_input_stream (io_stream); > @@ -319,7 +318,7 @@ stream_connected (ConnectAsyncData *data, > g_filter_input_stream_set_close_base_stream (G_FILTER_INPUT_STREAM (data->data_in), > FALSE); > > - do_write (request_write_cb, data); > + do_write (request_write_cb, task); > } > > static void > @@ -328,16 +327,16 @@ handshake_completed (GObject *source_object, > gpointer user_data) > { > GTlsConnection *conn = G_TLS_CONNECTION (source_object); > - ConnectAsyncData *data = user_data; > + GTask *task = G_TASK (user_data); > GError *error = NULL; > > if (!g_tls_connection_handshake_finish (conn, res, &error)) > { > - complete_async_from_error (data, error); > + complete_async_from_error (task, error); > return; > } > > - stream_connected (data, G_IO_STREAM (conn)); > + stream_connected (task, G_IO_STREAM (conn)); > } > > static void > @@ -357,7 +356,6 @@ wocky_http_proxy_connect_async (GProxy *proxy, > user_data); > > data = g_new0 (ConnectAsyncData, 1); > - data->task = task; > > data->buffer = create_request (proxy_address, &data->has_cred); > data->length = strlen (data->buffer); > @@ -375,7 +373,7 @@ wocky_http_proxy_connect_async (GProxy *proxy, > &error); > if (!tlsconn) > { > - complete_async_from_error (data, error); > + complete_async_from_error (task, error); > return; > } > > @@ -389,11 +387,11 @@ wocky_http_proxy_connect_async (GProxy *proxy, > tls_validation_flags); > g_tls_connection_handshake_async (G_TLS_CONNECTION (tlsconn), > G_PRIORITY_DEFAULT, cancellable, > - handshake_completed, data); > + handshake_completed, task); > } > else > { > - stream_connected (data, io_stream); > + stream_connected (task, io_stream); > } > } > > @@ -403,14 +401,15 @@ request_write_cb (GObject *source, > gpointer user_data) > { > GError *error = NULL; > - ConnectAsyncData *data = user_data; > + GTask *task = G_TASK(user_data); > + ConnectAsyncData *data = g_task_get_task_data (task); > gssize written; > > written = g_output_stream_write_finish (G_OUTPUT_STREAM (source), > res, &error); > if (written < 0) > { > - complete_async_from_error (data, error); > + complete_async_from_error (task, error); > return; > } > > @@ -423,13 +422,13 @@ request_write_cb (GObject *source, > g_data_input_stream_read_until_async (data->data_in, > HTTP_END_MARKER, > G_PRIORITY_DEFAULT, > - g_task_get_cancellable(data->task), > - reply_read_cb, data); > + g_task_get_cancellable(task), > + reply_read_cb, task); > > } > else > { > - do_write (request_write_cb, data); > + do_write (request_write_cb, task); > } > } > > @@ -439,26 +438,27 @@ reply_read_cb (GObject *source, > gpointer user_data) > { > GError *error = NULL; > - ConnectAsyncData *data = user_data; > + GTask *task = G_TASK(user_data); > + ConnectAsyncData *data = g_task_get_task_data (task); > > data->buffer = g_data_input_stream_read_until_finish (data->data_in, > res, NULL, &error); > > if (data->buffer == NULL) > { > - complete_async_from_error (data, error); > + complete_async_from_error (task, error); > return; > } > > if (!check_reply (data->buffer, data->has_cred, &error)) > { > - complete_async_from_error (data, error); > + complete_async_from_error (task, error); > return; > } > > - g_task_return_pointer (data->task, data->io_stream, (GDestroyNotify) g_object_unref); > + g_task_return_pointer (task, data->io_stream, (GDestroyNotify) g_object_unref); > data->io_stream = NULL; > - g_object_unref (data->task); > + g_object_unref (task); > } > > static GIOStream * > -- > 2.7.4 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel