Package: libpurple0
Version: 2.6.6-2
Severity: normal

How to reproduce:
-init libpurple
-connect to a IM server using TLS (tested with XMPP and MSN)
-quit libpurple
-init libpurple
-connect again

Result:
connection fails with
(16:54:31) nss: Handshake failed  (-8128)
which, according to [1] means:
SEC_ERROR_NO_MODULE -8128 Security library: no security module can perform the 
requested operation.

I am attaching a modified version of "nullclient", which does what
mentioned above, in order to help reproducing the issue.

See also my execution log.

Thanks,
Ludovico

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-3-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libpurple0 depends on:
ii  libavahi-client3         0.6.25-3        Avahi client library
ii  libavahi-common3         0.6.25-3        Avahi common library
ii  libavahi-glib1           0.6.25-3        Avahi glib integration library
ii  libc6                    2.10.2-6        Embedded GNU C Library: Shared lib
ii  libdbus-1-3              1.2.20-2        simple interprocess messaging syst
ii  libdbus-glib-1-2         0.84-1          simple interprocess messaging syst
ii  libgadu3                 1:1.9.0~rc2-1   Gadu-Gadu protocol library - runti
ii  libglib2.0-0             2.22.4-1        The GLib library of C routines
ii  libgstfarsight0.10-0     0.0.17-2+b1     Audio/Video communications framewo
ii  libgstreamer-plugins-bas 0.10.26-1       GStreamer libraries from the "base
ii  libgstreamer0.10-0       0.10.26-1       Core GStreamer libraries and eleme
ii  libidn11                 1.18-1          GNU Libidn library, implementation
ii  libmeanwhile1            1.0.2-3         open implementation of the Lotus S
ii  libnspr4-0d              4.8.3-1         NetScape Portable Runtime Library
ii  libnss3-1d               3.12.5-2        Network Security Service libraries
ii  libperl5.10              5.10.1-11       shared Perl library
ii  libsasl2-2               2.1.23.dfsg1-5  Cyrus SASL - authentication abstra
ii  libsasl2-modules         2.1.23.dfsg1-5  Cyrus SASL - pluggable authenticat
ii  libsilc-1.1-2            1.1.10-2        SILC generic library
ii  libsilcclient-1.1-3      1.1.10-2        SILC client library
ii  libxml2                  2.7.6.dfsg-2+b1 GNOME XML library
ii  libzephyr4               3.0-1           Project Athena's notification serv
ii  perl                     5.10.1-11       Larry Wall's Practical Extraction 
ii  perl-base [perlapi-5.10. 5.10.1-11       minimal Perl system
ii  pidgin-data              2.6.6-2         multi-protocol instant messaging c

Versions of packages libpurple0 recommends:
ii  ca-certificates               20090814   Common CA certificates
ii  libpurple-bin                 2.6.6-2    multi-protocol instant messaging l

Versions of packages libpurple0 suggests:
ii  tcl8.4                        8.4.19-4   Tcl (the Tool Command Language) v8
ii  tk8.4                         8.4.19-4   Tk toolkit for Tcl and X11, v8.4 -

-- no debconf information
/*
 * pidgin
 *
 * Pidgin is the legal property of its developers, whose names are too numerous
 * to list here.  Please refer to the COPYRIGHT file distributed with this
 * source distribution.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
 *
 */

#include "purple.h"

#include <glib.h>

#include <signal.h>
#include <string.h>
#include <unistd.h>

#include "defines.h"

/**
 * The following eventloop functions are used in both pidgin and purple-text. If your
 * application uses glib mainloop, you can safely use this verbatim.
 */
#define PURPLE_GLIB_READ_COND  (G_IO_IN | G_IO_HUP | G_IO_ERR)
#define PURPLE_GLIB_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL)

typedef struct _PurpleGLibIOClosure {
	PurpleInputFunction function;
	guint result;
	gpointer data;
} PurpleGLibIOClosure;

static void purple_glib_io_destroy(gpointer data)
{
	g_free(data);
}

static gboolean purple_glib_io_invoke(GIOChannel *source, GIOCondition condition, gpointer data)
{
	PurpleGLibIOClosure *closure = data;
	PurpleInputCondition purple_cond = 0;

	if (condition & PURPLE_GLIB_READ_COND)
		purple_cond |= PURPLE_INPUT_READ;
	if (condition & PURPLE_GLIB_WRITE_COND)
		purple_cond |= PURPLE_INPUT_WRITE;

	closure->function(closure->data, g_io_channel_unix_get_fd(source),
			  purple_cond);

	return TRUE;
}

static guint glib_input_add(gint fd, PurpleInputCondition condition, PurpleInputFunction function,
							   gpointer data)
{
	PurpleGLibIOClosure *closure = g_new0(PurpleGLibIOClosure, 1);
	GIOChannel *channel;
	GIOCondition cond = 0;

	closure->function = function;
	closure->data = data;

	if (condition & PURPLE_INPUT_READ)
		cond |= PURPLE_GLIB_READ_COND;
	if (condition & PURPLE_INPUT_WRITE)
		cond |= PURPLE_GLIB_WRITE_COND;

	channel = g_io_channel_unix_new(fd);
	closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond,
					      purple_glib_io_invoke, closure, purple_glib_io_destroy);

	g_io_channel_unref(channel);
	return closure->result;
}

