libpurple/protocols/qq/qq_process.c

branch
openq
changeset 24343
9c695a1f475b
parent 24341
02abffea97fe
child 24344
712295f3bf6d
equal deleted inserted replaced
24342:5f92f3ab84c5 24343:9c695a1f475b
611 if (data_len >= 0) { 611 if (data_len >= 0) {
612 purple_debug_warning("QQ", "Decrypt login packet by pwd_4th_md5, %d bytes\n", data_len); 612 purple_debug_warning("QQ", "Decrypt login packet by pwd_4th_md5, %d bytes\n", data_len);
613 } 613 }
614 } 614 }
615 break; 615 break;
616 default: 616 case QQ_CMD_LOGIN:
617 /* May use password_twice_md5 in the past version like QQ2005 */ 617 default:
618 data_len = qq_decrypt(data, rcved, rcved_len, qd->ld.random_key); 618 if (qd->client_version > 2005) {
619 if (data_len >= 0) { 619 data_len = qq_decrypt(data, rcved, rcved_len, qd->ld.pwd_4th_md5);
620 purple_debug_warning("QQ", "Decrypt login packet by random_key, %d bytes\n", data_len); 620 if (data_len >= 0) {
621 purple_debug_warning("QQ", "Decrypt login packet by pwd_4th_md5\n");
622 } else {
623 data_len = qq_decrypt(data, rcved, rcved_len, qd->ld.login_key);
624 if (data_len >= 0) {
625 purple_debug_warning("QQ", "Decrypt login packet by login_key\n");
626 }
627 }
621 } else { 628 } else {
622 data_len = qq_decrypt(data, rcved, rcved_len, qd->ld.pwd_2nd_md5); 629 /* May use password_twice_md5 in the past version like QQ2005 */
630 data_len = qq_decrypt(data, rcved, rcved_len, qd->ld.random_key);
623 if (data_len >= 0) { 631 if (data_len >= 0) {
624 purple_debug_warning("QQ", "Decrypt login packet by pwd_2nd_md5, %d bytes\n", data_len); 632 purple_debug_warning("QQ", "Decrypt login packet by random_key\n");
633 } else {
634 data_len = qq_decrypt(data, rcved, rcved_len, qd->ld.pwd_2nd_md5);
635 if (data_len >= 0) {
636 purple_debug_warning("QQ", "Decrypt login packet by pwd_2nd_md5\n");
637 }
625 } 638 }
626 } 639 }
627 break; 640 break;
628 } 641 }
629 642
678 } else { 691 } else {
679 qq_request_login_2007(gc); 692 qq_request_login_2007(gc);
680 } 693 }
681 break; 694 break;
682 case QQ_CMD_LOGIN: 695 case QQ_CMD_LOGIN:
683 ret_8 = qq_process_login(gc, data, data_len); 696 if (qd->client_version == 2008) {
697 ret_8 = qq_process_login_2008(gc, data, data_len);
698 } else if (qd->client_version == 2007) {
699 ret_8 = qq_process_login_2007(gc, data, data_len);
700 } else {
701 ret_8 = qq_process_login(gc, data, data_len);
702 }
684 if (ret_8 != QQ_LOGIN_REPLY_OK) { 703 if (ret_8 != QQ_LOGIN_REPLY_OK) {
685 return ret_8; 704 return ret_8;
686 } 705 }
687 706
688 purple_debug_info("QQ", "Login repliess OK; everything is fine\n"); 707 purple_debug_info("QQ", "Login repliess OK; everything is fine\n");

mercurial