diff libpurple/protocols/qq/file_trans.c @ 24088:147ada94a1d8

2008.08.16 - ccpaging <ecc_hy(at)hotmail.com> * Rename group to room. If you used pidginqq before, this may create a new room with same title, you may delete old one * Replace purple_debug with purple_debug_info, purple_debug_warning, purple_debug_error * Add server notice and server new, and two options to turn on/off * Minor modify for reducing transaction's debug infor * Minor modifies for system notice and QQ news. * Add 4 new strings need translate compare with p10.
author SHiNE CsyFeK <csyfek@gmail.com>
date Thu, 11 Sep 2008 13:25:07 +0000
parents 5f454b975a99
children 25f62d21b3f8
line wrap: on
line diff
--- a/libpurple/protocols/qq/file_trans.c	Thu Sep 11 04:19:37 2008 +0000
+++ b/libpurple/protocols/qq/file_trans.c	Thu Sep 11 13:25:07 2008 +0000
@@ -22,10 +22,6 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
-#ifdef _WIN32
-#define random rand
-#endif
-
 #include "internal.h"
 
 #include "debug.h"
@@ -62,7 +58,7 @@
 {
 	guint8 seed;
 
-	seed = random();
+	seed = rand() & 0xFF;
 	return _get_file_key(seed);
 }
 
@@ -261,7 +257,7 @@
 	if (bytes == len + 12) {
 		_qq_xfer_write(raw_data, bytes, qd->xfer);
 	} else
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "send_file: want %d but got %d\n", len + 12, bytes);
+		purple_debug_info("QQ", "send_file: want %d but got %d\n", len + 12, bytes);
 	return bytes;
 }
 
@@ -323,13 +319,13 @@
 			bytes_expected = 61;
 			break;
 		default:
-			purple_debug(PURPLE_DEBUG_INFO, "QQ", "qq_send_file_ctl_packet: Unknown packet type[%d]\n",
+			purple_debug_info("QQ", "qq_send_file_ctl_packet: Unknown packet type[%d]\n",
 					packet_type);
 			bytes_expected = 0;
 	}
 
 	if (bytes != bytes_expected) {
-		purple_debug(PURPLE_DEBUG_ERROR, "QQ", "qq_send_file_ctl_packet: Expected to get %d bytes, but get %d",
+		purple_debug_error("QQ", "qq_send_file_ctl_packet: Expected to get %d bytes, but get %d",
 				bytes_expected, bytes);
 		return;
 	}
@@ -346,24 +342,24 @@
 	guint8 *buf;
 	int buflen;
 	hex_dump = hex_dump_to_str(encrypted_data, encrypted_len);
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", "encrypted packet: \n%s", hex_dump);
+	purple_debug_info("QQ", "encrypted packet: \n%s", hex_dump);
 	g_free(hex_dump);
 	buf = g_newa(guint8, MAX_PACKET_SIZE);
 	buflen = encrypted_len;
 	if (qq_crypt(DECRYPT, encrypted_data, encrypted_len, info->file_session_key, buf, &buflen)) {
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "decrypt success\n");
+		purple_debug_info("QQ", "decrypt success\n");
 	   if (buflen == bytes && memcmp(raw_data, buf, buflen) == 0)
-			purple_debug(PURPLE_DEBUG_INFO, "QQ", "checksum ok\n");
+			purple_debug_info("QQ", "checksum ok\n");
 
 		hex_dump = hex_dump_to_str(buf, buflen);
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "decrypted packet: \n%s", hex_dump);
+		purple_debug_info("QQ", "decrypted packet: \n%s", hex_dump);
 		g_free(hex_dump);
 	 } else {
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "decrypt fail\n");
+		purple_debug_info("QQ", "decrypt fail\n");
 	}
 #endif
 
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", "<== send %s packet\n", qq_get_file_cmd_desc(packet_type));
+	purple_debug_info("QQ", "<== send %s packet\n", qq_get_file_cmd_desc(packet_type));
 	_qq_send_file(gc, encrypted_data, encrypted_len, QQ_FILE_CONTROL_PACKET_TAG, info->to_uid);
 }
 