static PurpleEventLoopUiOps glib_eventloops = 
{
	g_timeout_add,
	g_source_remove,
	glib_input_add,
	g_source_remove,
	NULL,
#if GLIB_CHECK_VERSION(2,14,0)
	g_timeout_add_seconds,
#else
	NULL,
#endif

	/* padding */
	NULL,
	NULL,
	NULL
};
/*** End of the eventloop functions. ***/

/*** Conversation uiops ***/
static void
null_write_conv(PurpleConversation *conv, const char *who, const char *alias,
			const char *message, PurpleMessageFlags flags, time_t mtime)
{
	const char *name;
	if (alias && *alias)
		name = alias;
	else if (who && *who)
		name = who;
	else
		name = NULL;

	printf("(%s) %s %s: %s\n", purple_conversation_get_name(conv),
			purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)),
			name, message);
}

static PurpleConversationUiOps null_conv_uiops = 
{
	NULL,                      /* create_conversation  */
	NULL,                      /* destroy_conversation */
	NULL,                      /* write_chat           */
	NULL,                      /* write_im             */
	null_write_conv,           /* write_conv           */
	NULL,                      /* chat_add_users       */
	NULL,                      /* chat_rename_user     */
	NULL,                      /* chat_remove_users    */
	NULL,                      /* chat_update_user     */
	NULL,                      /* present              */
	NULL,                      /* has_focus            */
	NULL,                      /* custom_smiley_add    */
	NULL,                      /* custom_smiley_write  */
	NULL,                      /* custom_smiley_close  */
	NULL,                      /* send_confirm         */
	NULL,
	NULL,
	NULL,
	NULL
};

static void
null_ui_init(void)
{
	/**
	 * This should initialize the UI components for all the modules. Here we
	 * just initialize the UI for conversations.
	 */
	purple_conversations_set_ui_ops(&null_conv_uiops);
}

static PurpleCoreUiOps null_core_uiops = 
{
	NULL,
	NULL,
	null_ui_init,
	NULL,

	/* padding */
	NULL,
	NULL,
	NULL,
	NULL
};

static void
init_libpurple(void)
{
	/* Set a custom user directory (optional) */
	purple_util_set_user_dir(CUSTOM_USER_DIRECTORY);

	/* We do not want any debugging for now to keep the noise to a minimum. */
	purple_debug_set_enabled(TRUE);

	/* Set the core-uiops, which is used to
	 * 	- initialize the ui specific preferences.
	 * 	- initialize the debug ui.
	 * 	- initialize the ui components for all the modules.
	 * 	- uninitialize the ui components for all the modules when the core terminates.
	 */
	purple_core_set_ui_ops(&null_core_uiops);

	/* Set the uiops for the eventloop. If your client is glib-based, you can safely
	 * copy this verbatim. */
	purple_eventloop_set_ui_ops(&glib_eventloops);

	/* Set path to search for plugins. The core (libpurple) takes care of loading the
	 * core-plugins, which includes the protocol-plugins. So it is not essential to add
	 * any path here, but it might be desired, especially for ui-specific plugins. */
	purple_plugins_add_search_path(CUSTOM_PLUGIN_PATH);

	/* Now that all the essential stuff has been set, let's try to init the core. It's
	 * necessary to provide a non-NULL name for the current ui to the core. This name
	 * is used by stuff that depends on this ui, for example the ui-specific plugins. */
	if (!purple_core_init(UI_ID)) {
		/* Initializing the core failed. Terminate. */
		fprintf(stderr,
				"libpurple initialization failed. Dumping core.\n"
				"Please report this!\n");
		abort();
	}

	/* Create and load the buddylist. */
	purple_set_blist(purple_blist_new());
	purple_blist_load();

	/* Load the preferences. */
	purple_prefs_load();

	/* Load the desired plugins. The client should save the list of loaded plugins in
	 * the preferences using purple_plugins_save_loaded(PLUGIN_SAVE_PREF) */
	purple_plugins_load_saved(PLUGIN_SAVE_PREF);

	/* Load the pounces. */
	purple_pounces_load();
}

GMainLoop *loop = NULL;

static gboolean
my_exit_loop(gpointer data) {
    fprintf(stderr, "********************* EXIT LOOP");
    g_main_loop_quit(loop);
    return FALSE;
}

static gboolean
my_quit(gpointer data) {
    fprintf(stderr, "********************* QUIT");
    purple_core_quit();

    g_timeout_add(5000, my_exit_loop, NULL);
    return FALSE;
}

static void
signed_on(PurpleConnection *gc, gpointer null)
{
	PurpleAccount *account = purple_connection_get_account(gc);
	printf("Account connected: %s %s\n", account->username, account->protocol_id);

	g_timeout_add(5000, my_quit, NULL);
}


static void
connect_to_signals_for_demonstration_purposes_only(void)
{
	static int handle;
	purple_signal_connect(purple_connections_get_handle(), "signed-on", &handle,
				PURPLE_CALLBACK(signed_on), NULL);
}

