changeset 5968:aef0c3489837

[gaim-migrate @ 6415] I haven't been able to test this, but this should implement a timer so that, when you sign on and are not able to retrieve your AIM buddy list, it will retry every 5 minutes. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 28 Jun 2003 05:06:49 +0000
parents 156953fe3e14
children 4b1d6ed1204f
files src/protocols/oscar/oscar.c
diffstat 1 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/protocols/oscar/oscar.c	Sat Jun 28 00:49:56 2003 +0000
+++ b/src/protocols/oscar/oscar.c	Sat Jun 28 05:06:49 2003 +0000
@@ -93,6 +93,7 @@
 	gboolean icq;
 	GSList *evilhack;
 	guint icontimer;
+	guint getblisttimer;
 
 	struct {
 		guint maxwatchers; /* max users who can watch you */
@@ -748,6 +749,8 @@
 		gaim_input_remove(od->icopa);
 	if (od->icontimer)
 		g_source_remove(od->icontimer);
+	if (od->getblisttimer)
+		g_source_remove(od->getblisttimer);
 	aim_session_kill(od->sess);
 	g_free(od->sess);
 	od->sess = NULL;
@@ -4704,6 +4707,12 @@
 	}
 }
 
+static gboolean gaim_ssi_rerequestdata(gpointer data) {
+	aim_session_t *sess = data;
+	aim_ssi_reqdata(sess, sess->ssi.timestamp, sess->ssi.numitems);
+	return FALSE;
+}
+
 static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) {
 	GaimConnection *gc = sess->aux_data;
 	struct oscar_data *od = gc->proto_data;
@@ -4719,13 +4728,13 @@
 	if (reason == 0x0005) {
 		gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
 						  _("Gaim was temporarily unable to retrieve your buddy list from the AIM servers.  Your buddy list is not lost, and will probably become available in a few hours."));
+		od->getblisttimer = g_timeout_add(300000, gaim_ssi_rerequestdata, od->sess);
 	}
 
 	/* Activate SSI */
 	/* Sending the enable causes other people to be able to see you, and you to see them */
 	/* Make sure your privacy setting/invisibility is set how you want it before this! */
-	gaim_debug(GAIM_DEBUG_INFO, "oscar",
-			   "ssi: activating server-stored buddy list\n");
+	gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: activating server-stored buddy list\n");
 	aim_ssi_enable(od->sess);
 
 	return 1;