[Pidgin] #16188: Jabber capabilities not updated properly when new presence recieved

Pidgin trac at pidgin.im
Mon Apr 7 08:52:46 EDT 2014


#16188: Jabber capabilities not updated properly when new presence recieved
-------------------------+-------------------------
 Reporter:  wpettersson  |      Owner:  deryni
     Type:  defect       |     Status:  new
Milestone:               |  Component:  XMPP
  Version:  2.10.9       |   Keywords:  voice video
-------------------------+-------------------------
 I am running Pidgin 2.10.9 (and libpurple 2.10.9) on a Gentoo box.

 I have an XMPP account, and a Google account. The XMPP logs in via Pidgin,
 and the Google account uses GMail (webpage on my PC).

 If I open up the GMail web page, and then start up pidgin, I can use voice
 and video calling both ways. I can call GMail from pidgin, and I can call
 pidgin from GMail. If I then close GMail, I go offline. All seems to be
 working fine so far.

 If I re-open GMail (without restarting pidgin), however, the "Audio Call"
 and "Audio/Video Call" options do not return. I do appear online once
 again. IMs get sent fine. If I try to initiate a voice or video call from
 GMail, it starts calling from GMail but pidgin does not show anything (not
 even in Debug Window). Restarting pidgin always fixes the issue.

 I've tried to debug this myself. Lines (roughly) 3475 to 3511 of jabber.c
 outline a chunk of code that checks various jabber resource capabilities.
 When things are working, the capabilities NS_GOOGLE_VOICE and
 NS_GOOGLE_VIDEO are found. After closing and opening GMail, neither of
 these capabilities are found. I checked this by adding a
 purple_debug_info() call to show what capabilities are found.

 I've also checked the <presence> that gets sent by Google. There seems to
 be a difference here for some reason. The first presence Pidgin receives
 (after restarting pidgin) has some extra characters after my name+domain.
 Any further presence drops these. I thought it might be pidgin doing
 something differently, but it's being logged as Recv (ssl), which if I
 read the code right means that this is the raw decrypted stream.

 Here's an example of the "first" presence received after restarting
 pidgin:

 (22:42:09) jabber: Recv (ssl)(410): <presence
 to='william at ewpettersson.se/65cfec59-3424-4043-b694-b84092c8f77d'
 from='william.pettersson at gmail.com/gmail.2F775F64'><status/><priority>24</priority><c
 ver='1.1' ext='pmuc-v1 sms-v1 camera-v1 video-v1 voice-v1'
 node='http://mail.google.com/xmpp/client/caps'
 xmlns='http://jabber.org/protocol/caps'/><x xmlns='vcard-
 temp:x:update'><photo>cc6559d138bb41aab333a60c4e580228f72281ea</photo></x></presence>

 And here's an example of the "second":

 (22:43:42) jabber: Recv (ssl)(373): <presence to='william at ewpettersson.se'
 from='william.pettersson at gmail.com/gmail.2F775F64'><status/><priority>24</priority><c
 ver='1.1' ext='pmuc-v1 sms-v1 camera-v1 video-v1 voice-v1'
 node='http://mail.google.com/xmpp/client/caps'
 xmlns='http://jabber.org/protocol/caps'/><x xmlns='vcard-
 temp:x:update'><photo>cc6559d138bb41aab333a60c4e580228f72281ea</photo></x></presence>


 I have no idea if this is in any way related to my issue. I've spent a few
 hours reading code and adding purple_debug_info() calls but I can't find
 any hints as to why capabilities aren't found so if anyone has any other
 tips on what to try next please let me know.

-- 
Ticket URL: <https://developer.pidgin.im/ticket/16188>
Pidgin <https://pidgin.im>
Pidgin


More information about the Tracker mailing list