int main(int argc, char *argv[])
{
	GList *iter;
	int i, j, num = -1;
	GList *names = NULL;
	const char *prpl;
	char name[128];
	char *password;
	loop = g_main_loop_new(NULL, FALSE);
	PurpleAccount *account;
	PurpleSavedStatus *status;
	char *res;

	/* libpurple's built-in DNS resolution forks processes to perform
	 * blocking lookups without blocking the main process.  It does not
	 * handle SIGCHLD itself, so if the UI does not you quickly get an army
	 * of zombie subprocesses marching around.
	 */
	signal(SIGCHLD, SIG_IGN);

	for(j = 0; j < 2; ++j) {
	    init_libpurple();

	    printf("libpurple initialized.\n");

	    names = NULL;
	    iter = purple_plugins_get_protocols();
	    for (i = 0; iter; iter = iter->next) {
		    PurplePlugin *plugin = iter->data;
		    PurplePluginInfo *info = plugin->info;
		    if (info && info->name) {
			    printf("\t%d: %s\n", i++, info->name);
			    names = g_list_append(names, info->id);
		    }
	    }
	    if(num < 0) {
		printf("Select the protocol [0-%d]: ", i-1);
		res = fgets(name, sizeof(name), stdin);
		if (!res) {
			fprintf(stderr, "Failed to gets protocol selection.");
			abort();
		}
		sscanf(name, "%d", &num);

		printf("Username: ");
		res = fgets(name, sizeof(name), stdin);
		if (!res) {
			fprintf(stderr, "Failed to read user name.");
			abort();
		}
		name[strlen(name) - 1] = 0;  /* strip the \n at the end */

		/* Get the password for the account */
		password = getpass("Password: ");
	    }

	    prpl = g_list_nth_data(names, num);

	    /* Create the account */
	    account = purple_account_new(name, prpl);

	    purple_account_set_password(account, password);

	    /* It's necessary to enable the account first. */
	    purple_account_set_enabled(account, UI_ID, TRUE);

	    /* Now, to connect the account(s), create a status and activate it. */
	    status = purple_savedstatus_new(NULL, PURPLE_STATUS_AVAILABLE);
	    purple_savedstatus_activate(status);

	    connect_to_signals_for_demonstration_purposes_only();

	    g_main_loop_run(loop);

	}
	return 0;
}

