summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRegis Merlino <regis.merlino@intel.com>2013-04-04 17:31:27 +0200
committerMark Ryan <mark.d.ryan@intel.com>2013-04-08 15:07:28 +0200
commit541f912da75d75b2e41eeb680e53e9b29600474d (patch)
treed6ebeb332bf7264c343f7923673a27a27a2c2455
parentac8f6d96c5af526f5fdfbfafd3a13ef4654f05e8 (diff)
downloaddleyna-server-541f912da75d75b2e41eeb680e53e9b29600474d.tar.gz
[Device] Fix nested gupnp service calls
Signed-off-by: Regis Merlino <regis.merlino@intel.com>
-rw-r--r--libdleyna/server/device.c54
1 files changed, 32 insertions, 22 deletions
diff --git a/libdleyna/server/device.c b/libdleyna/server/device.c
index ce86a56..1669345 100644
--- a/libdleyna/server/device.c
+++ b/libdleyna/server/device.c
@@ -1500,13 +1500,13 @@ static void prv_get_system_update_id_for_prop(GUPnPServiceProxy *proxy,
goto on_complete;
}
- gupnp_service_proxy_begin_action(proxy, "GetSystemUpdateID",
- prv_system_update_id_for_prop_cb,
- cb_data,
- NULL);
+ cb_data->action = gupnp_service_proxy_begin_action(
+ proxy, "GetSystemUpdateID",
+ prv_system_update_id_for_prop_cb,
+ cb_data,
+ NULL);
cb_data->proxy = proxy;
-
g_object_add_weak_pointer((G_OBJECT(proxy)),
(gpointer *)&cb_data->proxy);
@@ -1595,17 +1595,22 @@ static void prv_get_system_update_id_for_props(GUPnPServiceProxy *proxy,
goto on_complete;
}
- gupnp_service_proxy_begin_action(proxy, "GetSystemUpdateID",
- prv_system_update_id_for_props_cb,
- cb_data,
- NULL);
+ cb_data->action = gupnp_service_proxy_begin_action(
+ proxy, "GetSystemUpdateID",
+ prv_system_update_id_for_props_cb,
+ cb_data,
+ NULL);
- cb_data->proxy = proxy;
+ if (cb_data->proxy != NULL)
+ g_object_remove_weak_pointer((G_OBJECT(cb_data->proxy)),
+ (gpointer *)&cb_data->proxy);
+ cb_data->proxy = proxy;
g_object_add_weak_pointer((G_OBJECT(proxy)),
(gpointer *)&cb_data->proxy);
- cb_data->cancel_id = g_cancellable_connect(
+ if (!cb_data->cancel_id)
+ cb_data->cancel_id = g_cancellable_connect(
cb_data->cancellable,
G_CALLBACK(dls_async_task_cancelled_cb),
cb_data, NULL);
@@ -1698,13 +1703,13 @@ static void prv_get_sr_token_for_prop(GUPnPServiceProxy *proxy,
goto on_error;
}
- gupnp_service_proxy_begin_action(proxy, "GetServiceResetToken",
- prv_service_reset_for_prop_cb,
- cb_data,
- NULL);
+ cb_data->action = gupnp_service_proxy_begin_action(
+ proxy, "GetServiceResetToken",
+ prv_service_reset_for_prop_cb,
+ cb_data,
+ NULL);
cb_data->proxy = proxy;
-
g_object_add_weak_pointer((G_OBJECT(proxy)),
(gpointer *)&cb_data->proxy);
@@ -1786,17 +1791,22 @@ static void prv_get_sr_token_for_props(GUPnPServiceProxy *proxy,
goto on_complete; /* No error here, just skip the property */
}
- gupnp_service_proxy_begin_action(proxy, "GetServiceResetToken",
- prv_service_reset_for_props_cb,
- cb_data,
- NULL);
+ cb_data->action = gupnp_service_proxy_begin_action(
+ proxy, "GetServiceResetToken",
+ prv_service_reset_for_props_cb,
+ cb_data,
+ NULL);
- cb_data->proxy = proxy;
+ if (cb_data->proxy != NULL)
+ g_object_remove_weak_pointer((G_OBJECT(cb_data->proxy)),
+ (gpointer *)&cb_data->proxy);
+ cb_data->proxy = proxy;
g_object_add_weak_pointer((G_OBJECT(proxy)),
(gpointer *)&cb_data->proxy);
- cb_data->cancel_id = g_cancellable_connect(
+ if (!cb_data->cancel_id)
+ cb_data->cancel_id = g_cancellable_connect(
cb_data->cancellable,
G_CALLBACK(dls_async_task_cancelled_cb),
cb_data, NULL);