comparison libpurple/protocols/oscar/oscar_data.c @ 23576:a73d527731ff

To decrease the odds of hitting the rate limit ceiling rapidly on a buddy list with a large number of ICQ buddies, space out our requests for the ICQ Status Note. This has 2 beneficial effects: 1. Request notes over a longer period of time, avoiding hitting the rate limit immediately. 2. Coalesce multiple requests for the same note into a single request. Previously, we were making n*2 to n*4 requests, where n is the number of ICQ contacts with status notes, at signon, as purple_parse_oncoming is called multiple times for each one.
author Evan Schoenberg <evan.s@dreskin.net>
date Sun, 20 Jul 2008 22:19:10 +0000
parents 1728c7414856
children a270bd4b5298
comparison
equal deleted inserted replaced
23575:e53a21941d43 23576:a73d527731ff
90 { 90 {
91 gchar *sn = od->requesticon->data; 91 gchar *sn = od->requesticon->data;
92 od->requesticon = g_slist_remove(od->requesticon, sn); 92 od->requesticon = g_slist_remove(od->requesticon, sn);
93 g_free(sn); 93 g_free(sn);
94 } 94 }
95 while (od->statusnotes_queue)
96 {
97 gchar *sn = od->statusnotes_queue->data;
98 od->statusnotes_queue = g_slist_remove(od->statusnotes_queue, sn);
99 g_free(sn);
100 }
101 if (od->statusnotes_queue_timer)
102 purple_timeout_remove(od->statusnotes_queue_timer);
95 g_free(od->email); 103 g_free(od->email);
96 g_free(od->newp); 104 g_free(od->newp);
97 g_free(od->oldp); 105 g_free(od->oldp);
98 if (od->getblisttimer > 0) 106 if (od->getblisttimer > 0)
99 purple_timeout_remove(od->getblisttimer); 107 purple_timeout_remove(od->getblisttimer);