#define CUSTOM_USER_DIRECTORY  "/tmp/testtmp"
#define CUSTOM_PLUGIN_PATH     ""
#define PLUGIN_SAVE_PREF       "/purple/nullclient/plugins/saved"
#define UI_ID                  "nullclient"
(17:28:35) prefs: Reading /tmp/testtmp/prefs.xml
(17:28:35) prefs: Finished reading /tmp/testtmp/prefs.xml
(17:28:35) dbus: okkk
(17:28:35) plugins: probing /usr/lib/purple-2/libnovell.so
(17:28:35) plugins: probing /usr/lib/purple-2/libicq.so
(17:28:35) plugins: probing /usr/lib/purple-2/libsilcpurple.so
(17:28:35) plugins: probing /usr/lib/purple-2/libirc.so
(17:28:35) plugins: probing /usr/lib/purple-2/libmsn.so
(17:28:35) plugins: probing /usr/lib/purple-2/libyahoojp.so
(17:28:35) plugins: probing /usr/lib/purple-2/libbonjour.so
(17:28:35) plugins: probing /usr/lib/purple-2/libzephyr.so
(17:28:35) plugins: probing /usr/lib/purple-2/libsimple.so
(17:28:35) plugins: probing /usr/lib/purple-2/statenotify.so
(17:28:35) plugins: probing /usr/lib/purple-2/libyahoo.so
(17:28:35) plugins: probing /usr/lib/purple-2/libmxit.so
(17:28:35) prpl-loubserp-mxit: Loading MXit libPurple plugin...
(17:28:35) plugins: probing /usr/lib/purple-2/psychic.so
(17:28:35) plugins: probing /usr/lib/purple-2/libmyspace.so
(17:28:35) plugins: probing /usr/lib/purple-2/ssl-nss.so
(17:28:35) plugins: probing /usr/lib/purple-2/libjabber.so
(17:28:35) plugins: /usr/lib/purple-2/libjabber.so is not usable because the 
'purple_init_plugin' symbol could not be found.  Does the plugin call the 
PURPLE_INIT_PLUGIN() macro?
(17:28:35) plugins: probing /usr/lib/purple-2/buddynote.so
(17:28:35) plugins: probing /usr/lib/purple-2/libsametime.so
(17:28:35) plugins: /usr/lib/purple-2/libsametime.so has a prefs_info, but is a 
prpl. This is no longer supported.
(17:28:35) plugins: probing /usr/lib/purple-2/log_reader.so
(17:28:35) plugins: probing /usr/lib/purple-2/tcl.so
(17:28:35) plugins: probing /usr/lib/purple-2/ssl.so
(17:28:35) plugins: probing /usr/lib/purple-2/joinpart.so
(17:28:35) plugins: probing /usr/lib/purple-2/liboscar.so
(17:28:35) plugins: /usr/lib/purple-2/liboscar.so is not usable because the 
'purple_init_plugin' symbol could not be found.  Does the plugin call the 
PURPLE_INIT_PLUGIN() macro?
(17:28:35) plugins: probing /usr/lib/purple-2/idle.so
(17:28:35) plugins: probing /usr/lib/purple-2/libxmpp.so
(17:28:35) util: Reading file xmpp-caps.xml from directory /tmp/testtmp
(17:28:35) jabber: creating hash tables for data objects
(17:28:35) plugins: probing /usr/lib/purple-2/perl.so
(17:28:35) plugins: probing /usr/lib/purple-2/libgg.so
(17:28:35) plugins: probing /usr/lib/purple-2/offlinemsg.so
(17:28:35) plugins: probing /usr/lib/purple-2/newline.so
(17:28:35) plugins: probing /usr/lib/purple-2/libqq.so
(17:28:35) plugins: probing /usr/lib/purple-2/autoaccept.so
(17:28:35) plugins: probing /usr/lib/purple-2/libymsg.so
(17:28:35) plugins: /usr/lib/purple-2/libymsg.so is not usable because the 
'purple_init_plugin' symbol could not be found.  Does the plugin call the 
PURPLE_INIT_PLUGIN() macro?
(17:28:35) plugins: probing /usr/lib/purple-2/libaim.so
(17:28:35) plugins: probing /usr/lib/purple-2/dbus-example.so
(17:28:35) prefs: /purple/status/scores/offline changed, scheduling save.
(17:28:35) prefs: /purple/status/scores/available changed, scheduling save.
(17:28:35) prefs: /purple/status/scores/invisible changed, scheduling save.
(17:28:35) prefs: /purple/status/scores/away changed, scheduling save.
(17:28:35) prefs: /purple/status/scores/extended_away changed, scheduling save.
(17:28:35) prefs: /purple/status/scores/idle changed, scheduling save.
(17:28:35) prefs: /purple/status/scores/offline_msg changed, scheduling save.
(17:28:35) util: Reading file accounts.xml from directory /tmp/testtmp
(17:28:35) util: Reading file status.xml from directory /tmp/testtmp
(17:28:35) certificate: CertificateVerifier x509, singleuse requested but not 
found.
(17:28:35) certificate: CertificateVerifier singleuse registered
(17:28:35) certificate: CertificatePool x509, ca requested but not found.
(17:28:35) certificate: CertificateScheme x509 requested but not found.
(17:28:35) certificate/x509/ca: Lazy init failed because an X.509 Scheme is not 
yet registered. Maybe it will be better later.
(17:28:35) certificate/x509/ca: Init failed, probably because a dependency is 
not yet registered. It has been deferred to later.
(17:28:35) certificate: CertificatePool ca registered
(17:28:35) certificate: CertificatePool x509, tls_peers requested but not found.
(17:28:35) certificate: CertificatePool tls_peers registered
(17:28:35) certificate: CertificateVerifier x509, tls_cached requested but not 
found.
(17:28:35) certificate: CertificateVerifier tls_cached registered
(17:28:35) prefs: /purple/logging/format changed, scheduling save.
(17:28:35) prefs: /purple/logging/format changed, scheduling save.
(17:28:35) prefs: /purple/proxy/type changed, scheduling save.
(17:28:35) prefs: /purple/proxy/host changed, scheduling save.
(17:28:35) prefs: /purple/proxy/port changed, scheduling save.
(17:28:35) prefs: /purple/proxy/username changed, scheduling save.
(17:28:35) prefs: /purple/proxy/password changed, scheduling save.
(17:28:35) certificate: CertificateScheme x509 requested but not found.
(17:28:35) certificate: CertificateScheme x509 registered
(17:28:35) util: Reading file smileys.xml from directory /tmp/testtmp
(17:28:35) util: File /tmp/testtmp/smileys.xml does not exist (this is not 
necessarily an error)
(17:28:35) stun: using server 
(17:28:35) util: Reading file blist.xml from directory /tmp/testtmp
(17:28:35) util: File /tmp/testtmp/blist.xml does not exist (this is not 
necessarily an error)
(17:28:35) prefs: Reading /tmp/testtmp/prefs.xml
(17:28:35) prefs: Finished reading /tmp/testtmp/prefs.xml
(17:28:35) prefs: purple_prefs_get_path_list: Unknown pref 
/purple/nullclient/plugins/saved
(17:28:35) pounce: Error reading pounces: Failed to open file 
'/tmp/testtmp/pounces.xml': No such file or directory
libpurple initialized.
        0: AIM
        1: Bonjour
        2: Gadu-Gadu
        3: GroupWise
        4: ICQ
        5: IRC
        6: MSN
        7: MXit
        8: MySpaceIM
        9: QQ
        10: SILC
        11: SIMPLE
        12: Sametime
        13: XMPP
        14: Yahoo
        15: Yahoo JAPAN
        16: Zephyr
