libpurple/protocols/msn/notification.c

changeset 26579
fa80ff2f8a03
parent 26474
69f112d09563
child 27009
67010d886980
equal deleted inserted replaced
26578:41a9f4b89956 26579:fa80ff2f8a03
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

mercurial