Grilo is a framework focused on making media discovery and browsing easy for application developers. [...] ok aja@ cvs: ----------------------------------------------------------------------
65 lines
2.3 KiB
Plaintext
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);
|
|
}
|