[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