Pidgin keyrings status update.

Vivien Bernet-Rollande vivien.bernet-rollande at
Fri Aug 15 01:51:34 EDT 2008

Hash: SHA1

Hello everyone.
I just thought I'd let you all know how my project is going.

I have two working keyring plugins. One for gnome-keyring and one to
preserve compatibility with the existing accounts.xml. I also have a
config interface in both pidgin and finch allowing to set the keyring.
Of course, loading, unloading, default behaviour, fallback, are
implemented and working. Most of the get() calls have been rewritten
to call the async functions. I still have to do part of XMPP's auth.c
that has a fairly complex structure (therefore tricky to rewrite as
async), and myspace.c which accesses directly account->password (and
also has a fairly complex structure and requires understanding what
the code does). Right now, the myspace plugin should be considered
broken on my branch. (Could be fixed to use the compatibility mode
pretty quick, but I'd rather have it use directly the right code).
That's 4 calls in XMPP, and 3 accesses in myspace. Maybe more hidden

purple_connection_get_password() (or something like that) also
accessed directly account->password. I've fixed it to use
purple_account_get_password() instead, and wrote an async version of
it, that calls the async function of the keyring. Right now, I think
only the silc prpl uses it, but all calls should be changed. (around
25 of them according to grep + wc), but I'll do that when the rest is

Also remaining is all the "other language binding" stuff. Part of it
seems to be generated automatically, and I'm not sure what part it
represents, how it works exactly, nor if it can use callbacks. (I must
say I haven't looked much either). That, and some autotools stuff.
Basically, I've struggled a few hours with autotools to get it to
actually compile my code. Right now, the librairy for the gnome
keyring plugin is hardcoded in the, and I need to move
that upstream to the file (so more rtfm in perspective).
Lastly, the button to change an eventual master password isn't there
yet. This should be really fast on pidgin, but I haven't found a way
to do it for Finch. (I must say I haven't looked really far into it

I know (well, rather, heard) Adium has had support for Apple-Keychain
for quite some time now

Other than that, well the code is usable (I've been saving my
passwords in gnome keyring for a few days now). Haven't tested that
myspace prpl, but it probably won't work properly if you remember
passwords for it. Anyone is invited to pull my code, build it and run
it. Build might fail (haven't tested) if you do not have the
Gnome-Keyring headers and librairies.

I'm really interrested in the following :
 - build errors
 - crash (allong with backtrace and behaviour, you know the story)
 - weird, unexpected behaviour
 - comments, questions, ideas for improvements
 - anything you think might help me
 - problems when importing your old "accounts.xml"
 - problems with said file when going back to the main branch version
 - things you think I should do first

I you plan on running my code, I'd suggest that you backup your
~/.purple/ before, just in case. Haven't had any problem for the last
three days, but better safe than sorry. Also, I haven't tested all the
code I've written or modified recently. Untested code includes : some
error handling and recovery code (as in "code that should never run"),
and non msn or xmpp plugins. Last "heavy" test was like two days back,
so things might have been broken since then that I'm not aware of.

Also, I am aware that :
 - there are a few mem leaks. Most have comments for future cleanup.
 - internal keyring will segfault when another client connects from
another machine (just saw that, will investigate, most likely some
access to something that has been cleaned up).
 - I have DBUS errors with my signals.
 - apparently the account creation doesn't seem to work properly (just
saw that as well)
 - when things are broken, it goes really bad

Last minute edit : apparently, and after deeper testing, it looks like
what seemed like a small XMPP bug is not an XMPP bug but a much larger
bug. I guess I've broken something, likely in connection.c or
something. It's getting pretty late though (nearly 8 am here), so I'll
figure that out later. Forget what I said earlier, after restarting
it, the current head of the branch does not work (really. don't even
try.). If you still want to have fun, try pulling a revision or two

Now, sleep.

- -- Vivien
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla -


More information about the Devel mailing list