Tidying debug messages, signals soc.2008.masterpassword

Fri, 22 Mar 2013 00:05:10 +0100

author
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
date
Fri, 22 Mar 2013 00:05:10 +0100
branch
soc.2008.masterpassword
changeset 34127
51c1bce7f52f
parent 34126
a479dca0f05b
child 34128
0cbd558ab5e7

Tidying debug messages, signals

libpurple/account.c file | annotate | diff | comparison | revisions
libpurple/core.c file | annotate | diff | comparison | revisions
libpurple/keyring.c file | annotate | diff | comparison | revisions
libpurple/keyring.h file | annotate | diff | comparison | revisions
libpurple/plugins/keyrings/internalkeyring.c file | annotate | diff | comparison | revisions
libpurple/plugins/keyrings/kwallet.cpp file | annotate | diff | comparison | revisions
--- a/libpurple/account.c	Thu Mar 21 22:21:50 2013 +0100
+++ b/libpurple/account.c	Fri Mar 22 00:05:10 2013 +0100
@@ -380,16 +380,12 @@
 
 	if (purple_account_get_remember_password(account))
 	{
-		purple_debug_info("account", "Exporting password for account %s (%s).\n",
-			purple_account_get_username(account),
-			purple_account_get_protocol_id(account));
-
 		purple_keyring_export_password(account, &keyring_id, 
 			&mode, &data, &error, &destroy);
 
 		if (error != NULL) {
 
-			purple_debug_info("account",
+			purple_debug_error("account",
 				"Failed to export password for account %s : %s.\n",
 				purple_account_get_username(account),
 				error->message);
@@ -980,8 +976,7 @@
 		result = purple_keyring_import_password(ret, keyring_id, mode, data, NULL);
 
 		if (result == TRUE) {
-			purple_debug_info("account", "Password imported successfully.\n");
-			purple_account_set_remember_password(ret, TRUE);		
+			purple_account_set_remember_password(ret, TRUE);
 		} else {
 			purple_debug_info("account", "Failed to import password.\n");
 		} 
--- a/libpurple/core.c	Thu Mar 21 22:21:50 2013 +0100
+++ b/libpurple/core.c	Fri Mar 22 00:05:10 2013 +0100
@@ -114,6 +114,7 @@
 		purple_value_new(PURPLE_TYPE_BOXED, "GHashTable *")); /* Parameters */
 
 	purple_signal_register(core, "quitting", purple_marshal_VOID, NULL, 0);
+	purple_signal_register(core, "core-initialized", purple_marshal_VOID, NULL, 0);
 
 	/* The prefs subsystem needs to be initialized before static protocols
 	 * for protocol prefs to work. */
@@ -136,7 +137,6 @@
 
 	purple_ciphers_init();
 	purple_cmds_init();
-	purple_keyring_init();
 
 	/* Since plugins get probed so early we should probably initialize their
 	 * subsystem right away too.
@@ -148,6 +148,7 @@
 
 	purple_plugins_probe(G_MODULE_SUFFIX);
 
+	purple_keyring_init();
 	purple_theme_manager_init();
 
 	/* The buddy icon code uses the imgstore, so init it early. */
@@ -188,15 +189,14 @@
 	if (ops != NULL && ops->ui_init != NULL)
 		ops->ui_init();
 
-	/* Selected keyring may have failed to load, so UI should be notified */
-	purple_keyring_load_plugins();
-
 	/* The UI may have registered some theme types, so refresh them */
 	purple_theme_manager_refresh();
 
 	/* Load the buddy list after UI init */
 	purple_blist_boot();
 
+	purple_signal_emit(purple_get_core(), "core-initialized");
+
 	return TRUE;
 }
 
@@ -222,9 +222,8 @@
 	 */
 	purple_certificate_uninit();
 
-	/* The SSL and keyring plugins must be uninit before they're unloaded */
+	/* The SSL plugins must be uninit before they're unloaded */
 	purple_ssl_uninit();
-	purple_keyring_uninit();
 
 	/* Unload all non-loader, non-prpl plugins before shutting down
 	 * subsystems. */
@@ -245,6 +244,7 @@
 	purple_savedstatuses_uninit();
 	purple_status_uninit();
 	purple_accounts_uninit();
+	purple_keyring_uninit(); /* after accounts */
 	purple_sound_uninit();
 	purple_theme_manager_uninit();
 	purple_xfers_uninit();
--- a/libpurple/keyring.c	Thu Mar 21 22:21:50 2013 +0100
+++ b/libpurple/keyring.c	Fri Mar 22 00:05:10 2013 +0100
@@ -254,10 +254,53 @@
 	purple_keyring_set_inuse(new, FALSE, NULL, data);
 }
 
