no protocols in nullclient (MSVC)

Daniel Atallah daniel.atallah at
Fri May 25 23:01:09 EDT 2007

On 5/25/07, David Byron <dbyron at> wrote:
> I went ahead and changed /dev/null in defines.h to a directory that actually
> exists, but I still get a NULL pointer from purple_plugins_get_protocols.
> Changing CUSTOM_PLUGIN_PATH from the empty string to my
> win32-install-dir/plugins directory, I get the protocols I expect.  Do other
> people need to change defines.h to get protocols to appear?

Yes, this is how nullclient works, you need to define stuff appropriately.

> I entered my yahoo ID in and got some output I didn't expect but I have some
> more homework to do to figure out what's supposed to be happening here.
> connection: Connecting. gc = 00A539D8
> dnsquery: Performing DNS lookup for
> prefs: /purple/savedstatus/default changed, scheduling save.
> dnsquery: IP resolved for
> proxy: Attempting connection to
> proxy: Connecting to with no proxy
> proxy: Connection in progress
> proxy: Connected to
> yahoo: 93 bytes to read, rxlen is 113
> yahoo: Yahoo Service: 0x57 Status: 1
> yahoo: yahoo status: 0
> yahoo: 34 bytes to read, rxlen is 54
> yahoo: Yahoo Service: 0x54 Status: -1
> yahoo: Error in YMSG stream, got something not a YMSG packet!account:
> Disconnect
> ing account 00A52658
> connection: Disconnecting connection 00A539D8
> connection: Destroying connection 00A539D8

What you're running into here is the glib GIOChannel incompatibility
issue.  The win32 GIOChannel implementation changed between Glib 2.6.x
and 2.8.x from a thread based model to a more efficient WSASelect()
based model.  Unfortunately there are some glitches in the new
implementation which mean it doesn't yet work with Pidgin.

We've worked around this by copying the 2.6.x implementation into
libpurple - the code that glues it all together is in pidgin, so that
is why you're having problems.

If you look at pidgin/gtkeventloop.c:99, where it sets up the
GIOChannel, you'll see that it uses
"wpurple_g_io_channel_win32_new_socket()" instead of
g_io_channel_unix_new(); you'll need to do the same thing with


More information about the Devel mailing list