[Telepathy-commits] [telepathy-gabble/master] fix repeated creation (and leaking) of self_jid when invited to a MUC
Robert McQueen
robert.mcqueen at collabora.co.uk
Tue Aug 19 10:53:59 PDT 2008
20080726234603-418b8-34208096c5effb1d2fc61c5d2279f91a22bec933.gz
---
src/muc-channel.c | 16 +++++-----------
1 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/src/muc-channel.c b/src/muc-channel.c
index d51d9a8..37bf1e8 100644
--- a/src/muc-channel.c
+++ b/src/muc-channel.c
@@ -359,7 +359,9 @@ gabble_muc_channel_constructor (GType type, guint n_props,
TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE,
G_MAXUINT);
- /* add ourselves to group mixin if needed */
+ tp_group_mixin_add_handle_owner (obj, self_handle, conn->self_handle);
+
+ /* add ourselves to members if we initiated the join */
if (priv->invite_self)
{
GError *error = NULL;
@@ -369,12 +371,12 @@ gabble_muc_channel_constructor (GType type, guint n_props,
g_assert (priv->invitation_message == NULL);
g_array_append_val (members, self_handle);
- tp_group_mixin_add_handle_owner (obj, self_handle, conn->self_handle);
tp_group_mixin_add_members (obj, members,
"", &error);
g_assert (error == NULL);
g_array_free (members, TRUE);
}
+ /* add ourselves to local_pending if we were invited */
else
{
g_assert (priv->initiator != 0);
@@ -2242,7 +2244,6 @@ _gabble_muc_channel_handle_invited (GabbleMucChannel *chan,
{
GabbleMucChannelPrivate *priv;
TpBaseConnection *conn;
- TpHandle self_handle;
TpIntSet *set_members, *set_pending;
TpHandleRepoIface *contact_handles;
@@ -2263,22 +2264,15 @@ _gabble_muc_channel_handle_invited (GabbleMucChannel *chan,
set_members = tp_intset_new ();
set_pending = tp_intset_new ();
- /* This is not a channel-specific handle, so no need to add its owner */
tp_intset_add (set_members, inviter);
+ tp_intset_add (set_pending, chan->group.self_handle);
- /* create our own identity for the room */
- create_room_identity (chan, &self_handle, &priv->self_jid);
- tp_intset_add (set_pending, self_handle);
-
- tp_group_mixin_add_handle_owner ((GObject *) chan, self_handle,
- conn->self_handle);
tp_group_mixin_change_members ((GObject *) chan, message, set_members,
NULL, set_pending, NULL, inviter,
TP_CHANNEL_GROUP_CHANGE_REASON_INVITED);
tp_intset_destroy (set_members);
tp_intset_destroy (set_pending);
- tp_handle_unref (contact_handles, self_handle);
/* queue the message */
if (message && (message[0] != '\0'))
--
1.5.6.3
More information about the Telepathy-commits
mailing list