[Telepathy-commits] [telepathy-salut/master] salut-disco.c: Take and release the GibberXmppConnection and the GibberIqHelper
Alban Crequy
alban.crequy at collabora.co.uk
Thu Feb 26 11:20:12 PST 2009
---
src/salut-disco.c | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/salut-disco.c b/src/salut-disco.c
index c7df6b3..338f047 100644
--- a/src/salut-disco.c
+++ b/src/salut-disco.c
@@ -82,6 +82,7 @@ struct _SalutDiscoRequest
guint timer_id;
SalutDiscoType type;
SalutContact *contact;
+ GibberXmppConnection *conn;
/* uri as in XEP-0115 */
gchar *node;
@@ -162,6 +163,14 @@ delete_request (SalutDiscoRequest *request)
g_source_remove (request->timer_id);
}
+ if (request->conn != NULL)
+ {
+ salut_xmpp_connection_manager_release_connection
+ (priv->xmpp_connection_manager, request->conn);
+ }
+ if (request->iq_helper != NULL)
+ g_object_unref (request->iq_helper);
+
g_object_unref (request->contact);
g_free (request->node);
g_slice_free (SalutDiscoRequest, request);
@@ -222,8 +231,6 @@ request_reply_cb (GibberIqHelper *helper,
if (err)
g_error_free (err);
-
- return;
}
static void
@@ -286,6 +293,9 @@ xmpp_connection_manager_new_connection_cb (SalutXmppConnectionManager *mgr,
if (request->contact == contact && !request->requested)
{
+ request->conn = conn;
+ salut_xmpp_connection_manager_take_connection
+ (priv->xmpp_connection_manager, request->conn);
send_disco_request (self, conn, contact, request);
}
req = g_list_next (req);
@@ -566,6 +576,8 @@ salut_disco_request (SalutDisco *self, SalutDiscoType type,
request->callback = callback;
request->user_data = user_data;
request->bound_object = object;
+ request->conn = NULL;
+ request->iq_helper = NULL;
if (NULL != object)
g_object_weak_ref (object, notify_delete_request, request);
@@ -581,6 +593,7 @@ salut_disco_request (SalutDisco *self, SalutDiscoType type,
if (result == SALUT_XMPP_CONNECTION_MANAGER_REQUEST_CONNECTION_RESULT_DONE)
{
DEBUG ("connection done.");
+ request->conn = conn;
send_disco_request (self, conn, contact, request);
return request;
}
--
1.5.6.5
More information about the telepathy-commits
mailing list