| 628 payload = xmlnode_to_str(adl_node, &payload_len); |
628 payload = xmlnode_to_str(adl_node, &payload_len); |
| 629 msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); |
629 msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); |
| 630 |
630 |
| 631 } else { |
631 } else { |
| 632 purple_debug_error("msn", |
632 purple_debug_error("msn", |
| 633 "Got FQY update for unkwown user %s on network %d.\n", |
633 "Got FQY update for unknown user %s on network %d.\n", |
| 634 passport, network); |
634 passport, network); |
| 635 } |
635 } |
| 636 } |
636 } |
| 637 |
637 |
| 638 /*dump contact info to NS*/ |
638 /*dump contact info to NS*/ |
| 684 |
684 |
| 685 /* each ADL command may contain up to 150 contacts */ |
685 /* each ADL command may contain up to 150 contacts */ |
| 686 if (++adl_count % 150 == 0) { |
686 if (++adl_count % 150 == 0) { |
| 687 payload = xmlnode_to_str(adl_node, &payload_len); |
687 payload = xmlnode_to_str(adl_node, &payload_len); |
| 688 |
688 |
| |
689 /* ADL's are returned all-together */ |
| |
690 session->adl_fqy++; |
| |
691 |
| 689 msn_notification_post_adl(session->notification->cmdproc, |
692 msn_notification_post_adl(session->notification->cmdproc, |
| 690 payload, payload_len); |
693 payload, payload_len); |
| 691 |
694 |
| 692 g_free(payload); |
695 g_free(payload); |
| 693 xmlnode_free(adl_node); |
696 xmlnode_free(adl_node); |
| 695 adl_node = xmlnode_new("ml"); |
698 adl_node = xmlnode_new("ml"); |
| 696 adl_node->child = NULL; |
699 adl_node->child = NULL; |
| 697 xmlnode_set_attrib(adl_node, "l", "1"); |
700 xmlnode_set_attrib(adl_node, "l", "1"); |
| 698 } |
701 } |
| 699 } else { |
702 } else { |
| |
703 /* FQY's are returned one-at-a-time */ |
| |
704 session->adl_fqy++; |
| |
705 |
| 700 msn_add_contact_xml(session, fqy_node, user->passport, |
706 msn_add_contact_xml(session, fqy_node, user->passport, |
| 701 0, user->networkid); |
707 0, user->networkid); |
| 702 |
708 |
| 703 /* each FQY command may contain up to 150 contacts, probably */ |
709 /* each FQY command may contain up to 150 contacts, probably */ |
| 704 if (++fqy_count % 150 == 0) { |
710 if (++fqy_count % 150 == 0) { |
| 716 |
722 |
| 717 /* Send the rest, or just an empty one to let the server set us online */ |
723 /* Send the rest, or just an empty one to let the server set us online */ |
| 718 if (adl_count == 0 || adl_count % 150 != 0) { |
724 if (adl_count == 0 || adl_count % 150 != 0) { |
| 719 payload = xmlnode_to_str(adl_node, &payload_len); |
725 payload = xmlnode_to_str(adl_node, &payload_len); |
| 720 |
726 |
| |
727 /* ADL's are returned all-together */ |
| |
728 session->adl_fqy++; |
| |
729 |
| 721 msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); |
730 msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); |
| 722 |
731 |
| 723 g_free(payload); |
732 g_free(payload); |
| 724 } |
733 } |
| 725 |
734 |
| 802 |
811 |
| 803 session = cmdproc->session; |
812 session = cmdproc->session; |
| 804 |
813 |
| 805 if (!strcmp(cmd->params[1], "OK")) { |
814 if (!strcmp(cmd->params[1], "OK")) { |
| 806 /* ADL ack */ |
815 /* ADL ack */ |
| 807 msn_session_finish_login(session); |
816 if (--session->adl_fqy == 0) |
| |
817 msn_session_finish_login(session); |
| 808 } else { |
818 } else { |
| 809 cmdproc->last_cmd->payload_cb = adl_cmd_parse; |
819 cmdproc->last_cmd->payload_cb = adl_cmd_parse; |
| 810 cmd->payload_len = atoi(cmd->params[1]); |
820 cmd->payload_len = atoi(cmd->params[1]); |
| 811 } |
821 } |
| 812 |
822 |