[grilo] grl-net: Fix crashes in SoupRequest error case
- From: Sam Thursfield <sthursfield src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo] grl-net: Fix crashes in SoupRequest error case
- Date: Mon, 31 Oct 2011 18:41:52 +0000 (UTC)
commit 7abc1ac9b84a84fa5f1c2c0f4e9342b21f48afe0
Author: Sam Thursfield <sam thursfield codethink co uk>
Date: Wed Oct 26 12:36:41 2011 +0100
grl-net: Fix crashes in SoupRequest error case
https://bugzilla.gnome.org/show_bug.cgi?id=662762
libs/net/grl-net-wc.c | 24 ++++++++++++++++++++----
1 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/libs/net/grl-net-wc.c b/libs/net/grl-net-wc.c
index 10ae228..58a6a95 100644
--- a/libs/net/grl-net-wc.c
+++ b/libs/net/grl-net-wc.c
@@ -420,8 +420,20 @@ reply_cb (GObject *source, GAsyncResult *res, gpointer user_data)
{
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, &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;
+ }
- GInputStream *in = soup_request_send_finish (rr->request, res, NULL);
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);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]