Select the protocol [0-16]: Username: (17:28:47) account: Connecting to account 
ludovico.cave...@gmail.com.
(17:28:47) connection: Connecting. gc = 0x75a130
(17:28:47) dnssrv: querying SRV record for gmail.com: 
_xmpp-client._tcp.gmail.com
(17:28:47) prefs: /purple/savedstatus/default changed, scheduling save.
(17:28:47) prefs: /purple/savedstatus/isidleaway changed, scheduling save.
(17:28:47) util: Writing file prefs.xml to directory /tmp/testtmp
(17:28:47) util: Writing file /tmp/testtmp/prefs.xml
(17:28:47) dnssrv: found 5 SRV entries
(17:28:47) dns: DNS query for 'talk.l.google.com' queued
(17:28:47) dns: Created new DNS child 20201, there are now 1 children.
(17:28:47) dns: Successfully sent DNS request to child 20201
(17:28:47) dns: Got response for 'talk.l.google.com'
(17:28:47) dnsquery: IP resolved for talk.l.google.com
(17:28:47) proxy: Attempting connection to 209.85.137.125
(17:28:47) proxy: Connecting to talk.l.google.com:5222 with no proxy
(17:28:47) proxy: Connection in progress
(17:28:47) proxy: Connecting to talk.l.google.com:5222.
(17:28:47) proxy: Connected to talk.l.google.com:5222.
(17:28:47) jabber: Sending (ludovico.cave...@gmail.com): <?xml version='1.0' ?>
(17:28:47) jabber: Sending (ludovico.cave...@gmail.com): <stream:stream 
to='gmail.com' xmlns='jabber:client' 
xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
(17:28:47) jabber: Recv (138): <stream:stream from="gmail.com" 
id="FBF008DD8DE1189E" version="1.0" 
xmlns:stream="http://etherx.jabber.org/streams"; xmlns="jabber:client">
(17:28:47) jabber: Recv (210): <stream:features><starttls 
xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required/></starttls><mechanisms 
xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-GOOGLE-TOKEN</mechanism></mechanisms></stream:features>
(17:28:47) jabber: Sending (ludovico.cave...@gmail.com): <starttls 
xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
(17:28:47) jabber: Recv (50): <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
(17:28:47) nss: subject=CN=gmail.com,O=Google Inc.,L=Mountain 
View,ST=California,C=US issuer=OU=Equifax Secure Certificate 
Authority,O=Equifax,C=US
(17:28:47) nss: subject=OU=Equifax Secure Certificate Authority,O=Equifax,C=US 
issuer=OU=Equifax Secure Certificate Authority,O=Equifax,C=US
(17:28:47) certificate/x509/tls_cached: Starting verify for gmail.com
(17:28:47) certificate/x509/tls_cached: Checking for cached cert...
(17:28:47) certificate/x509/tls_cached: ...Found cached cert
(17:28:47) nss/x509: Loading certificate from 
/tmp/testtmp/certificates/x509/tls_peers/gmail.com
(17:28:47) certificate/x509/tls_cached: Peer cert matched cached
(17:28:47) nss/x509: Exporting certificate to 
/tmp/testtmp/certificates/x509/tls_peers/gmail.com
(17:28:47) util: Writing file /tmp/testtmp/certificates/x509/tls_peers/gmail.com
(17:28:47) certificate: Successfully verified certificate for gmail.com
(17:28:47) jabber: Sending (ssl) (ludovico.cave...@gmail.com): <stream:stream 
to='gmail.com' xmlns='jabber:client' 
xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
(17:28:47) jabber: Recv (ssl)(138): <stream:stream from="gmail.com" 
id="C812716379950C93" version="1.0" 
xmlns:stream="http://etherx.jabber.org/streams"; xmlns="jabber:client">
(17:28:47) jabber: Recv (ssl)(166): <stream:features><mechanisms 
xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>X-GOOGLE-TOKEN</mechanism></mechanisms></stream:features>
(17:28:47) sasl: Mechs found: PLAIN 
(17:28:47) jabber: Sending (ssl) (ludovico.cave...@gmail.com): <auth 
xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN' 
xmlns:ga='http://www.google.com/talk/protocol/auth' 
ga:client-uses-full-bind-result='true'>password removed</auth>
(17:28:47) jabber: Recv (ssl)(51): <success 
xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
(17:28:47) jabber: Sending (ssl) (ludovico.cave...@gmail.com): <stream:stream 
to='gmail.com' xmlns='jabber:client' 
xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
(17:28:47) jabber: Recv (ssl)(138): <stream:stream from="gmail.com" 
id="1F201BFDCADF3A04" version="1.0" 
xmlns:stream="http://etherx.jabber.org/streams"; xmlns="jabber:client">
(17:28:47) jabber: Recv (ssl)(137): <stream:features><bind 
xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session 
xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
(17:28:47) jabber: Sending (ssl) (ludovico.cave...@gmail.com): <iq type='set' 
id='purpleefe4ed02'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/></iq>
(17:28:47) jabber: Recv (ssl)(143): <iq id="purpleefe4ed02" type="result"><bind 
xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>ludovico.cave...@gmail.com/1D900A98</jid></bind></iq>
(17:28:47) jabber: Sending (ssl) (ludovico.cave...@gmail.com/1D900A98): <iq 
type='set' id='purpleefe4ed03'><session 
xmlns='urn:ietf:params:xml:ns:xmpp-session'/></iq>
(17:28:47) jabber: Recv (ssl)(1):  
(17:28:47) jabber: Recv (ssl)(39): <iq type="result" id="purpleefe4ed03"/>
(17:28:47) jabber: Sending (ssl) (ludovico.cave...@gmail.com/1D900A98): <iq 
type='get' id='purpleefe4ed04' to='gmail.com'><query 
xmlns='http://jabber.org/protocol/disco#items'/></iq>
(17:28:47) jabber: Sending (ssl) (ludovico.cave...@gmail.com/1D900A98): <iq 
type='get' id='purpleefe4ed05' to='gmail.com'><query 
xmlns='http://jabber.org/protocol/disco#info'/></iq>
(17:28:47) jabber: Recv (ssl)(265): <iq type="error" id="purpleefe4ed04" 
to="ludovico.cave...@gmail.com/1D900A98" from="gmail.com"><query 
xmlns="http://jabber.org/protocol/disco#items"/><error code="501" 
type="cancel"><feature-not-implemented 
xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
(17:28:48) jabber: Recv (ssl)(582): <iq 
to="ludovico.cave...@gmail.com/1D900A98" from="gmail.com" id="purpleefe4ed05" 
type="result"><query xmlns="http://jabber.org/protocol/disco#info";><identity 
category="server" type="im" name="Google Talk"/><feature 
var="http://jabber.org/protocol/disco#info"/><feature 
var="google:jingleinfo"/><feature var="google:roster"/><feature 
var="google:nosave"/><feature var="google:setting"/><feature 
var="google:shared-status"/><feature 
var="http://jabber.org/protocol/archive#otr"/><feature 
var="google:mail:notify"/><feature 
var="http://jabber.org/protocol/archive#save"/></query></iq>
(17:28:48) jabber: Google Talk!
(17:28:48) jabber: sending google:jingleinfo query
(17:28:48) jabber: Sending (ssl) (ludovico.cave...@gmail.com/1D900A98): <iq 
type='get' id='purpleefe4ed06'><query xmlns='google:jingleinfo'/></iq>
(17:28:48) jabber: Sending (ssl) (ludovico.cave...@gmail.com/1D900A98): <iq 
type='get' id='purpleefe4ed07'><vCard xmlns='vcard-temp'/></iq>
(17:28:48) jabber: Sending (ssl) (ludovico.cave...@gmail.com/1D900A98): <iq 
type='get' id='purpleefe4ed08'><query xmlns='jabber:iq:roster' 
xmlns:gr='google:roster' gr:ext='2'/></iq>
(17:28:48) jabber: Recv (ssl)(548): <iq 
to="ludovico.cave...@gmail.com/1D900A98" id="purpleefe4ed06" 
type="result"><query xmlns="google:jingleinfo"><stun><server 
host="stun.l.google.com" udp="19302"/><server host="stun2.l.google.com" 
udp="19302"/><server host="stun1.l.google.com" udp="19302"/><server 
host="stun4.l.google.com" udp="19302"/><server host="stun3.l.google.com" 
udp="19302"/></stun><relay><token>CAESIwoabHVkb3ZpY28uY2F2ZWRvbkBnbWFpbC5jb20Q0c33gvQkGhDD4qdBRBaFVHqMLLjLaDC+</token><server
 host="relay.google.com" udp="19295" tcp="19294" 
