changeset 21769:6fe5e9e85979

merge of '1d6b24ed027c253dbe63f69d5e40b43cd7faf436' and '9fc68e2ca777cd775258519c44b4007fd5a706c9'
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Tue, 04 Dec 2007 22:23:51 +0000
parents 6b42bed44324 (diff) 7ac87187bbec (current diff)
children 7f79f3099c72
files
diffstat 3 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/irc/irc.c	Tue Dec 04 22:20:18 2007 +0000
+++ b/libpurple/protocols/irc/irc.c	Tue Dec 04 22:23:51 2007 +0000
@@ -184,9 +184,14 @@
 /* XXX I don't like messing directly with these buddies */
 gboolean irc_blist_timeout(struct irc_conn *irc)
 {
-	GString *string = g_string_sized_new(512);
+	GString *string;
 	char *list, *buf;
 
+	if (irc->ison_outstanding)
+		return TRUE;
+
+	string = g_string_sized_new(512);
+
 	g_hash_table_foreach(irc->buddies, (GHFunc)irc_buddy_append, (gpointer)string);
 
 	list = g_string_free(string, FALSE);
@@ -200,6 +205,8 @@
 	irc_send(irc, buf);
 	g_free(buf);
 
+	irc->ison_outstanding = TRUE;
+
 	return TRUE;
 }
 
--- a/libpurple/protocols/irc/irc.h	Tue Dec 04 22:20:18 2007 +0000
+++ b/libpurple/protocols/irc/irc.h	Tue Dec 04 22:23:51 2007 +0000
@@ -56,6 +56,8 @@
 	guint timer;
 	GHashTable *buddies;
 
+	gboolean ison_outstanding;
+
 	char *inbuf;
 	int inbuflen;
 	int inbufused;
--- a/libpurple/protocols/irc/msgs.c	Tue Dec 04 22:20:18 2007 +0000
+++ b/libpurple/protocols/irc/msgs.c	Tue Dec 04 22:23:51 2007 +0000
@@ -707,6 +707,7 @@
 	g_strfreev(nicks);
 
 	g_hash_table_foreach(irc->buddies, (GHFunc)irc_buddy_status, (gpointer)irc);
+	irc->ison_outstanding = FALSE;
 }
 
 static void irc_buddy_status(char *name, struct irc_buddy *ib, struct irc_conn *irc)