openbsd-ports/x11/gnome/grilo/patches/patch-libs_net_grl-net-wc_c
jasper a4d7eea071 import grilo 0.1.17
Grilo is a framework focused on making media discovery and browsing easy
for application developers.
[...]

ok aja@

cvs: ----------------------------------------------------------------------
2011-11-06 19:05:03 +00:00

65 lines
2.3 KiB
Plaintext

$OpenBSD: patch-libs_net_grl-net-wc_c,v 1.1.1.1 2011/11/06 19:05:03 jasper Exp $
From 7abc1ac9b84a84fa5f1c2c0f4e9342b21f48afe0 Mon Sep 17 00:00:00 2001
From: Sam Thursfield <sam.thursfield@codethink.co.uk>
Date: Wed, 26 Oct 2011 11:36:41 +0000
Subject: grl-net: Fix crashes in SoupRequest error case
--- libs/net/grl-net-wc.c.orig Mon Sep 5 12:59:20 2011
+++ libs/net/grl-net-wc.c Wed Nov 2 21:25:20 2011
@@ -420,8 +420,20 @@ reply_cb (GObject *source, GAsyncResult *res, gpointer
{
GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (user_data);
RequestResult *rr = g_simple_async_result_get_op_res_gpointer (result);
+ GError *error = NULL;
- GInputStream *in = soup_request_send_finish (rr->request, res, NULL);
+ GInputStream *in = soup_request_send_finish (rr->request, res, &error);
+
+ if (error != NULL) {
+ g_simple_async_result_set_error (result, GRL_NET_WC_ERROR,
+ GRL_NET_WC_ERROR_UNAVAILABLE,
+ "Data not available");
+ g_error_free (error);
+
+ g_simple_async_result_complete (result);
+ return;
+ }
+
rr->length = soup_request_get_content_length (rr->request) + 1;
if (rr->length == 1) {
rr->length = BUFFER_SIZE;
@@ -481,10 +493,12 @@ get_url_now (GrlNetWc *self,
{
RequestResult *rr = g_slice_new0 (RequestResult);
- rr->request = soup_requester_request (self->priv->requester, url, NULL);
g_simple_async_result_set_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result),
rr,
NULL);
+
+ rr->request = soup_requester_request (self->priv->requester, url, NULL);
+
soup_request_send_async (rr->request, cancellable, reply_cb, result);
}
@@ -706,14 +720,16 @@ grl_net_wc_request_finish (GrlNetWc *self,
g_warn_if_fail (g_simple_async_result_get_source_tag (res) ==
grl_net_wc_request_async);
+#ifdef LIBSOUP_USE_UNSTABLE_REQUEST_API
+ RequestResult *rr = g_simple_async_result_get_op_res_gpointer (res);
+#endif
+
if (g_simple_async_result_propagate_error (res, error) == TRUE) {
ret = FALSE;
goto end_func;
}
#ifdef LIBSOUP_USE_UNSTABLE_REQUEST_API
- RequestResult *rr = g_simple_async_result_get_op_res_gpointer (res);
-
if (self->priv->previous_data) {
g_free (self->priv->previous_data);
}