diff src/account.c @ 11251:ad9a61894d9b

[gaim-migrate @ 13420] sf patch #1242524, from Sadrul Habib Chowdhury gaim_account_is_connected fix committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 13 Aug 2005 05:54:34 +0000
parents b4b1be482b4e
children bb0d7b719af2
line wrap: on
line diff
--- a/src/account.c	Sat Aug 13 05:30:13 2005 +0000
+++ b/src/account.c	Sat Aug 13 05:54:34 2005 +0000
@@ -1002,7 +1002,7 @@
 	GaimConnection *gc;
 
 	g_return_if_fail(account != NULL);
-	g_return_if_fail(gaim_account_is_connected(account));
+	g_return_if_fail(!gaim_account_is_disconnected(account));
 
 	gaim_debug_info("account", "Disconnecting account %p\n", account);
 
@@ -1513,18 +1513,36 @@
 	schedule_accounts_save();
 }
 
-gboolean
-gaim_account_is_connected(const GaimAccount *account)
+static GaimConnectionState
+gaim_account_get_state(const GaimAccount *account)
 {
 	GaimConnection *gc;
 
-	g_return_val_if_fail(account != NULL, FALSE);
+	g_return_val_if_fail(account != NULL, GAIM_DISCONNECTED);
 
 	gc = gaim_account_get_connection(account);
+	if (!gc)
+		return GAIM_DISCONNECTED;
 
-	/* TODO: The first way is better... but it doesn't work quite right yet */
-	/* return ((gc != NULL) && GAIM_CONNECTION_IS_CONNECTED(gc)); */
-	return ((gc != NULL) && gaim_connection_get_state(gc) != GAIM_DISCONNECTED);
+	return gaim_connection_get_state(gc);
+}
+
+gboolean
+gaim_account_is_connected(const GaimAccount *account)
+{
+	return (gaim_account_get_state(account) == GAIM_CONNECTED);
+}
+
+gboolean
+gaim_account_is_connecting(const GaimAccount *account)
+{
+	return (gaim_account_get_state(account) == GAIM_CONNECTING);
+}
+
+gboolean
+gaim_account_is_disconnected(const GaimAccount *account)
+{
+	return (gaim_account_get_state(account) == GAIM_DISCONNECTED);
 }
 
 const char *