Mercurial > pidgin
diff libpurple/protocols/qq/sys_msg.c @ 23695:5f454b975a99
2008.08.10 - csyfek <csyfek(at)gmail.com>
* Commit to Pidgin
2008.08.06 - ccpaging <ecc_hy(at)hotmail.com>
* Rename names of variables, Group, to Room
* Functions of group_network merged into qq_network and qq_process
* Canceled managing glist of group packet, add sub_cmdd and room_id to transaction
* Fixed error of demo group:
If 'room list' and 'room infor' are not setup, response received from server will emits
'room_id = 0' packet.
2008.08.04 - ccpaging <ecc_hy(at)hotmail.com>
* Use new crypt/decrypt functions
* Rename crypt.c/h to qq_crypt.c/h
* Clean code of decrypt functions
* Fixed decryption failure
2008.08.04 - csyfek <csyfek(at)gmail.com>
* Update AUTHORS
| author | SHiNE CsyFeK <csyfek@gmail.com> |
|---|---|
| date | Sun, 10 Aug 2008 04:32:14 +0000 |
| parents | 1c50f12b1c52 |
| children | 967344bc404d |
line wrap: on
line diff
--- a/libpurple/protocols/qq/sys_msg.c Sat Aug 09 23:23:48 2008 +0000 +++ b/libpurple/protocols/qq/sys_msg.c Sun Aug 10 04:32:14 2008 +0000 @@ -31,7 +31,6 @@ #include "buddy_list.h" #include "buddy_opt.h" #include "char_conv.h" -#include "crypt.h" #include "header_info.h" #include "packet_parse.h" #include "qq.h" @@ -292,64 +291,55 @@ g_free(content); } -void qq_process_msg_sys(guint8 *buf, gint buf_len, guint16 seq, PurpleConnection *gc) +void qq_process_msg_sys(guint8 *data, gint data_len, guint16 seq, PurpleConnection *gc) { qq_data *qd; - gint len; - guint8 *data; gchar **segments, *code, *from, *to, *msg, *msg_utf8; - g_return_if_fail(buf != NULL && buf_len != 0); + g_return_if_fail(data != NULL && data_len != 0); qd = (qq_data *) gc->proto_data; - len = buf_len; - data = g_newa(guint8, len); + + if (NULL == (segments = split_data(data, data_len, "\x1f", 4))) + return; + code = segments[0]; + from = segments[1]; + to = segments[2]; + msg = segments[3]; - if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { - if (NULL == (segments = split_data(data, len, "\x1f", 4))) - return; - code = segments[0]; - from = segments[1]; - to = segments[2]; - msg = segments[3]; + _qq_send_packet_ack_msg_sys(gc, code[0], strtol(from, NULL, 10), seq); - _qq_send_packet_ack_msg_sys(gc, code[0], strtol(from, NULL, 10), seq); - - if (strtol(to, NULL, 10) != qd->uid) { /* not to me */ - purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Recv sys msg to [%s], not me!, discard\n", to); - g_strfreev(segments); - return; - } + if (strtol(to, NULL, 10) != qd->uid) { /* not to me */ + purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Recv sys msg to [%s], not me!, discard\n", to); + g_strfreev(segments); + return; + } - msg_utf8 = qq_to_utf8(msg, QQ_CHARSET_DEFAULT); - switch (strtol(code, NULL, 10)) { - case QQ_MSG_SYS_BEING_ADDED: - _qq_process_msg_sys_being_added(gc, from, to, msg_utf8); - break; - case QQ_MSG_SYS_ADD_CONTACT_REQUEST: - _qq_process_msg_sys_add_contact_request(gc, from, to, msg_utf8); - break; - case QQ_MSG_SYS_ADD_CONTACT_APPROVED: - _qq_process_msg_sys_add_contact_approved(gc, from, to, msg_utf8); - break; - case QQ_MSG_SYS_ADD_CONTACT_REJECTED: - _qq_process_msg_sys_add_contact_rejected(gc, from, to, msg_utf8); - break; - case QQ_MSG_SYS_NOTICE: - _qq_process_msg_sys_notice(gc, from, to, msg_utf8); - break; - case QQ_MSG_SYS_NEW_VERSION: - purple_debug(PURPLE_DEBUG_WARNING, "QQ", - "QQ server says there is newer version than %s\n", qq_get_ver_desc(QQ_CLIENT)); - break; - default: - purple_debug(PURPLE_DEBUG_WARNING, "QQ", "Recv unknown sys msg code: %s\n", code); - purple_debug(PURPLE_DEBUG_WARNING, "QQ", "the msg is : %s\n", msg_utf8); - } - g_free(msg_utf8); - g_strfreev(segments); - - } else { - purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Error decrypt recv msg sys\n"); + msg_utf8 = qq_to_utf8(msg, QQ_CHARSET_DEFAULT); + switch (strtol(code, NULL, 10)) { + case QQ_MSG_SYS_BEING_ADDED: + _qq_process_msg_sys_being_added(gc, from, to, msg_utf8); + break; + case QQ_MSG_SYS_ADD_CONTACT_REQUEST: + _qq_process_msg_sys_add_contact_request(gc, from, to, msg_utf8); + break; + case QQ_MSG_SYS_ADD_CONTACT_APPROVED: + _qq_process_msg_sys_add_contact_approved(gc, from, to, msg_utf8); + break; + case QQ_MSG_SYS_ADD_CONTACT_REJECTED: + _qq_process_msg_sys_add_contact_rejected(gc, from, to, msg_utf8); + break; + case QQ_MSG_SYS_NOTICE: + _qq_process_msg_sys_notice(gc, from, to, msg_utf8); + break; + case QQ_MSG_SYS_NEW_VERSION: + purple_debug(PURPLE_DEBUG_WARNING, "QQ", + "QQ server says there is newer version than %s\n", qq_get_ver_desc(QQ_CLIENT)); + break; + default: + purple_debug(PURPLE_DEBUG_WARNING, "QQ", "Recv unknown sys msg code: %s\n", code); + purple_debug(PURPLE_DEBUG_WARNING, "QQ", "the msg is : %s\n", msg_utf8); } + g_free(msg_utf8); + g_strfreev(segments); }