-void purple_keyring_load_plugins(void)
+static void purple_keyring_core_initialized_cb()
+{
+	if (purple_keyring_inuse == NULL) {
+		purple_notify_error(NULL, _("Keyrings"),
+			_("Failed to load selected keyring."),
+			_("Check your system configuration or select another "
+			"one in Preferences dialog."));
+	}
+}
+
+void
+purple_keyring_init(void)
 {
+	const char *touse;
 	GList *it;
 
+	purple_keyring_keyrings = NULL;
+	purple_keyring_inuse = NULL;
+
+	purple_signal_register(purple_keyring_get_handle(),
+		"keyring-register",
+		purple_marshal_VOID__POINTER_POINTER,
+		NULL, 2,
+		purple_value_new(PURPLE_TYPE_STRING),                    /* keyring ID */
+		purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *")); /* a pointer to the keyring */
+
+	purple_signal_register(purple_keyring_get_handle(),
+		"keyring-unregister",
+		purple_marshal_VOID__POINTER_POINTER,
+		NULL, 2,
+		purple_value_new(PURPLE_TYPE_STRING),                    /* keyring ID */
+		purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *")); /* a pointer to the keyring */
+
+	/* see what keyring we want to use */
+	touse = purple_prefs_get_string("/purple/keyring/active");
+
+	if (touse == NULL) {
+		purple_prefs_add_none("/purple/keyring");
+		purple_prefs_add_string("/purple/keyring/active", PURPLE_DEFAULT_KEYRING);
+		purple_keyring_to_use = g_strdup(PURPLE_DEFAULT_KEYRING);
+	} else {
+		purple_keyring_to_use = g_strdup(touse);
+	}
+
+	purple_keyring_pref_cb_id = purple_prefs_connect_callback(NULL,
+		"/purple/keyring/active", purple_keyring_pref_cb, NULL);
+
 	for (it = purple_plugins_get_all(); it != NULL; it = it->next)
 	{
 		PurplePlugin *plugin = (PurplePlugin *)it->data;
@@ -277,63 +320,18 @@
 		}
 	}
 
-	if (purple_keyring_inuse == NULL) {
+	if (purple_keyring_inuse == NULL)
 		purple_debug_error("keyring", "selected keyring failed to load\n");
-		purple_notify_error(NULL, _("Keyrings"),
-			_("Failed to load selected keyring."),
-			_("Check your system configuration or select another "
-			"one in Preferences dialog."));
-	}
-}
-
-void
-purple_keyring_init(void)
-{
-	PurpleCore *core;
-	const char *touse;
-
-	/* Make sure we don't have junk */
-	purple_keyring_keyrings = NULL;
-	purple_keyring_inuse = NULL;
-
-	/* register signals */
-	core = purple_get_core();
 
-	purple_signal_register(core, "keyring-register",
-		purple_marshal_VOID__POINTER_POINTER,
-		NULL, 2,
-		purple_value_new(PURPLE_TYPE_STRING),                    /* keyring ID */
-		purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *")); /* a pointer to the keyring */
-
-	purple_signal_register(core, "keyring-unregister",
-		purple_marshal_VOID__POINTER_POINTER,
-		NULL, 2,
-		purple_value_new(PURPLE_TYPE_STRING),                    /* keyring ID */
-		purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *")); /* a pointer to the keyring */
-
-	/* see what keyring we want to use */
-	touse = purple_prefs_get_string("/purple/keyring/active");
-
-	if (touse == NULL) {
-		purple_prefs_add_none("/purple/keyring");
-		purple_prefs_add_string("/purple/keyring/active", PURPLE_DEFAULT_KEYRING);
-		purple_keyring_to_use = g_strdup(PURPLE_DEFAULT_KEYRING);
-	} else {
-		purple_keyring_to_use = g_strdup(touse);
-	}
-
-	purple_keyring_pref_cb_id = purple_prefs_connect_callback(NULL,
-		"/purple/keyring/active", purple_keyring_pref_cb, NULL);
-
-	purple_debug_info("keyring", "purple_keyring_init() done, selected keyring is : %s.\n",
-		purple_keyring_to_use);
+	purple_signal_connect(purple_get_core(), "core-initialized",
+		purple_keyring_get_handle(),
+		PURPLE_CALLBACK(purple_keyring_core_initialized_cb), NULL);
 }
 
 void
 purple_keyring_uninit(void)
 {
 	GList *it;
-	PurpleCore *core = purple_get_core();
 
 	g_free(purple_keyring_to_use);
 	purple_keyring_inuse = NULL;
@@ -349,12 +347,19 @@
 	g_list_free(purple_keyring_loaded_plugins);
 	purple_keyring_loaded_plugins = NULL;
 
-	purple_signal_unregister(core, "keyring-register");
-	purple_signal_unregister(core, "keyring-unregister");
+	purple_signals_unregister_by_instance(purple_keyring_get_handle());
 	purple_prefs_disconnect_callback(purple_keyring_pref_cb_id);
 	purple_keyring_pref_cb_id = 0;
 }
 
+void *
+purple_keyring_get_handle(void)
+{
+	static int handle;
+
+	return &handle;
+}
+
 PurpleKeyring *
 purple_keyring_find_keyring_by_id(const char *id)
 {
@@ -426,26 +431,26 @@
 		switch(error->code) {
 			case PURPLE_KEYRING_ERROR_NOCAP:
 				purple_debug_info("keyring",
-					"Keyring could not save password for account %s : %s.\n",
+					"Keyring could not save password for account %s: %s.\n",
 					name, error->message);
 				break;
 
 			case PURPLE_KEYRING_ERROR_NOPASSWD:
 				purple_debug_info("keyring",
-					"No password found while changing keyring for account %s : %s.\n",
+					"No password found while changing keyring for account %s: %s.\n",
 					name, error->message);
 				break;
 
 			case PURPLE_KEYRING_ERROR_NOCHANNEL:
 				purple_debug_info("keyring",
-					"Failed to communicate with backend while changing keyring for account %s : %s. Aborting changes.\n",
+					"Failed to communicate with backend while changing keyring for account %s: %s. Aborting changes.\n",
 					name, error->message);
 				tracker->abort = TRUE;
 				break;
 
 			default:
 				purple_debug_info("keyring",
-					"Unknown error while changing keyring for account %s : %s.\n",
+					"Unknown error while changing keyring for account %s: %s.\n",
 					name, error->message);
 				break;
 		}
@@ -561,11 +566,8 @@
 	PurpleKeyringClose close;
 	PurpleKeyringChangeTracker *tracker;
 
-	if (newkeyring != NULL)
-		purple_debug_info("keyring", "Attempting to set new keyring : %s.\n",
-			newkeyring->id);
-	else
-		purple_debug_info("keyring", "Attempting to set new keyring : NULL.\n");
+	purple_debug_info("keyring", "Attempting to set new keyring: %s.\n",
+		(newkeyring != NULL) ? newkeyring->id : "(null)");
 
 	oldkeyring = purple_keyring_get_inuse();
 
@@ -625,10 +627,12 @@
 		}
 
 	} else { /* no keyring was set before. */
-		purple_debug_info("keyring", "Setting keyring for the first time : %s.\n",
-			newkeyring->id);
+		if (purple_debug_is_verbose()) {
+			purple_debug_misc("keyring", "Setting keyring for the "
+				"first time: %s.\n", newkeyring->id);
+		}
+
 		purple_keyring_inuse = newkeyring;
-
 		if (cb != NULL)
 			cb(newkeyring, TRUE, NULL, data);
 	}
@@ -665,7 +669,6 @@
 purple_keyring_register(PurpleKeyring *keyring)
 {
 	const char *keyring_id;
-	PurpleCore *core;
 
 	g_return_if_fail(keyring != NULL);
 
@@ -674,7 +677,7 @@
 	/* keyring with no ID. Add error handling ? */
 	g_return_if_fail(keyring_id != NULL);
 
-	purple_debug_info("keyring", "Registering keyring : %s.\n",
+	purple_debug_info("keyring", "Registering keyring: %s.\n",
 		keyring->id);
 
 	/* If this is the configured keyring, use it. */
@@ -687,11 +690,13 @@
 
 	}
 
-	core = purple_get_core();
-
 	PURPLE_DBUS_REGISTER_POINTER(keyring, PurpleKeyring);
-	purple_signal_emit(core, "keyring-register", keyring_id, keyring);
-	purple_debug_info("keyring", "Registered keyring : %s.\n", keyring_id);
+	purple_signal_emit(purple_keyring_get_handle(), "keyring-register",
+		keyring_id, keyring);
+	if (purple_debug_is_verbose()) {
+		purple_debug_info("keyring", "Registered keyring: %s.\n",
+			keyring_id);
+	}
 
 	purple_keyring_keyrings = g_list_prepend(purple_keyring_keyrings,
 		keyring);
@@ -700,27 +705,23 @@
 void
 purple_keyring_unregister(PurpleKeyring *keyring)
 {
-	PurpleCore *core;
 	const PurpleKeyring *inuse;
 	PurpleKeyring *fallback;
 	const char *keyring_id;
 
 	g_return_if_fail(keyring != NULL);
 
-	purple_debug_info("keyring", "Unregistering keyring %s.\n",
+	purple_debug_info("keyring", "Unregistering keyring: %s.\n",
 		purple_keyring_get_id(keyring));
 
-	core = purple_get_core();
 	keyring_id = purple_keyring_get_id(keyring);
-	purple_signal_emit(core, "keyring-unregister", keyring_id, keyring);
+	purple_signal_emit(purple_keyring_get_handle(), "keyring-unregister",
+		keyring_id, keyring);
 	PURPLE_DBUS_UNREGISTER_POINTER(keyring);
 
 	inuse = purple_keyring_get_inuse();
 	fallback = purple_keyring_find_keyring_by_id(PURPLE_DEFAULT_KEYRING);
 
-	/* TODO: is there a possibility for (unneeded) password migration at
-	 * Pidgin's exit?
-	 */
 	if (inuse == keyring) {
 		if (inuse != fallback) {
 			purple_keyring_set_inuse(fallback, TRUE, NULL, NULL);
@@ -733,8 +734,6 @@
 
 	purple_keyring_keyrings = g_list_remove(purple_keyring_keyrings,
 		keyring);
-
-	purple_debug_info("keyring", "Keyring %s unregistered.\n", keyring->id);
 }
 
 /*@}*/
@@ -756,7 +755,7 @@
 	PurpleKeyringImportPassword import;
 	const char *realid;
 
-	purple_debug_info("keyring", "Importing password for account %s (%s) to keyring %s.\n",
+	purple_debug_misc("keyring", "Importing password for account %s (%s) to keyring %s.\n",
 		purple_account_get_username(account),
 		purple_account_get_protocol_id(account),
 		keyringid);
@@ -770,7 +769,7 @@
 				"No keyring configured, cannot import password "
 				"info");
 		}
-		purple_debug_info("Keyring",
+		purple_debug_error("Keyring",
 			"No keyring configured, cannot import password info for account %s (%s).\n",
 			purple_account_get_username(account), purple_account_get_protocol_id(account));
 		return FALSE;
@@ -826,18 +825,20 @@
 	if (inuse == NULL) {
 		*error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_NOKEYRING,
 			"No keyring configured, cannot export password info");
-		purple_debug_info("keyring",
+		purple_debug_error("keyring",
 			"No keyring configured, cannot export password info.\n");
 		return FALSE;
 	}
 
 	*keyringid = purple_keyring_get_id(inuse);
 
-	purple_debug_info("keyring",
-		"Exporting password for account %s (%s) from keyring %s.\n",
-		purple_account_get_username(account),
-		purple_account_get_protocol_id(account),
-		*keyringid);
+	if (purple_debug_is_verbose()) {
+		purple_debug_misc("keyring",
+			"Exporting password for account %s (%s) from keyring "
+			"%s...\n",
+			purple_account_get_username(account),
+			purple_account_get_protocol_id(account), *keyringid);
+	}
 
 	if (*keyringid == NULL) {
 		*error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_INVALID,
@@ -906,7 +907,7 @@
 				g_error_free(error);
 
 			} else {
-				purple_debug_info("keyring", "Reading password for account %s (%s).\n",
+				purple_debug_info("keyring", "Reading password for account %s (%s)...\n",
 					purple_account_get_username(account),
 					purple_account_get_protocol_id(account));
 				read(account, cb, data);
@@ -929,6 +930,18 @@
 	cbinfo = data;
 	cb = cbinfo->cb;
 
+	if (error == NULL && purple_debug_is_verbose()) {
+		purple_debug_misc("keyring", "Password for account %s (%s) "
+			"saved successfully.\n",
+			purple_account_get_username(account),
+			purple_account_get_protocol_id(account));
+	} else if (purple_debug_is_verbose()) {
+		purple_debug_warning("keyring", "Password for account %s (%s) "
+			"not saved successfully.\n",
+			purple_account_get_username(account),
+			purple_account_get_protocol_id(account));
+	}
+
 	if (error != NULL) {
 		purple_notify_error(NULL, _("Keyrings"),
 			_("Failed to save password in keyring."),
@@ -974,6 +987,9 @@
 			cbinfo = g_new(PurpleKeyringCbInfo, 1);
 			cbinfo->cb = cb;
 			cbinfo->data = data;
+			purple_debug_info("keyring", "Saving password for account %s (%s)...\n",
+				purple_account_get_username(account),
+				purple_account_get_protocol_id(account));
 			save(account, password, purple_keyring_set_password_async_cb, cbinfo);
 		}
 	}
@@ -1016,7 +1032,7 @@
 	if (inuse == NULL) {
 		error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_NOKEYRING,
 			"No keyring configured, cannot change master password.");
-		purple_debug_info("keyring", "No keyring configured, cannot change master password.\n");
+		purple_debug_error("keyring", "No keyring configured, cannot change master password.\n");
 		if (cb)
 			cb(FALSE, error, data);
 		g_error_free(error);
--- a/libpurple/keyring.h	Thu Mar 21 22:21:50 2013 +0100
+++ b/libpurple/keyring.h	Fri Mar 22 00:05:10 2013 +0100
@@ -227,11 +227,6 @@
 GList *purple_keyring_get_options(void);
 
 /**
- * Load keyring plugins.
- */
-void purple_keyring_load_plugins(void);
-
-/**
  * Prepare stuff at startup.
  */
 void purple_keyring_init(void);
@@ -242,6 +237,13 @@
 void purple_keyring_uninit(void);
 
 /**
+ * Returns the keyring subsystem handle.
+ *
+ * @return The keyring subsystem handle.
+ */
+void *purple_keyring_get_handle(void);
+
+/**
  * Get the keyring list. Used by the UI.
  */
 const GList *
--- a/libpurple/plugins/keyrings/internalkeyring.c	Thu Mar 21 22:21:50 2013 +0100
+++ b/libpurple/plugins/keyrings/internalkeyring.c	Fri Mar 22 00:05:10 2013 +0100
@@ -66,17 +66,20 @@
 
 	ACTIVATE();
 
-	purple_debug_misc("keyring-internal",
-		"Reading password for account %s (%s).\n",
-		purple_account_get_username(account),
-		purple_account_get_protocol_id(account));
-
 	password = g_hash_table_lookup(internal_keyring_passwords, account);
 
 	if (password != NULL) {
+		purple_debug_misc("keyring-internal",
+			"Got password for account %s (%s).\n",
+			purple_account_get_username(account),
+			purple_account_get_protocol_id(account));
 		if (cb != NULL)
 			cb(account, password, NULL, data);
 	} else {
+		purple_debug_misc("keyring-internal",
+			"No password for account %s (%s).\n",
+			purple_account_get_username(account),
+			purple_account_get_protocol_id(account));
 		error = g_error_new(PURPLE_KEYRING_ERROR,
 			PURPLE_KEYRING_ERROR_NOPASSWD, "Password not found.");
 		if (cb != NULL)
@@ -93,20 +96,19 @@
 {
 	ACTIVATE();
 
-	if (password == NULL || *password == '\0') {
+	if (password[0] == '\0')
+		password = NULL;
+
+	if (password == NULL)
 		g_hash_table_remove(internal_keyring_passwords, account);
-		purple_debug_info("keyring-internal",
-			"Deleted password for account %s (%s).\n",
-			purple_account_get_username(account),
-			purple_account_get_protocol_id(account));
-	} else {
+	else
 		g_hash_table_replace(internal_keyring_passwords, account, g_strdup(password));
-		purple_debug_info("keyring-internal",
-			"Updated password for account %s (%s).\n",
-			purple_account_get_username(account),
-			purple_account_get_protocol_id(account));
 
-	}
+	purple_debug_misc("keyring-internal",
+		"Password %s for account %s (%s).\n",
+		(password == NULL ? "removed" : "saved"),
+		purple_account_get_username(account),
+		purple_account_get_protocol_id(account));
 
 	if (cb != NULL)
 		cb(account, NULL, data);
@@ -127,21 +129,21 @@
                                  const char *data,
                                  GError **error)
 {
+	g_return_if_fail(account != NULL);
+	g_return_if_fail(data != NULL);
+
 	ACTIVATE();
 
-	purple_debug_info("keyring-internal", "Importing password.\n");
-
-	if (account != NULL &&
-	    data != NULL &&
-	    (mode == NULL || g_strcmp0(mode, "cleartext") == 0)) {
-
+	if (mode == NULL || g_strcmp0(mode, "cleartext") == 0) {
 		g_hash_table_replace(internal_keyring_passwords, account, g_strdup(data));
 		return TRUE;
-
 	} else {
-		*error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_NOPASSWD, "No password for account.");
+		if (error != NULL) {
+			*error = g_error_new(PURPLE_KEYRING_ERROR,
+				PURPLE_KEYRING_ERROR_WRONGFORMAT,
+				"invalid mode");
+		}
 		return FALSE;
-
 	}
 
 	return TRUE;
@@ -158,8 +160,6 @@
 
 	ACTIVATE();
 
-	purple_debug_info("keyring-internal", "Exporting password.\n");
-
 	password = g_hash_table_lookup(internal_keyring_passwords, account);
 
 	if (password == NULL) {
--- a/libpurple/plugins/keyrings/kwallet.cpp	Thu Mar 21 22:21:50 2013 +0100
+++ b/libpurple/plugins/keyrings/kwallet.cpp	Fri Mar 22 00:05:10 2013 +0100
@@ -199,11 +199,18 @@
 KWalletPlugin::engine::~engine()
 {
 	closing = true;
+	int abortedCount = 0;
 
 	while (!isEmpty()) {
 		request *req = dequeue();
 		req->abort();
 		delete req;
+		abortedCount++;
+	}
+
+	if (abortedCount > 0) {
+		purple_debug_info("keyring-kwallet", "aborted requests: %d\n",
+			abortedCount);
 	}
 
 	delete wallet;
@@ -242,11 +249,8 @@
 	connected = opened;
 
 	if (!opened) {
-		while (!isEmpty()) {
-			request *req = dequeue();
-			req->abort();
-			delete req;
-		}
+		purple_debug_warning("keyring-kwallet",
+			"failed to open a wallet\n");
 		delete this;
 		return;
 	}
@@ -378,8 +382,13 @@
 			"failed to read password, result was %d\n", result);
 		abort();
 	}
-	else if (callback != NULL)
+	else if (callback != NULL) {
+		purple_debug_misc("keyring-kwallet",
+			"Got password for account %s (%s).\n",
+			purple_account_get_username(account),
+			purple_account_get_protocol_id(account));
 		callback(account, password.toUtf8().constData(), NULL, data);
+	}
 }
 
 void
@@ -400,8 +409,14 @@
 		purple_debug_warning("keyring-kwallet",
 			"failed to write password, result was %d\n", result);
 		abort();
-	} else if (callback != NULL)
+	} else if (callback != NULL) {
+		purple_debug_misc("keyring-kwallet",
+			"Password %s for account %s (%s).\n",
+			(noPassword ? "removed" : "saved"),
+			purple_account_get_username(account),
+			purple_account_get_protocol_id(account));
 		callback(account, NULL, data);
+	}
 }
 
 extern "C"

mercurial