@@ -410,7 +406,7 @@
 					info->fragment_num = (filesize - 1) / QQ_FILE_FRAGMENT_MAXLEN + 1;
 					info->fragment_len = QQ_FILE_FRAGMENT_MAXLEN;
 
-					purple_debug(PURPLE_DEBUG_INFO, "QQ", 
+					purple_debug_info("QQ", 
 							"start transfering data, %d fragments with %d length each\n",
 							info->fragment_num, info->fragment_len);
 					/* Unknown */
@@ -435,7 +431,7 @@
 							filename_len);
 					break;
 				case QQ_FILE_DATA_INFO:
-					purple_debug(PURPLE_DEBUG_INFO, "QQ", 
+					purple_debug_info("QQ", 
 							"sending %dth fragment with length %d, offset %d\n",
 							fragment_index, len, (fragment_index-1)*fragment_size);
 					/* bytes += qq_put16(raw_data + bytes, ++(qd->send_seq)); */
@@ -448,7 +444,7 @@
 					bytes += qq_putdata(raw_data + bytes, data, len);
 					break;
 				case QQ_FILE_EOF:
-					purple_debug(PURPLE_DEBUG_INFO, "QQ", "end of sending data\n");
+					purple_debug_info("QQ", "end of sending data\n");
 					/* bytes += qq_put16(raw_data + bytes, info->fragment_num + 1); */
 					bytes += qq_put16(raw_data + bytes, info->fragment_num);
 					bytes += qq_put8(raw_data + bytes, sub_type);
@@ -474,7 +470,7 @@
 					break;
 			}
 	}
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", "<== send %s packet\n", qq_get_file_cmd_desc(packet_type));
+	purple_debug_info("QQ", "<== send %s packet\n", qq_get_file_cmd_desc(packet_type));
 	_qq_send_file(gc, raw_data, bytes, QQ_FILE_DATA_PACKET_TAG, info->to_uid);
 }
 
@@ -516,7 +512,7 @@
 	decrypted_data = g_newa(guint8, data_len);
 	decrypted_len = qq_decrypt(decrypted_data, data, data_len, qd->session_md5);
 	if ( decrypted_len <= 0 ) {
-		purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Error decrypt rcv file ctrl packet\n");
+		purple_debug_error("QQ", "Error decrypt rcv file ctrl packet\n");
 		return;
 	}
 
@@ -526,7 +522,7 @@
 	decryped_bytes += qq_get16(&seq, decrypted_data + decryped_bytes);
 	decryped_bytes += 4+1+1+19+1;	/* skip something */
 
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", "==> [%d] receive %s packet\n", seq, qq_get_file_cmd_desc(packet_type));
+	purple_debug_info("QQ", "==> [%d] receive %s packet\n", seq, qq_get_file_cmd_desc(packet_type));
 	qq_hex_dump(PURPLE_DEBUG_INFO, "QQ",
 		decrypted_data, decrypted_len,
 		"decrypted control packet received:");
@@ -566,7 +562,7 @@
 			qq_send_file_ctl_packet(gc, QQ_FILE_CMD_SENDER_SAY_HELLO, fh.sender_uid, 0);
 			break;
 		default:
-			purple_debug(PURPLE_DEBUG_INFO, "QQ", "unprocess file command %d\n", packet_type);
+			purple_debug_info("QQ", "unprocess file command %d\n", packet_type);
 	}
 }
 
@@ -577,7 +573,7 @@
 	ft_info *info = (ft_info *) xfer->data;
 	guint32 mask;
 
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", 
+	purple_debug_info("QQ", 
 			"receiving %dth fragment with length %d, slide window status %o, max_fragment_index %d\n", 
 			index, len, info->window, info->max_fragment_index);
 	if (info->window == 0 && info->max_fragment_index == 0) {
@@ -585,11 +581,11 @@
 			purple_xfer_cancel_local(xfer);
 			return;
 		}
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "object file opened for writing\n");
+		purple_debug_info("QQ", "object file opened for writing\n");
 	}
 	mask = 0x1 << (index % sizeof(info->window));
 	if (index < info->max_fragment_index || (info->window & mask)) {
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "duplicate %dth fragment, drop it!\n", index+1);
+		purple_debug_info("QQ", "duplicate %dth fragment, drop it!\n", index+1);
 		return;
 	}
 