tcpssl="443"/></relay></query></iq>
(17:28:48) jabber: got google:jingleinfo
(17:28:48) dns: DNS query for 'stun.l.google.com' queued
(17:28:48) dns: Successfully sent DNS request to child 20201
(17:28:48) dns: Got response for 'stun.l.google.com'
(17:28:48) dnsquery: IP resolved for stun.l.google.com
(17:28:48) jabber: set Google STUN IP/port address: 209.85.137.126:19302
[...]
(17:28:50) util: Writing file 
/tmp/testtmp/icons/c2d2d17c626f62a79440cdff41db410fc59866d9.jpg
(17:28:51) util: Writing file accounts.xml to directory /tmp/testtmp
(17:28:51) util: Writing file /tmp/testtmp/accounts.xml
(17:28:51) util: Writing file status.xml to directory /tmp/testtmp
(17:28:51) util: Writing file /tmp/testtmp/status.xml
********************* QUIT(17:28:54) account: Disconnecting account 
ludovico.cave...@gmail.com (0x73fb10)
(17:28:54) connection: Disconnecting connection 0x75a130
(17:28:54) connection: Deactivating keepalive.
(17:28:54) jabber: Sending (ssl) (ludovico.cave...@gmail.com/1D900A98): 
</stream:stream>
(17:28:54) connection: Destroying connection 0x75a130
(17:28:54) certificate: CertificateVerifier tls_cached unregistered
(17:28:54) certificate: CertificateVerifier singleuse unregistered
(17:28:54) certificate: CertificatePool tls_peers unregistered
(17:28:54) certificate: CertificatePool ca unregistered
(17:28:54) main: Unloading normal plugins
(17:28:54) plugins: Unloading plugin NSS
(17:28:54) certificate: CertificateScheme x509 unregistered
(17:28:54) plugins: Unloading plugin SSL
(17:28:54) blist: Destroying
(17:28:54) util: Writing file status.xml to directory /tmp/testtmp
(17:28:54) util: Writing file /tmp/testtmp/status.xml
(17:28:54) util: Writing file accounts.xml to directory /tmp/testtmp
(17:28:54) util: Writing file /tmp/testtmp/accounts.xml
(17:28:54) main: Unloading all plugins
(17:28:54) plugins: Unloading plugin GroupWise
(17:28:54) plugins: Unloading plugin ICQ
(17:28:54) plugins: Unloading plugin SILC
(17:28:54) plugins: Unloading plugin IRC
(17:28:54) plugins: Unloading plugin MSN
(17:28:54) plugins: Unloading plugin Yahoo JAPAN
(17:28:54) plugins: Unloading plugin Bonjour
(17:28:54) plugins: Unloading plugin Zephyr
(17:28:54) plugins: Unloading plugin SIMPLE
(17:28:54) plugins: Unloading plugin Yahoo
(17:28:54) plugins: Unloading plugin MXit
(17:28:54) plugins: Unloading plugin MySpaceIM
(17:28:54) plugins: Unloading plugin Sametime
(17:28:54) plugins: Unloading plugin Tcl Plugin Loader
(17:28:54) plugins: Unloading plugin XMPP
(17:28:54) jabber: destroying hash tables for data objects
(17:28:54) plugins: Unloading plugin Perl Plugin Loader
(17:28:54) plugins: Unloading plugin Gadu-Gadu
(17:28:54) plugins: Unloading plugin QQ
(17:28:54) plugins: Unloading plugin AIM
********************* EXIT LOOP(17:28:59) prefs: Reading /tmp/testtmp/prefs.xml
(17:28:59) prefs: Finished reading /tmp/testtmp/prefs.xml
(17:28:59) dbus: okkk
(17:28:59) plugins: probing /usr/lib/purple-2/libnovell.so
(17:28:59) plugins: probing /usr/lib/purple-2/libicq.so
(17:28:59) plugins: probing /usr/lib/purple-2/libsilcpurple.so
(17:28:59) plugins: probing /usr/lib/purple-2/libirc.so
(17:28:59) plugins: probing /usr/lib/purple-2/libmsn.so
(17:28:59) plugins: probing /usr/lib/purple-2/libyahoojp.so
(17:28:59) plugins: probing /usr/lib/purple-2/libbonjour.so
(17:28:59) plugins: probing /usr/lib/purple-2/libzephyr.so
(17:28:59) plugins: probing /usr/lib/purple-2/libsimple.so
(17:28:59) plugins: probing /usr/lib/purple-2/statenotify.so
(17:28:59) plugins: probing /usr/lib/purple-2/libyahoo.so
(17:28:59) plugins: probing /usr/lib/purple-2/libmxit.so
(17:28:59) prpl-loubserp-mxit: Loading MXit libPurple plugin...
(17:28:59) plugins: probing /usr/lib/purple-2/psychic.so
(17:28:59) plugins: probing /usr/lib/purple-2/libmyspace.so
(17:28:59) plugins: probing /usr/lib/purple-2/ssl-nss.so
(17:28:59) plugins: probing /usr/lib/purple-2/libjabber.so
(17:28:59) plugins: /usr/lib/purple-2/libjabber.so is not usable because the 
'purple_init_plugin' symbol could not be found.  Does the plugin call the 
PURPLE_INIT_PLUGIN() macro?
(17:28:59) plugins: probing /usr/lib/purple-2/buddynote.so
(17:28:59) plugins: probing /usr/lib/purple-2/libsametime.so
(17:28:59) plugins: /usr/lib/purple-2/libsametime.so has a prefs_info, but is a 
prpl. This is no longer supported.
(17:28:59) plugins: probing /usr/lib/purple-2/log_reader.so
(17:28:59) plugins: probing /usr/lib/purple-2/tcl.so
(17:28:59) plugins: probing /usr/lib/purple-2/ssl.so
(17:28:59) plugins: probing /usr/lib/purple-2/joinpart.so
(17:28:59) plugins: probing /usr/lib/purple-2/liboscar.so
(17:28:59) plugins: /usr/lib/purple-2/liboscar.so is not usable because the 
'purple_init_plugin' symbol could not be found.  Does the plugin call the 
PURPLE_INIT_PLUGIN() macro?
(17:28:59) plugins: probing /usr/lib/purple-2/idle.so
(17:28:59) plugins: probing /usr/lib/purple-2/libxmpp.so
(17:28:59) util: Reading file xmpp-caps.xml from directory /tmp/testtmp
(17:28:59) jabber: creating hash tables for data objects
(17:28:59) plugins: probing /usr/lib/purple-2/perl.so
(17:28:59) plugins: probing /usr/lib/purple-2/libgg.so
(17:28:59) plugins: probing /usr/lib/purple-2/offlinemsg.so
(17:28:59) plugins: probing /usr/lib/purple-2/newline.so
(17:28:59) plugins: probing /usr/lib/purple-2/libqq.so
(17:28:59) plugins: probing /usr/lib/purple-2/autoaccept.so
(17:28:59) plugins: probing /usr/lib/purple-2/libymsg.so
(17:28:59) plugins: /usr/lib/purple-2/libymsg.so is not usable because the 
'purple_init_plugin' symbol could not be found.  Does the plugin call the 
PURPLE_INIT_PLUGIN() macro?
(17:28:59) plugins: probing /usr/lib/purple-2/libaim.so
(17:28:59) plugins: probing /usr/lib/purple-2/dbus-example.so
(17:28:59) prefs: /purple/status/scores/offline changed, scheduling save.
(17:28:59) prefs: /purple/status/scores/available changed, scheduling save.
(17:28:59) prefs: /purple/status/scores/invisible changed, scheduling save.
(17:28:59) prefs: /purple/status/scores/away changed, scheduling save.
(17:28:59) prefs: /purple/status/scores/extended_away changed, scheduling save.
(17:28:59) prefs: /purple/status/scores/idle changed, scheduling save.
(17:28:59) prefs: /purple/status/scores/offline_msg changed, scheduling save.
(17:28:59) util: Reading file accounts.xml from directory /tmp/testtmp
(17:28:59) util: Reading file status.xml from directory /tmp/testtmp
(17:28:59) certificate: CertificateVerifier x509, singleuse requested but not 
found.
(17:28:59) certificate: CertificateVerifier singleuse registered
(17:28:59) certificate: CertificatePool x509, ca requested but not found.
(17:28:59) certificate: CertificateScheme x509 requested but not found.
(17:28:59) certificate/x509/ca: Lazy init failed because an X.509 Scheme is not 
yet registered. Maybe it will be better later.
(17:28:59) certificate/x509/ca: Init failed, probably because a dependency is 
not yet registered. It has been deferred to later.
(17:28:59) certificate: CertificatePool ca registered
(17:28:59) certificate: CertificatePool x509, tls_peers requested but not found.
(17:28:59) certificate: CertificatePool tls_peers registered
(17:28:59) certificate: CertificateVerifier x509, tls_cached requested but not 
found.
(17:28:59) certificate: CertificateVerifier tls_cached registered
(17:28:59) prefs: /purple/logging/format changed, scheduling save.
(17:28:59) prefs: /purple/logging/format changed, scheduling save.
(17:28:59) prefs: /purple/proxy/type changed, scheduling save.
(17:28:59) prefs: /purple/proxy/host changed, scheduling save.
(17:28:59) prefs: /purple/proxy/port changed, scheduling save.
(17:28:59) prefs: /purple/proxy/username changed, scheduling save.
(17:28:59) prefs: /purple/proxy/password changed, scheduling save.
(17:28:59) certificate: CertificateScheme x509 requested but not found.
(17:28:59) certificate: CertificateScheme x509 registered
(17:28:59) util: Reading file smileys.xml from directory /tmp/testtmp
(17:28:59) util: File /tmp/testtmp/smileys.xml does not exist (this is not 
necessarily an error)
(17:28:59) stun: using server 
(17:28:59) util: Reading file blist.xml from directory /tmp/testtmp
(17:28:59) util: File /tmp/testtmp/blist.xml does not exist (this is not 
necessarily an error)
(17:28:59) prefs: Reading /tmp/testtmp/prefs.xml
(17:28:59) prefs: Finished reading /tmp/testtmp/prefs.xml
(17:28:59) prefs: purple_prefs_get_path_list: Unknown pref 
/purple/nullclient/plugins/saved
(17:28:59) pounce: Error reading pounces: Failed to open file 
'/tmp/testtmp/pounces.xml': No such file or directory
libpurple initialized.
        0: AIM
        1: Bonjour
        2: Gadu-Gadu
        3: GroupWise
        4: ICQ
        5: IRC
        6: MSN
        7: MXit
        8: MySpaceIM
        9: QQ
        10: SILC
        11: SIMPLE
        12: Sametime
        13: XMPP
        14: Yahoo
        15: Yahoo JAPAN
        16: Zephyr
