GNOME Bugzilla – Bug 569837
Presence is not showing correct icon in Contact List
Last modified: 2009-02-10 12:36:00 UTC
Please describe the problem: I only have three contacts, plus the Echo Test contact, but none of them show the correct Presence icon. I do not see a green icon, or gray icon. I see the little buddy icon. I am running on Fedora 10 x86_64 with Ekiga 3.0.2 and OPAL 3.4.4. So are my contacts. I am behind a Fedora Linux server acting as a router. I have NAT working properly. I can successfully receive and send video and voice calls. So can my contacts. The icon next to my contacts remains the "buddy" icon at ALL TIMES. I can make a video/voice call to either one of them and the icon state never changes. It never changes on my contacts side either. Steps to reproduce: 1. Start Ekiga 2. "Buddy" icon next to all contact names including Echo Test. Actual results: "Buddy" icon is always displayed at all times. Expected results: Green icon or Gray icon to display presence state. Does this happen every time? Yes. Other information: I have been talking on the "ekiga-list" about this issue and no suggestions on a fix have been made. I will attach the debug log. The debug log was run when all my contacts were offline, but they did not have "grey" icons next to them. They were all the "buddy" type icons.
Created attachment 127548 [details] ekiga debug log Debug log that was mentioned in my original report. This was taken when all my contacts were offline. I was seeing the "buddy" icon instead of "grey" icons for ALL contacts.
I have tested here. Compiled OPAL, PTLIB, Ekiga 3.0.2 and I can not reproduce. That 'limitation' was fixed from 3.0.1 to 3.0.2 with a fix both in Ekiga and in OPAL. I'm sorry, but I think you do not run the correct versions.
Created attachment 127651 [details] screenshot proof Damien, please do not close this again. I'll provide you a screenshot. Ekiga 3.0.2 OPAL 3.4.4 PTLIB 2.4.4 Here's the Fedora packages update page. These are real. https://admin.fedoraproject.org/updates/F10/FEDORA-2009-0651 This is ridiculous I'm having to go this far to prove this to you. Just because /you/ cannot reproduce it doesn't mean it isn't happening. You obviously have never programmed for a commercial company before.
I can't reproduce it, and nobody else in our team can. But anyway, we'll debug it! Please recompile Ekiga, and in method : void Opal::Sip::EndPoint::OnPresenceInfoReceived (const PString & user, const PString & basic, const PString & note) Add at the end : std::cout << _uri << " " << presence << " " << status << std::endl << std::flush; Just before, when you see runtime.run_in_main, please add : std::cout << "Signal emitted" << std::endl << std::flush; I'm waiting for a new debug output.
Created attachment 127655 [details] debug patch This is the patch I applied to add the code you requested. I want to make sure I added it in the correct location.
Created attachment 127656 [details] ekiga debug log with debug patch This is the debug log (-d 4) from running the patched Ekiga.
It seems the method is not called. Can you confirm ?
Yes, I diff'd and grep'd the output and found no additional text. I verified the patch was applied to the correct source file and was compiled in. $ strings /usr/bin/ekiga | grep "Signal emitted" Signal emitted I'm not at all familiar with Ekiga's code, but I am a competent programmer in multiple languages. I'm ready to do whatever additional gdb'ing or whatever that needs to be done next. May I suggest that I look at where Ekiga should have called that method and find out why it wasn't called? (point me where that might be) Thanks.
That would be nice... It is extremely rare to see people reporting bugs and being able to follow up on them! This method should be called from OPAL, in src/sip/handlers.cxx, in method OnReceivedPresenceNOTIFY(....) : if (!xmlPresence.Load(body)) { endpoint.OnPresenceInfoReceived (from.AsQuotedString(), basic, note); return PFalse; } If we can not load the XML, we call OnPresenceInfoReceived in the endpoint. I do not see why it would not be called, except if OPAL_PTLIB_EXPAT is not defined, which would be a huge bug in the pack.
I noticed something interesting when I was attempting to rebuild OPAL from the Fedora source RPM. In the OPAL config.log: conftest.cpp: In function 'int main()': conftest.cpp:8: error: 'PXMLParser' was not declared in this scope conftest.cpp:8: error: expected `;' before 'parser' configure:5649: $? = 1 configure: failed program was: | | #include <ptbuildopts.h> | #include <ptlib.h> | #include <ptclib/pxml.h> | | int main() | { | PXMLParser parser; | } | configure:5670: checking PTLIB has expat configure:5672: result: no I had the ptlib-devel and the expat-devel package installed. I rebuilt ptlib and it found expat just fine. Is this something to be concerned about?
Perhaps it means that the PTLIB RPM provided by Fedora is not built with EXPAT. It would mean presence can not work at all... Weird because I think I remember it was working for you except for offline contacts. Well, just recompile and see...
Success! Rebuilding ptlib and opal with --enable-expat has fixed it. Perhaps it was accidentally thought that that option was by default enabled. I've created Red Hat bug 483411. Thanks Damien. I'll let you close this.
Ah good, you see there was no bug :P Thanks for working on this!
In debian packaging there is no --enable-expat (http://experimental.debian.net/fetch.php?&pkg=ptlib&ver=2.4.2-3&arch=amd64&stamp=1229087820&file=log&as=raw), still it works. --enable-expat is on by default. There must be another thing which disables expat on Fedora.
This has been fixed in Fedora 10 as of the following releases: ekiga-3.0.2-2.fc10 opal-3.4.4-4.fc10 ptlib-2.4.4-2.fc10