Bug 28439

Summary: Traceback (KeyError) when user left a conversation with more than one user
Product: papyon Reporter: Florent Le Coz <louiz>
Component: generalAssignee: Louis-Francis Ratté-Boulianne <lfrb>
Status: NEW --- QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: medium    
Version: git master   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Florent Le Coz 2010-06-08 03:24:02 UTC
A papyon client CREATES a conversation with one contact, then invites one other contact. If the papyon client then leaves (papyon.Conversation.leave()) the conversation, the other clients don't get the "client left the conversation" message, and we are still in the conversation (we still receive the message sent in it).
Then, if both the two client leave the conversation, you get this traceback :


Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/papyon/switchboard_manager.py", line 77, in <lambda>
    lambda sb, contact: self.__on_user_left(contact))
  File "/usr/lib/pymodules/python2.6/papyon/switchboard_manager.py", line 138, in __on_user_left
    self._on_contact_left(contact)
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/switchboard.py", line 80, in _on_contact_left
    self.close()
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/switchboard.py", line 42, in close
    BaseP2PTransport.close(self)
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/base.py", line 76, in close
    self._transport_manager._unregister_transport(self)
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/transport_manager.py", line 72, in _unregister_transport
    signals = self._transport_signals[transport]
KeyError: <SwitchboardP2PTransport object at 0x9e3407c (papyon+msnp2p+transport+base+BaseP2PTransport at 0x9c95dc0)>


Reproducible: Always

How to reproduce step-by-step, with papyon debug :


* Create a conversation with one contact :
INFO:papyon.protocol.switchboard_manager:requesting new switchboard
INFO:papyon.protocol.switchboard_manager:New switchboard attached

* Invite one other contact in this conversation :
INFO:papyon.protocol.switchboard_manager:requesting new switchboard
DEBUG:papyon.transport:>>> XFR 14 SB
DEBUG:papyon.transport:<<< XFR 14 SB 65.54.48.157:1863 CKI 46036025.2295178.15520564 U messenger.msn.com 1
DEBUG:papyon.transport:<-> Connecting to 65.54.48.157:1863
DEBUG:papyon.transport:>>> USR 0 testlou2@hotmail.fr 46036025.2295178.15520564
DEBUG:papyon.transport:<<< USR 0 OK testlou2@hotmail.fr %E2%99%A5.%E2%99%A5
INFO:papyon.protocol.switchboard_manager:New switchboard attached
DEBUG:papyon.transport:>>> CAL 1 testlou9@hotmail.fr
DEBUG:papyon.transport:>>> CAL 2 testlou4@hotmail.fr
DEBUG:papyon.transport:<<< CAL 1 RINGING 46036025
DEBUG:papyon.transport:<<< JOI testlou9@hotmail.fr testlou9 1342472230
on_conversation_user_joined
DEBUG:papyon.transport:<<< CAL 2 RINGING 46036025
DEBUG:papyon.transport:<<< JOI testlou4@hotmail.fr testlou2 1342472230
on_conversation_user_joined

* Say hi:
DEBUG:papyon.transport:>>> MSG 3 N 81
	Content-Type: 'text/plain; charset=utf-8'\r\n
	MIME-Version: '1.0'\r\n
	\r\n
	hi

* Get a response:
DEBUG:papyon.transport:<<< MSG testlou4@hotmail.fr testlou2 144
	X-MMS-IM-Format: 'FN=Sans; EF=; CO=000000; PF=0 ;RL=0'\r\n
	Content-Type: 'text/plain; charset=UTF-8'\r\n
	MIME-Version: '1.0'\r\n
	\r\n
	hello

* Leave the conversation :
DEBUG:papyon.transport:>>> OUT 4
INFO:papyon.protocol.switchboard:Disconnected

* You still get the messages:
DEBUG:papyon.transport:<<< MSG testlou4@hotmail.fr testlou2 117
	TypingUser: 'testlou4@hotmail.fr'\r\n
	Content-Type: 'text/x-msmsgscontrol'\r\n
	MIME-Version: '1.0'\r\n
	\r\n
	\r\n
DEBUG:papyon.transport:<<< MSG testlou4@hotmail.fr testlou2 152
	X-MMS-IM-Format: 'FN=Sans; EF=; CO=000000; PF=0 ;RL=0'\r\n
	Content-Type: 'text/plain; charset=UTF-8'\r\n
	MIME-Version: '1.0'\r\n
	\r\n
	still there ?
INFO:papyon.protocol.switchboard_manager:New switchboard attached

* Then the two other participants leave the conversation:
DEBUG:papyon.transport:<<< BYE testlou4@hotmail.fr
DEBUG:papyon.transport:<<< BYE testlou9@hotmail.fr
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/papyon/switchboard_manager.py", line 77, in <lambda>
    lambda sb, contact: self.__on_user_left(contact))
  File "/usr/lib/pymodules/python2.6/papyon/switchboard_manager.py", line 138, in __on_user_left
    self._on_contact_left(contact)
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/switchboard.py", line 80, in _on_contact_left
    self.close()
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/switchboard.py", line 42, in close
    BaseP2PTransport.close(self)
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/base.py", line 76, in close
    self._transport_manager._unregister_transport(self)
  File "/usr/lib/pymodules/python2.6/papyon/msnp2p/transport/transport_manager.py", line 72, in _unregister_transport
    signals = self._transport_signals[transport]
KeyError: <SwitchboardP2PTransport object at 0xa11161c (papyon+msnp2p+transport+base+BaseP2PTransport at 0x9eea990)>
DEBUG:papyon.transport:>>> OUT 10
DEBUG:papyon.transport:>>> OUT 11
INFO:papyon.protocol.switchboard:Disconnected
Comment 1 Florent Le Coz 2010-06-08 03:25:58 UTC
(In reply to comment #0)
> A papyon client CREATES a conversation with one contact, then invites one other
> contact.

Important note : This bug occurs only if WE (the papyon client) created the conversation. If we are just invited in one conversation, this never happens.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.