- Connect an Idle account - Be sure you don't have any text handler running or activatable - Receive a message on IRC - Idle starts looping like a crazy ** (telepathy-idle:13023): DEBUG: idle_im_channel_close: called on 0x1202d40 ** (telepathy-idle:13023): DEBUG: idle_im_channel_close: Not really closing, I still have pending messages ** (telepathy-idle:13023): DEBUG: _im_channel_closed_cb: reopening channel with handle 2 due to pending messages ** (telepathy-idle:13023): DEBUG: idle_im_channel_close: called on 0x1202d40 ** (telepathy-idle:13023): DEBUG: idle_im_channel_close: Not really closing, I still have pending messages ** (telepathy-idle:13023): DEBUG: _im_channel_closed_cb: reopening channel with handle 2 due to pending messages ** (telepathy-idle:13023): DEBUG: idle_im_channel_close: called on 0x1202d40 ** (telepathy-idle:13023): DEBUG: idle_im_channel_close: Not really closing, I still have pending messages ** (telepathy-idle:13023): DEBUG: _im_channel_closed_cb: reopening channel with handle 2 due to pending messages ** (telepathy-idle:13023): DEBUG: idle_im_channel_close: called on 0x1202d40 ... method call sender=:1.141 -> dest=:1.176 serial=1546 path=/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2; interface=org.freedesktop.Telepathy.Channel; member=Close method return sender=:1.176 -> dest=:1.141 reply_serial=1544 array [ string "org.freedesktop.Telepathy.Channel.Interface.Messages" ] signal sender=:1.176 -> dest=(null destination) serial=60 path=/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2; interface=org.freedesktop.Telepathy.Channel; member=Closed signal sender=:1.176 -> dest=(null destination) serial=61 path=/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070; interface=org.freedesktop.Telepathy.Connection.Interface.Requests; member=ChannelClosed object path "/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2" signal sender=:1.176 -> dest=(null destination) serial=62 path=/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070; interface=org.freedesktop.Telepathy.Connection.Interface.Requests; member=NewChannels array [ struct { object path "/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2" array [ dict entry( string "org.freedesktop.Telepathy.Channel.ChannelType" variant string "org.freedesktop.Telepathy.Channel.Type.Text" ) dict entry( string "org.freedesktop.Telepathy.Channel.TargetHandleType" variant uint32 1 ) dict entry( string "org.freedesktop.Telepathy.Channel.InitiatorHandle" variant uint32 2 ) dict entry( string "org.freedesktop.Telepathy.Channel.TargetID" variant string "cassidy" ) dict entry( string "org.freedesktop.Telepathy.Channel.InitiatorID" variant string "cassidy" ) dict entry( string "org.freedesktop.Telepathy.Channel.Interfaces" variant array [ string "org.freedesktop.Telepathy.Channel.Interface.Messages" ] ) dict entry( string "org.freedesktop.Telepathy.Channel.TargetHandle" variant uint32 2 ) dict entry( string "org.freedesktop.Telepathy.Channel.Requested" variant boolean false ) ] } ] signal sender=:1.176 -> dest=(null destination) serial=63 path=/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070; interface=org.freedesktop.Telepathy.Connection; member=NewChannel object path "/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2" string "org.freedesktop.Telepathy.Channel.Type.Text" uint32 1 uint32 2 boolean false signal sender=:1.141 -> dest=(null destination) serial=1547 path=/org/freedesktop/Telepathy/Account/idle/irc/bar_2dci0; interface=com.nokia.Account.Interface.Stats; member=StatsChanged array [ dict entry( string "ChannelCount" variant array [ ] ) ] method call sender=:1.141 -> dest=org.freedesktop.DBus serial=1548 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch string "type='signal',sender=':1.176',path='/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2',interface='org.freedesktop.Telepathy.Channel'" method call sender=:1.141 -> dest=org.freedesktop.DBus serial=1549 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch string "type='signal',sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0=':1.176'" method call sender=:1.141 -> dest=org.freedesktop.DBus serial=1550 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch string "type='signal',sender=':1.176',path='/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2',interface='org.freedesktop.Telepathy.Channel'" method call sender=:1.141 -> dest=org.freedesktop.DBus serial=1551 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch string "type='signal',sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0=':1.176'" method call sender=:1.141 -> dest=:1.176 serial=1552 path=/org/freedesktop/Telepathy/Connection/idle/irc/bar_2dci_40irc_2efreenode_2enet0x1215070/ImChannel2; interface=org.freedesktop.Telepathy.Channel; member=GetInterfaces signal sender=:1.141 -> dest=(null destination) serial=1553 path=/org/freedesktop/Telepathy/Account/idle/irc/bar_2dci0; interface=com.nokia.Account.Interface.Stats; member=StatsChanged array [ dict entry( string "ChannelCount" variant array [ dict entry( string "org.freedesktop.Telepathy.Channel.Type.Text" uint32 1 ) ] ) ] And then Close() is called again, etc.
This probably means Idle doesn't implement Destroyable on its text channels. Every CM with this respawning behaviour must also implement Destroyable, to avoid this loop.
telepathy-idle 0.1.5 (2009-09-14) ... * Implement Destroyable for IM channels. (wjt)
Stupid me. It's not in the interfaces list. Patch to follow...
Created attachment 43250 [details] [review] ImChannel: include Destroyable in Channel.Interfaces.
Review of attachment 43250 [details] [review]: r+
Fixed in master; will be in 0.1.9.
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.