Libpurple can't connect - purple_presence_is_online failed

938 views Asked by At

I am writing myself a small jabber client. I have used code from Libpurple.com and on Linux (Mint) everything works fine. With libraries linked program compiles with no errors and receives messages.

But when I use the same code on Windows 7, link all neccessary libraries and with Cygwin installed and PATH set, program compiles with no errors, but then NetBeans (IDE I use in Windows and Linux) says 'RUN FAILED'

When I run program from windows command line it says:

libpurple initialized. Running version 2.10.7.
** <myclient.exe:6500>: CRITICAL **: purple_presence_is_online: assertion 'presence != NULL' failed

and then it freeze. I already tried going back to libpurple 2.10.3 (the version I have in Linux) but still the same. Turning firewall off did'n help either.

4

There are 4 answers

0
vrishab On

Few things to note:

  1. Each OS has its own issues when a program is deployed. So, ignore the fact that your client is working in Linux. Start with the fact, that your program / libpurple didn't work in Windows.

  2. Try to see if there is a client ( pidgin etc ) which uses the same code path ( the function where the assertion fails ), and succeeds. This is to do basic sanity check that the libpurple code is in fact usable in that environment ( Cygwin )

  3. If there is any traffic between your client and the server, try getting a wireshark traffic dump, and compare it between working ( Linux ) and failing ( Cygwin ) environment.

0
Kashif On

Why not use a simple XMPP client library like GLOOX (http://camaya.net/gloox) instead of libPurple. GLOOX is a cross platform library that do not need CYGWIN on Windows to compile. And its complete, providing implementation for all the essentail XMPP estensions.

However, if you want to connect to other non-XMPP networks like Yahoo, Facebook, then libPurple will definitely is the answer.

0
Dmitry Grigoryev On

Since your issue is hard to reproduce, I'd suggest you use the debugger to investigate where that "presence" pointer comes from, and which code block sets it to NULL. Then you could ask "why purple_stupid_function() returns a NULL pointer" which is much easier to answer.

0
Lou Franco On

The last time I looked at LibPurple (years ago) I could only get it working with MinGW, not Cygwin.