diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2012-03-29 13:35:29 +0100 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2012-12-06 14:46:58 +0000 |
commit | aacafd899c775acada617c61c0418ba25166e274 (patch) | |
tree | a68aed1eb5ea338c3c89559db4c6bd5e366ef8d6 /src/bytestream-factory.c | |
parent | a6dcef8cd434e05ffbdb569ecdceca68cd2bc04a (diff) | |
download | telepathy-gabble-aacafd899c775acada617c61c0418ba25166e274.tar.gz |
bytestream_factory_negotiate_stream(): use send_iq_async
This clarifies that this function can never fail, which can be the next
thing we clean up…
Diffstat (limited to 'src/bytestream-factory.c')
-rw-r--r-- | src/bytestream-factory.c | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/bytestream-factory.c b/src/bytestream-factory.c index e189b29a9..8762011d0 100644 --- a/src/bytestream-factory.c +++ b/src/bytestream-factory.c @@ -37,6 +37,7 @@ #include "bytestream-multiple.h" #include "bytestream-socks5.h" #include "connection.h" +#include "conn-util.h" #include "debug.h" #include "disco.h" #include "namespaces.h" @@ -1986,6 +1987,7 @@ streaminit_get_bytestream (GabbleBytestreamFactory *self, struct _streaminit_reply_cb_data { + GabbleBytestreamFactory *self; gchar *stream_id; GabbleBytestreamFactoryNegotiateReplyFunc func; TpWeakRef *weak_object; @@ -1993,17 +1995,15 @@ struct _streaminit_reply_cb_data /* Called when we receive the reply of a SI request */ static void -streaminit_reply_cb (GabbleConnection *conn, - WockyStanza *sent_msg, - WockyStanza *reply_msg, - GObject *obj, - gpointer user_data) +streaminit_reply_cb ( + GObject *source, + GAsyncResult *result, + gpointer user_data) { - GabbleBytestreamFactory *self = GABBLE_BYTESTREAM_FACTORY (obj); - GabbleBytestreamFactoryPrivate *priv = GABBLE_BYTESTREAM_FACTORY_GET_PRIVATE ( - self); - struct _streaminit_reply_cb_data *data = - (struct _streaminit_reply_cb_data*) user_data; + GabbleConnection *conn = GABBLE_CONNECTION (source); + struct _streaminit_reply_cb_data *data = user_data; + GabbleBytestreamFactory *self = data->self; + GabbleBytestreamFactoryPrivate *priv = self->priv; GabbleBytestreamIface *bytestream = NULL; gchar *peer_resource = NULL; WockyNode *si; @@ -2017,6 +2017,7 @@ streaminit_reply_cb (GabbleConnection *conn, gboolean success = FALSE; gchar *self_jid = NULL; GObject *object = tp_weak_ref_dup_object (data->weak_object); + WockyStanza *reply_msg = NULL; if (object == NULL) { @@ -2024,7 +2025,7 @@ streaminit_reply_cb (GabbleConnection *conn, goto END; } - if (wocky_stanza_extract_errors (reply_msg, NULL, NULL, NULL, NULL)) + if (!conn_util_send_iq_finish (conn, result, &reply_msg, NULL)) { DEBUG ("stream %s declined", data->stream_id); goto END; @@ -2130,6 +2131,8 @@ END: if (peer_resource != NULL) g_free (peer_resource); + g_clear_object (&reply_msg); + g_clear_object (&data->self); g_free (self_jid); g_free (data->stream_id); tp_weak_ref_destroy (data->weak_object); @@ -2161,7 +2164,6 @@ gabble_bytestream_factory_negotiate_stream (GabbleBytestreamFactory *self, { GabbleBytestreamFactoryPrivate *priv; struct _streaminit_reply_cb_data *data; - gboolean result; g_assert (GABBLE_IS_BYTESTREAM_FACTORY (self)); g_assert (stream_id != NULL); @@ -2171,21 +2173,15 @@ gabble_bytestream_factory_negotiate_stream (GabbleBytestreamFactory *self, priv = GABBLE_BYTESTREAM_FACTORY_GET_PRIVATE (self); data = g_slice_new (struct _streaminit_reply_cb_data); + data->self = g_object_ref (self); data->stream_id = g_strdup (stream_id); data->func = func; data->weak_object = tp_weak_ref_new (object, user_data, NULL); - result = _gabble_connection_send_with_reply (priv->conn, msg, - streaminit_reply_cb, G_OBJECT (self), data, error); + conn_util_send_iq_async (priv->conn, msg, NULL, + streaminit_reply_cb, data); - if (!result) - { - g_free (data->stream_id); - tp_weak_ref_destroy (data->weak_object); - g_slice_free (struct _streaminit_reply_cb_data, data); - } - - return result; + return TRUE; } /* |