# HG changeset patch # User Mark Doliner # Date 1056776809 0 # Node ID aef0c34898376452f178bdfc0e9616963977967a # Parent 156953fe3e147474b051600cd799fa89c2955e87 [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 diff -r 156953fe3e14 -r aef0c3489837 src/protocols/oscar/oscar.c --- 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;