[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