view PLUGIN_HOWTO @ 24065:85bed17fe5c1

The variable we use to keep track of the watcher of the ssl connection should be unsigned. This isn't really a problem in Pidgin, where we use glib's mainloop and GIOChannels because glib starts assigning the handle IDs sequentially starting from 1. But if an eventloop implementation ever returns a handle ID greater than the largest possible signed integer (2,147,483,647) then we won't be able to remove the watcher because purple_ssl_close() in sslconn.c only removes it if inpa > 0, and since it interprets inpa as a signed value then handles over 2,147,483,647 appear as negative numbers. I stumbled upon this when playing around with libevent, which can use epoll. My implementation generated a random handle ID which was sometimes greater than 2,147,483,647. I don't believe this breaks binary compatibility. And I don't think it breaks source compatibility, but I guess it might depend on what compiler you're using.
author Mark Doliner <mark@kingant.net>
date Thu, 04 Sep 2008 18:04:29 +0000
parents 83ec0b408926
children db5a58aabe38
line wrap: on
line source

For information on writing a plugin for Purple, Pidgin or Finch, go
http://developer.pidgin.im and click on API.  From there, see the HOWTOs in the
"Related Pages" section.

You can also generate this documentation locally by installing
doxygen and graphviz dot, then running "make docs" in the
source tree.  The documentation will be in the docs/html directory.