@@ -609,7 +605,7 @@
 		if (mask & 0x8000) mask = 0x0001;
 		else mask = mask << 1;
 	}
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", "procceed %dth fragment, slide window status %o, max_fragment_index %d\n", 
+	purple_debug_info("QQ", "procceed %dth fragment, slide window status %o, max_fragment_index %d\n", 
 			index, info->window, info->max_fragment_index);
 }
 
@@ -654,12 +650,12 @@
 	PurpleXfer *xfer = qd->xfer;
 	ft_info *info = (ft_info *) xfer->data;
 
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", 
+	purple_debug_info("QQ", 
 			"receiving %dth fragment ack, slide window status %o, max_fragment_index %d\n", 
 			fragment_index, info->window, info->max_fragment_index);
 	if (fragment_index < info->max_fragment_index || 
 			fragment_index >= info->max_fragment_index + sizeof(info->window)) {
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "duplicate %dth fragment, drop it!\n", fragment_index+1);
+		purple_debug_info("QQ", "duplicate %dth fragment, drop it!\n", fragment_index+1);
 		return;
 	}
 	mask = 0x1 << (fragment_index % sizeof(info->window));
@@ -696,7 +692,7 @@
 			else mask = mask << 1;
 		}
 	}
-	purple_debug(PURPLE_DEBUG_INFO, "QQ", 
+	purple_debug_info("QQ", 
 			"procceed %dth fragment ack, slide window status %o, max_fragment_index %d\n", 
 			fragment_index, info->window, info->max_fragment_index);
 }
@@ -737,7 +733,7 @@
 
 					info->max_fragment_index = 0;
 					info->window = 0;
-					purple_debug(PURPLE_DEBUG_INFO, "QQ", 
+					purple_debug_info("QQ", 
 							"start receiving data, %d fragments with %d length each\n",
 							info->fragment_num, info->fragment_len);
 					_qq_send_file_data_packet(gc, QQ_FILE_CMD_FILE_OP_ACK, sub_type,
@@ -747,7 +743,7 @@
 					bytes += qq_get32(&fragment_index, data + bytes);
 					bytes += qq_get32(&fragment_offset, data + bytes);
 					bytes += qq_get16(&fragment_len, data + bytes);
-					purple_debug(PURPLE_DEBUG_INFO, "QQ", 
+					purple_debug_info("QQ", 
 							"received %dth fragment with length %d, offset %d\n",
 							fragment_index, fragment_len, fragment_offset);
 
@@ -756,7 +752,7 @@
 					_qq_recv_file_progess(gc, data + bytes, fragment_len, fragment_index, fragment_offset);
 					break;
 				case QQ_FILE_EOF:
-					purple_debug(PURPLE_DEBUG_INFO, "QQ", "end of receiving\n");
+					purple_debug_info("QQ", "end of receiving\n");
 					_qq_send_file_data_packet(gc, QQ_FILE_CMD_FILE_OP_ACK, sub_type,
 							0, 0, NULL, 0);
 					break;
@@ -795,11 +791,11 @@
 			purple_xfer_end(qd->xfer);
 			break;
 		case QQ_FILE_BASIC_INFO:
-			purple_debug(PURPLE_DEBUG_INFO, "QQ", "here\n");
+			purple_debug_info("QQ", "here\n");
 			_qq_send_file_data_packet(gc, QQ_FILE_DATA_INFO, 0, 0, 0, NULL, 0);
 			break;
 		default:
-			purple_debug(PURPLE_DEBUG_INFO, "QQ", "_qq_process_recv_file_data: unknown packet type [%d]\n",
+			purple_debug_info("QQ", "_qq_process_recv_file_data: unknown packet type [%d]\n",
 					packet_type);
 			break;
 	}
@@ -824,6 +820,6 @@
 			_qq_process_recv_file_data(gc, data + bytes, len - bytes);
 			break;
 		default:
-			purple_debug(PURPLE_DEBUG_INFO, "QQ", "unknown packet tag");
+			purple_debug_info("QQ", "unknown packet tag");
 	}
 }