[Pidgin] #11489: Pidgin does not always unlock from the locked resource
Pidgin
trac at pidgin.im
Tue Mar 2 15:12:41 EST 2010
#11489: Pidgin does not always unlock from the locked resource
--------------------+-------------------------------------------------------
Reporter: rjoly | Owner: deryni
Type: defect | Status: new
Component: XMPP | Version: 2.6.6
Keywords: |
--------------------+-------------------------------------------------------
This ticket is related to changes made to address ticket #9874 whereby
pidgin will unlock from the locked resource when receiving presence
information. I have tested these changes and seem to work pretty well
however I'm running into one remaining problematic case. Here is the
scenario:
0. [important] XMPP server is configured to route messages to *all*
clients that share the highest priority level.
1. Login with ClientA/home, priority 10 and ClientA/work, same priority 10
concurrently.
2. Login with ClientB/home.
3. Open a conversation from ClientB to ClientA and send a message.
ClientA/home and ClientA/work both receive a copy of the message, because
the both share the highest priority.
4. ClientA/Home replies to the message and pidgin at ClientB locks on the
JID of clientA/Home such that any further outgoing message from ClientB
will be sent to ClientA/Home exclusively.
5. ClientA/Work ceases to receive any further message (as expected) and
eventually sends a chatstate stanza to report that its chat state is
'inactive' as per XEP-0085.
6. ClientB receives that chatstate stanza and will unlock from
ClientA/Home with whom it had been conversing and will lock on
ClientA/Work instead such that any further messages sent from ClientB will
be delivered to ClientA/Work exclusively.
So what happened is that by reporting that is has become inactive,
ClientA/Work has effectively highjacked the conversation from ClientA/Home
such that it has now become the recipient of any new message composed by
ClientB. It is kind of ironic that reporting oneself as 'inactive' will
get you thrown in a conversation :)
IMO, pidgin should not lock on a not-currently-locked-to client simply by
receiving chat states and instead should keep the current lock.
--
Ticket URL: <http://developer.pidgin.im/ticket/11489>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list