# HG changeset patch # User Elliott Sales de Andrade # Date 1214175590 0 # Node ID 2d515f8f338e5727cc1492c434dfd6c9c8a1d326 # Parent 80d09f42b1571081d3a643486c28b71c0cf1cb2c A patch from felipec to stop requesting the MSN buddy icon when the object is changed in the middle of the request or the buddy has gone offline. References #5377. And http://pidgin.im/pipermail/devel/2008-June/006133.html And http://pidgin.im/pipermail/devel/2008-June/006134.html diff -r 80d09f42b157 -r 2d515f8f338e libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Sun Jun 22 21:31:58 2008 +0000 +++ b/libpurple/protocols/msn/slp.c Sun Jun 22 22:59:50 2008 +0000 @@ -1067,6 +1067,21 @@ } static void +next_buddy_request(MsnUserList *userlist) +{ + /* Free one window slot */ + userlist->buddy_icon_window++; + +#ifdef MSN_DEBUG_UD + purple_debug_info("msn", "request_user_display(): buddy_icon_window++ yields =%d\n", + userlist->buddy_icon_window); +#endif + + /* Request the next one */ + msn_release_buddy_icon_request(userlist); +} + +static void request_user_display(MsnUser *user) { PurpleAccount *account; @@ -1082,6 +1097,19 @@ obj = msn_user_get_object(user); + /* Changed while in the queue. */ + if (obj == NULL) { + purple_buddy_icons_set_for_user(account, user->passport, NULL, 0, NULL); + next_buddy_request(session->userlist); + return; + } + + /* The user went offline. */ + if (user->status == NULL) { + next_buddy_request(session->userlist); + return; + } + info = msn_object_get_sha1(obj); if (g_ascii_strcasecmp(user->passport, @@ -1111,14 +1139,7 @@ purple_buddy_icons_set_for_user(account, user->passport, g_memdup(data, len), len, info); - /* Free one window slot */ - session->userlist->buddy_icon_window++; - -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "request_user_display(): buddy_icon_window++ yields =%d\n", - session->userlist->buddy_icon_window); -#endif - - msn_release_buddy_icon_request(session->userlist); + next_buddy_request(session->userlist); } } +