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