(17:28:59) account: Connecting to account ludovico.cave...@gmail.com.
(17:28:59) connection: Connecting. gc = 0x6dc740
(17:28:59) dnssrv: querying SRV record for gmail.com: 
_xmpp-client._tcp.gmail.com
(17:28:59) prefs: /purple/savedstatus/default changed, scheduling save.
(17:28:59) dnssrv: found 5 SRV entries
(17:28:59) dns: DNS query for 'talk.l.google.com' queued
(17:28:59) dns: Created new DNS child 20204, there are now 1 children.
(17:28:59) dns: Successfully sent DNS request to child 20204
(17:28:59) dns: Got response for 'talk.l.google.com'
(17:28:59) dnsquery: IP resolved for talk.l.google.com
(17:28:59) proxy: Attempting connection to 209.85.137.125
(17:28:59) proxy: Connecting to talk.l.google.com:5222 with no proxy
(17:28:59) proxy: Connection in progress
(17:28:59) proxy: Connecting to talk.l.google.com:5222.
(17:28:59) proxy: Connected to talk.l.google.com:5222.
(17:28:59) jabber: Sending (ludovico.cave...@gmail.com): <?xml version='1.0' ?>
(17:28:59) jabber: Sending (ludovico.cave...@gmail.com): <stream:stream 
to='gmail.com' xmlns='jabber:client' 
xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
(17:28:59) jabber: Recv (138): <stream:stream from="gmail.com" 
id="42ABEC4D237CAF9F" version="1.0" 
xmlns:stream="http://etherx.jabber.org/streams"; xmlns="jabber:client">
(17:28:59) jabber: Recv (210): <stream:features><starttls 
xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required/></starttls><mechanisms 
xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-GOOGLE-TOKEN</mechanism></mechanisms></stream:features>
(17:28:59) jabber: Sending (ludovico.cave...@gmail.com): <starttls 
xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
(17:28:59) jabber: Recv (50): <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
(17:28:59) nss: Handshake failed  (-8128)
(17:28:59) connection: Connection error on 0x6dc740 (reason: 5 description: SSL 
Handshake Failed)
(17:28:59) account: Disconnecting account ludovico.cave...@gmail.com (0x75c070)
(17:28:59) connection: Disconnecting connection 0x6dc740
(17:28:59) connection: Destroying connection 0x6dc740

Reply via email to