Fixed two bugs that caused everything to go wrong when accounts were connected soc.2008.masterpassword

Fri, 15 Aug 2008 16:58:06 +0000

author
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
date
Fri, 15 Aug 2008 16:58:06 +0000
branch
soc.2008.masterpassword
changeset 33994
df7dce5056a7
parent 33993
ccc13864443c
child 33995
53b3189d7c84

Fixed two bugs that caused everything to go wrong when accounts were connected
or disconnected.

libpurple/account.c file | annotate | diff | comparison | revisions
libpurple/connection.c file | annotate | diff | comparison | revisions
libpurple/plugins/keyrings/gnomekeyring.c file | annotate | diff | comparison | revisions
libpurple/plugins/keyrings/internalkeyring.c file | annotate | diff | comparison | revisions
--- a/libpurple/account.c	Fri Aug 15 03:41:24 2008 +0000
+++ b/libpurple/account.c	Fri Aug 15 16:58:06 2008 +0000
@@ -1168,7 +1168,7 @@
 		purple_account_set_remember_password(account, TRUE);
 
 	/* XXX this might be a problem if a read occurs before the write is finished */
-	purple_account_set_password_async(account, g_strdup(entry), g_free, NULL, NULL);
+	purple_account_set_password(account, entry);
 
 	purple_connection_new(account, FALSE, entry);
 }
@@ -1615,7 +1615,7 @@
 		account->password = g_strdup(password);
 
 	else
-		purple_keyring_set_password_async(account, g_strdup(password), g_free, NULL, NULL);
+		purple_keyring_set_password_sync(account, password);
 
 	schedule_accounts_save();
 }
--- a/libpurple/connection.c	Fri Aug 15 03:41:24 2008 +0000
+++ b/libpurple/connection.c	Fri Aug 15 16:58:06 2008 +0000
@@ -443,7 +443,12 @@
 {
 	g_return_val_if_fail(gc != NULL, NULL);
 
-	return gc->password ? gc->password : purple_account_get_password(gc->account);
+	if (gc->password) {
+		return gc->password;
+	} else {
+		purple_debug_info("connection",
+			"Password was unknown, getting password from account");
+		return purple_account_get_password(gc->account);
 }
 
 void
@@ -452,7 +457,7 @@
 				     gpointer data)
 {
 	char * password;
-	g_return_val_if_fail(gc != NULL, NULL);
+	g_return_if_fail(gc != NULL);
 
 	if (gc->password != NULL) {
 		/* casted to prevent warning */
@@ -517,11 +522,9 @@
 				       GError * error,
 				       gpointer data)
 {
-	/* FIXME : handle error */
-	char * pw = g_strdup(password);
-
+	/* FIXME : needs to be async */
 	purple_account_disconnect(account);
-	purple_account_set_password_async(account, g_strdup(pw), g_free, NULL, NULL);
+	purple_account_set_password(account, password);
 }
 
 void
--- a/libpurple/plugins/keyrings/gnomekeyring.c	Fri Aug 15 03:41:24 2008 +0000
+++ b/libpurple/plugins/keyrings/gnomekeyring.c	Fri Aug 15 16:58:06 2008 +0000
@@ -239,6 +239,8 @@
 	GError * error;
 	PurpleAccount * account = storage->account;
 
+	g_return_if_fail(storage != NULL);
+
 	if (result != GNOME_KEYRING_RESULT_OK) {
 		switch(result)
 		{
@@ -290,6 +292,7 @@
 
 		if(cb != NULL)
 			cb(account, NULL, storage->user_data);
+
 		return;
 	
 	}
--- a/libpurple/plugins/keyrings/internalkeyring.c	Fri Aug 15 03:41:24 2008 +0000
+++ b/libpurple/plugins/keyrings/internalkeyring.c	Fri Aug 15 16:58:06 2008 +0000
@@ -146,7 +146,7 @@
 
 	}
 
-	if(destroy != NULL)
+	if(destroy && password)
 		destroy(password);
 
 	if (cb != NULL)

mercurial