Initial support for TLS/SASL in Loudmouth 1.9.0

Loudmouth 1.9.0 is the first release from the unstable branch that will lead up to Loudmouth 2.0.

Keep in mind that 1.9.0 is very early beta software and is bound to change a lot until 2.0

The work for this branch started out on the 1.3 branch that is deprecated by this release. The reason I dropped the 1.3 branch was to be able to define the new API and not be stuck in considering how to design a new and better API as well as mapping the old API on top of it (in particular the synchronous API that has been removed from the 1.9 branch).

There are some fundamental differences between 1.2.x and 1.9, the first is that 1.9 is making heavy use of GObjects in order to provide a better and more robust design. Also, all data is encapsulated by function calls in order to not export internal information as much as in the 1.0/1.2 versions.

There has been some name changes, for example LmMessageNode has been replaced by LmStanzaNode and LmConnection was splitted in to LmClientBuilder and LmSession. As mentioned the synchronous API was dropped and only the asynchronous API will be supported.

An example of how you would create a connection in Loudmouth 1.9.0:

jid = lm_jid_new ("myname@domain.com");
builder = g_object_new (LM_TYPE_CLIENT_BUILDER,
                        "jid", jid, "password", password, NULL);
g_signal_connect (builder, "open-result",
                  G_CALLBACK (session_opened_cb),
                  NULL);

lm_client_builder_open_session (builder);

That said, the API will be in flux for the reminder of the 1.9.x branch but I will focus on stabilizing LmSession and LmStanzaNode APIs as those are the ones that will be mostly spread out in application code.

Download: http://ftp.imendio.com/pub/imendio/loudmouth/src/loudmouth-1.9.0.tar.bz2

The only updated example is the lm-send-async example where you can see how to use the new API.