annotate PLUGIN_HOWTO @ 15784:eed84b59c252

There were a few problems here 1. Raw gnutls error codes were being printed in debug messages. This isn't necessarily bad, but it's much less useful than the text returned from gnutls_strerror(). Never underestimate the value of good error handling. 2. ssl_gnutls_read() and ssl_gnutls_write() were returning 0 when there was an error reading from or writing to the ssl connection. They should return -1 to indicate failure (0 normally indicates that the server closed the connection) 3. ssl_gnutls_read() and ssl_gnutls_write() weren't setting errno when they failed. errno would be set to something random, which seemed to frequently be EAGAIN for me when reading, which causes Gaim to keep trying to read from the connection even though it's closed. Ideally ssl-gnutls.c would have a function equivalent to set_errno() in ssl-nss.c, but the gnutls documentation does a poor job of telling you what possible error codes could be returned from gnutls_record_recv() and gnutls_record_send() Even better would be if we allowed the ssl plugins to keep track of the error message themselves, then added a new ssl ops function to fetch the message from the plugin.
author Mark Doliner <mark@kingant.net>
date Tue, 13 Mar 2007 06:53:43 +0000
parents 7acebc9d043f
children cc3c50816cc9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14505
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
1 For information on writing a plugin for Gaim, go
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
2 http://gaim.sourceforge.net/api/ and see the HOWTOs in the
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
3 "Related Pages" section.
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
4
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
5 You can also generate this documentation locally by installing
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
6 doxygen and graphviz dot, then running "make docs" in the Gaim
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
7 source tree. The documentation will be in the docs/html directory.
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
8
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
9 This next paragraph is old and possibly out of date:
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
10 Compilation of the plugins is fairly straight-forward; there is a
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
11 Makefile in this directory that has a rule for making the .so file
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
12 from a .c file. No modification of the Makefile should be necessary,
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
13 unless if you simply want to type 'make' to have it made; otherwise,
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
14 'make filename.so' will take filename.c and make the .so plugin from
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
15 it. If you need to link in with extra libraries, you can set the
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
16 environment variable PLUGIN_LIBS to be the libraries you want to link
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
17 with.
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
18
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
19 It should be possible to compile plugins outside of the Gaim source
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
20 tree, which is a much cleaner solution.