| 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 } |