# HG changeset patch # User Ethan Blanton # Date 1240952135 0 # Node ID d51b8647d43c3b46b7a36f8d3785d7af087641cc # Parent 1b8c18ab762faaed08d5ebcd7112486ff0af5c70 applied changes from 70fa4cc384b7643ab1f296bdc2399bc208542a20 through f0df27a299120baecf9ea88a9fb24ffe1dbe72fd ChangeLog for the above diff -r 1b8c18ab762f -r d51b8647d43c ChangeLog --- a/ChangeLog Tue Apr 28 20:51:59 2009 +0000 +++ b/ChangeLog Tue Apr 28 20:55:35 2009 +0000 @@ -12,6 +12,8 @@ MSN: * Fix a race condition causing occasional Pidgin crashes. + * Fix some errors about the friendly name changing too fast caused + by MSN/Yahoo integration buddies. Yahoo: * Fix a crash when sending very long messages. diff -r 1b8c18ab762f -r d51b8647d43c libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Tue Apr 28 20:51:59 2009 +0000 +++ b/libpurple/protocols/msn/notification.c Tue Apr 28 20:55:35 2009 +0000 @@ -630,7 +630,7 @@ } else { purple_debug_error("msn", - "Got FQY update for unkwown user %s on network %d.\n", + "Got FQY update for unknown user %s on network %d.\n", passport, network); } } @@ -685,6 +685,9 @@ if (++adl_count % 150 == 0) { payload = xmlnode_to_str(adl_node, &payload_len); + /* ADL's are returned all-together */ + session->adl_fqy++; + msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); @@ -696,6 +699,9 @@ xmlnode_set_attrib(adl_node, "l", "1"); } } else { + /* FQY's are returned one-at-a-time */ + session->adl_fqy++; + msn_add_contact_xml(session, fqy_node, user->passport, 0, user->networkid); @@ -717,6 +723,9 @@ if (adl_count == 0 || adl_count % 150 != 0) { payload = xmlnode_to_str(adl_node, &payload_len); + /* ADL's are returned all-together */ + session->adl_fqy++; + msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); g_free(payload); @@ -803,7 +812,8 @@ if (!strcmp(cmd->params[1], "OK")) { /* ADL ack */ - msn_session_finish_login(session); + if (--session->adl_fqy == 0) + msn_session_finish_login(session); } else { cmdproc->last_cmd->payload_cb = adl_cmd_parse; cmd->payload_len = atoi(cmd->params[1]); diff -r 1b8c18ab762f -r d51b8647d43c libpurple/protocols/msn/session.h --- a/libpurple/protocols/msn/session.h Tue Apr 28 20:51:59 2009 +0000 +++ b/libpurple/protocols/msn/session.h Tue Apr 28 20:55:35 2009 +0000 @@ -90,6 +90,7 @@ gboolean connected; gboolean logged_in; /**< A temporal flag to ignore local buddy list adds. */ + int adl_fqy; /**< A count of ADL/FQY so status is only changed once. */ gboolean destroying; /**< A flag that states if the session is being destroyed. */ gboolean http_method;