libpurple/protocols/qq/qq_process.c

branch
openq
changeset 24360
f7e260e79429
parent 24355
c9deccad8f3f
child 24361
de1985a5045f
equal deleted inserted replaced
24359:20e009672a63 24360:f7e260e79429
743 "Invaild len of room cmd decrypted, [%05d], 0x%02X %s for %d, len %d\n", 743 "Invaild len of room cmd decrypted, [%05d], 0x%02X %s for %d, len %d\n",
744 seq, room_cmd, qq_get_room_cmd_desc(room_cmd), room_id, rcved_len); 744 seq, room_cmd, qq_get_room_cmd_desc(room_cmd), room_id, rcved_len);
745 return; 745 return;
746 } 746 }
747 747
748 group = qq_room_search_id(gc, room_id);
749 if (group == NULL) {
750 purple_debug_warning("QQ",
751 "Missing room id in [%05d], 0x%02X %s for %d, len %d\n",
752 seq, room_cmd, qq_get_room_cmd_desc(room_cmd), room_id, rcved_len);
753 }
754
755 bytes = 0; 748 bytes = 0;
756 bytes += qq_get8(&reply_cmd, data + bytes); 749 bytes += qq_get8(&reply_cmd, data + bytes);
757 bytes += qq_get8(&reply, data + bytes); 750 bytes += qq_get8(&reply, data + bytes);
758 751
759 if (reply_cmd != room_cmd) { 752 if (reply_cmd != room_cmd) {
763 seq, room_cmd, qq_get_room_cmd_desc(room_cmd), room_id, rcved_len); 756 seq, room_cmd, qq_get_room_cmd_desc(room_cmd), room_id, rcved_len);
764 } 757 }
765 758
766 /* now process the packet */ 759 /* now process the packet */
767 if (reply != QQ_ROOM_CMD_REPLY_OK) { 760 if (reply != QQ_ROOM_CMD_REPLY_OK) {
768 if (group != NULL) {
769 qq_set_pending_id(&qd->joining_groups, group->ext_id, FALSE);
770 }
771
772 switch (reply) { /* this should be all errors */ 761 switch (reply) { /* this should be all errors */
773 case QQ_ROOM_CMD_REPLY_NOT_MEMBER: 762 case QQ_ROOM_CMD_REPLY_NOT_MEMBER:
774 if (group != NULL) { 763 group = qq_room_search_id(gc, room_id);
764 if (group == NULL) {
765 purple_debug_warning("QQ",
766 "Missing room id in [%05d], 0x%02X %s for %d, len %d\n",
767 seq, room_cmd, qq_get_room_cmd_desc(room_cmd), room_id, rcved_len);
768 } else {
775 purple_debug_warning("QQ", 769 purple_debug_warning("QQ",
776 _("You are not a member of QQ Qun \"%s\"\n"), group->title_utf8); 770 _("You are not a member of QQ Qun \"%s\"\n"), group->title_utf8);
777 group->my_role = QQ_ROOM_ROLE_NO; 771 group->my_role = QQ_ROOM_ROLE_NO;
778 qq_group_refresh(gc, group); 772 qq_group_refresh(gc, group);
779 } 773 }
805 break; 799 break;
806 case QQ_ROOM_CMD_ACTIVATE: 800 case QQ_ROOM_CMD_ACTIVATE:
807 qq_group_process_activate_group_reply(data + bytes, data_len - bytes, gc); 801 qq_group_process_activate_group_reply(data + bytes, data_len - bytes, gc);
808 break; 802 break;
809 case QQ_ROOM_CMD_SEARCH: 803 case QQ_ROOM_CMD_SEARCH:
810 qq_process_group_cmd_search_group(data + bytes, data_len - bytes, gc); 804 qq_process_room_search(gc, data + bytes, data_len - bytes, ship32);
811 break; 805 break;
812 case QQ_ROOM_CMD_JOIN: 806 case QQ_ROOM_CMD_JOIN:
813 qq_process_group_cmd_join_group(data + bytes, data_len - bytes, gc); 807 qq_process_group_cmd_join_group(data + bytes, data_len - bytes, gc);
814 break; 808 break;
815 case QQ_ROOM_CMD_AUTH: 809 case QQ_ROOM_CMD_AUTH:
821 case QQ_ROOM_CMD_SEND_MSG: 815 case QQ_ROOM_CMD_SEND_MSG:
822 qq_process_group_cmd_im(data + bytes, data_len - bytes, gc); 816 qq_process_group_cmd_im(data + bytes, data_len - bytes, gc);
823 break; 817 break;
824 case QQ_ROOM_CMD_GET_ONLINES: 818 case QQ_ROOM_CMD_GET_ONLINES:
825 qq_process_room_cmd_get_onlines(data + bytes, data_len - bytes, gc); 819 qq_process_room_cmd_get_onlines(data + bytes, data_len - bytes, gc);
826 if (group != NULL)
827 qq_room_conv_set_onlines(gc, group);
828 break; 820 break;
829 case QQ_ROOM_CMD_GET_BUDDIES: 821 case QQ_ROOM_CMD_GET_BUDDIES:
830 qq_process_room_cmd_get_buddies(data + bytes, data_len - bytes, gc); 822 qq_process_room_cmd_get_buddies(data + bytes, data_len - bytes, gc);
831 if (group != NULL) {
832 group->is_got_info = TRUE;
833 qq_room_conv_set_onlines(gc, group);
834 }
835 break; 823 break;
836 default: 824 default:
837 purple_debug_warning("QQ", "Unknow room cmd 0x%02X %s\n", 825 purple_debug_warning("QQ", "Unknow room cmd 0x%02X %s\n",
838 reply_cmd, qq_get_room_cmd_desc(reply_cmd)); 826 reply_cmd, qq_get_room_cmd_desc(reply_cmd));
839 } 827 }

mercurial