diff libpurple/protocols/qq/qq_trans.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/qq_trans.c	Sat Aug 09 23:23:48 2008 +0000
+++ b/libpurple/protocols/qq/qq_trans.c	Sun Aug 10 04:32:14 2008 +0000
@@ -90,6 +90,18 @@
 		return FALSE;
 }
 
+guint8 qq_trans_get_room_cmd(qq_transaction *trans)
+{
+	g_return_val_if_fail(trans != NULL, 0);
+	return trans->room_cmd;
+}
+
+guint32 qq_trans_get_room_id(qq_transaction *trans)
+{
+	g_return_val_if_fail(trans != NULL, 0);
+	return trans->room_id;
+}
+
 /* Remove a packet with seq from send trans */
 static void trans_remove(qq_data *qd, qq_transaction *trans) 
 {
@@ -120,21 +132,53 @@
 	trans->fd = qd->fd;
 	trans->cmd = cmd;
 	trans->seq = seq;
+	trans->room_cmd = 0;
+	trans->room_id = 0;
 	trans->send_retries = QQ_RESEND_MAX;
 	trans->rcved_times = 0;
 	trans->scan_times = 0;
+
 	trans->data = NULL;
 	trans->data_len = 0;
 	if (data != NULL && data_len > 0) {
 		trans->data = g_memdup(data, data_len);	/* don't use g_strdup, may have 0x00 */
 		trans->data_len = data_len;
 	}
-	purple_debug(PURPLE_DEBUG_ERROR, "QQ_TRANS",
+	purple_debug(PURPLE_DEBUG_INFO, "QQ_TRANS",
 			"Add client cmd, seq = %d, data = %p, len = %d\n",
 			trans->seq, trans->data, trans->data_len);
 	qd->transactions = g_list_append(qd->transactions, trans);
 }
 
+void qq_trans_add_room_cmd(qq_data *qd, guint16 seq, guint8 room_cmd, guint32 room_id,
+		guint8 *data, gint data_len)
+{
+	qq_transaction *trans = g_new0(qq_transaction, 1);
+
+	g_return_if_fail(trans != NULL);
+
+	trans->flag = 0;
+	trans->fd = qd->fd;
+	trans->seq = seq;
+	trans->cmd = QQ_CMD_ROOM;
+	trans->room_cmd = room_cmd;
+	trans->room_id = room_id;
+	trans->send_retries = QQ_RESEND_MAX;
+	trans->rcved_times = 0;
+	trans->scan_times = 0;
+
+	trans->data = NULL;
+	trans->data_len = 0;
+	if (data != NULL && data_len > 0) {
+		trans->data = g_memdup(data, data_len);	/* don't use g_strdup, may have 0x00 */
+		trans->data_len = data_len;
+	}
+	purple_debug(PURPLE_DEBUG_INFO, "QQ_TRANS",
+			"Add room cmd, seq = %d, data = %p, len = %d\n",
+			trans->seq, trans->data, trans->data_len);
+	qd->transactions = g_list_append(qd->transactions, trans);
+}
+
 void qq_trans_add_server_cmd(qq_data *qd, guint16 cmd, guint16 seq, guint8 *data, gint data_len)
 {
 	qq_transaction *trans = g_new0(qq_transaction, 1);
@@ -148,6 +192,8 @@
 	trans->fd = qd->fd;
 	trans->cmd = cmd;
 	trans->seq = seq;
+	trans->room_cmd = 0;
+	trans->room_id = 0;
 	trans->send_retries = 0;
 	trans->rcved_times = 1;
 	trans->scan_times = 0;
@@ -157,7 +203,7 @@
 		trans->data = g_memdup(data, data_len);	/* don't use g_strdup, may have 0x00 */
 		trans->data_len = data_len;
 	}
-	purple_debug(PURPLE_DEBUG_ERROR, "QQ_TRANS",
+	purple_debug(PURPLE_DEBUG_INFO, "QQ_TRANS",
 			"Add server cmd, seq = %d, data = %p, len = %d\n",
 			trans->seq, trans->data, trans->data_len);
 	qd->transactions = g_list_append(qd->transactions, trans);