This implements the suggested API from #323 with a caveat: currently the
SASL mechanisms are tied to IRC and needs a bit of extra work to make
them generic enough to move to the regular src/core instead of solely in
src/irc/core.
This greatly simplifies scripts for each mechanism since this handles
the splitting and reassembly of the 400 byte fragments going to and
coming from the server.
The ECDSA-NIST256P-CHALLENGE mechanism has been reimplemented using this
new API and found to work.
If sasl_timeout is never initialized with a valid timeout id then
calling /disconnect on the server calls g_source_remove() with 0 as tag,
causing an harmless error message to be printed.
Beside that, the sasl_timeout field is defined as a unsigned int.
We can use 0 as sentiel since g_timeout_add returns tags that are always
greater than zero.
Replace G_SOURCE_REMOVE with FALSE for the compatibility sake.
Zero the timeout id after g_source_remove and when exipred.
Save the sasl_* options in sig_chatnet_saved().
The only supported methods are PLAIN and EXTERNAL, the latter is untested as of
now.
The code gets the values from the keys named sasl_{mechanism,username,password}
specified for each chatnet.