Mercurial > pidgin
changeset 31886:4bf9b7cf7810
When receiving an invite to join a GroupChat, first check if a matching room entry
already exists (ie, already joined, or invite popup still pending).
If so, just ignore the invite.
author | andrew.victor@mxit.com |
---|---|
date | Sat, 13 Aug 2011 22:01:39 +0000 |
parents | ff8ab76da6bb |
children | 1d47a7ee0b61 |
files | libpurple/protocols/mxit/multimx.c |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/mxit/multimx.c Sat Aug 13 17:11:59 2011 +0000 +++ b/libpurple/protocols/mxit/multimx.c Sat Aug 13 22:01:39 2011 +0000 @@ -277,7 +277,11 @@ GHashTable *components; struct multimx* multimx = NULL; - purple_debug_info(MXIT_PLUGIN_ID, "Groupchat invite to '%s' by '%s'\n", contact->alias, creator); + purple_debug_info(MXIT_PLUGIN_ID, "Groupchat invite to '%s' (roomid='%s') by '%s'\n", contact->alias, contact->username, creator); + + /* Check if the room already exists (ie, already joined or invite pending) */ + if (find_room_by_username(session, contact->username) != NULL) + return; /* Create a new room */ multimx = room_create(session, contact->username, contact->alias, STATE_INVITED); @@ -307,7 +311,7 @@ multimx = find_room_by_username(session, contact->username); if (multimx == NULL) { multimx = room_create(session, contact->username, contact->alias, TRUE); - } + } else if (multimx->state == STATE_INVITED) { /* After successfully accepting an invitation */ multimx->state = STATE_JOINED;