libpurple/protocols/qq/im.c

Wed, 22 Oct 2008 14:43:46 +0000

author
SHiNE CsyFeK <csyfek@gmail.com>
date
Wed, 22 Oct 2008 14:43:46 +0000
branch
openq
changeset 24346
98c009d1f4e0
parent 24344
712295f3bf6d
child 24349
a77c0e009d10
permissions
-rw-r--r--

2009.10.02 - ccpaging <ccpaging(at)gmail.com>
* Added 'Captcha Display' function
* Most functions from patch written by Emil Alexiev merged into trunk,
except 'buddy operations'
* 'online buddy status' and 'qun buddies' still have problems

13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
1 /**
15087
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14718
diff changeset
2 * @file im.c
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
15087
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14718
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14718
diff changeset
8 * source distribution.
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
9 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
13 * (at your option) any later version.
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
14 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
18 * GNU General Public License for more details.
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
19 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19097
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
23 */
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
24
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16271
diff changeset
25 #include "internal.h"
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16271
diff changeset
26
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
27 #include "conversation.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
28 #include "debug.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
29 #include "internal.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
30 #include "notify.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
31 #include "server.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
32 #include "util.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
33
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
34 #include "buddy_info.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
35 #include "buddy_list.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
36 #include "buddy_opt.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
37 #include "char_conv.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
38 #include "group_im.h"
24340
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
39 #include "qq_define.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
40 #include "im.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
41 #include "packet_parse.h"
23192
2f00b04db5cb patch-04-tcp-pending
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23191
diff changeset
42 #include "qq_network.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
43 #include "send_file.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
44 #include "utils.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
45
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
46 #define QQ_SEND_IM_REPLY_OK 0x00
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
47 #define DEFAULT_FONT_NAME_LEN 4
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
48
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
49 enum
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
50 {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
51 QQ_NORMAL_IM_TEXT = 0x000b,
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
52 QQ_NORMAL_IM_FILE_REQUEST_TCP = 0x0001,
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
53 QQ_NORMAL_IM_FILE_APPROVE_TCP = 0x0003,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
54 QQ_NORMAL_IM_FILE_REJECT_TCP = 0x0005,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
55 QQ_NORMAL_IM_FILE_REQUEST_UDP = 0x0035,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
56 QQ_NORMAL_IM_FILE_APPROVE_UDP = 0x0037,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
57 QQ_NORMAL_IM_FILE_REJECT_UDP = 0x0039,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
58 QQ_NORMAL_IM_FILE_NOTIFY = 0x003b,
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
59 QQ_NORMAL_IM_FILE_PASV = 0x003f, /* are you behind a firewall? */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
60 QQ_NORMAL_IM_FILE_CANCEL = 0x0049,
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
61 QQ_NORMAL_IM_FILE_EX_REQUEST_UDP = 0x81,
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
62 QQ_NORMAL_IM_FILE_EX_REQUEST_ACCEPT = 0x83,
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
63 QQ_NORMAL_IM_FILE_EX_REQUEST_CANCEL = 0x85,
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
64 QQ_NORMAL_IM_FILE_EX_NOTIFY_IP = 0x87
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
65 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
66
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
67 enum {
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
68 QQ_RECV_SYS_IM_KICK_OUT = 0x01
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
69 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
70
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
71 typedef struct _qq_recv_im_header qq_recv_im_header;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
72 typedef struct _qq_recv_normal_im_text qq_recv_normal_im_text;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
73 typedef struct _qq_recv_normal_im_common qq_recv_normal_im_common;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
74 typedef struct _qq_recv_normal_im_unprocessed qq_recv_normal_im_unprocessed;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
75
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
76 struct _qq_recv_normal_im_common {
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
77 /* this is the common part of normal_text */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
78 guint16 sender_ver;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
79 guint32 sender_uid;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
80 guint32 receiver_uid;
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
81 guint8 session_md5[QQ_KEY_LENGTH];
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
82 guint16 normal_im_type;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
83 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
84
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
85 struct _qq_recv_normal_im_text {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
86 qq_recv_normal_im_common *common;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
87 /* now comes the part for text only */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
88 guint16 msg_seq;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
89 guint32 send_time;
14327
35a1e5dda285 [gaim-migrate @ 16947]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14304
diff changeset
90 guint16 sender_icon;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
91 guint8 unknown2[3];
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
92 guint8 is_there_font_attr;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
93 guint8 unknown3[4];
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
94 guint8 msg_type;
14107
d034d8218d02 [gaim-migrate @ 16657]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14083
diff changeset
95 gchar *msg; /* no fixed length, ends with 0x00 */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
96 guint8 *font_attr;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
97 gint font_attr_len;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
98 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
99
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
100 struct _qq_recv_normal_im_unprocessed {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
101 qq_recv_normal_im_common *common;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
102 /* now comes the part of unprocessed */
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
103 guint8 *unknown; /* no fixed length */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
104 gint length;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
105 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
106
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
107 struct _qq_recv_im_header {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
108 guint32 sender_uid;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
109 guint32 receiver_uid;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
110 guint32 server_im_seq;
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
111 struct in_addr sender_ip;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
112 guint16 sender_port;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
113 guint16 im_type;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
114 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
115
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
116 #define QQ_SEND_IM_AFTER_MSG_HEADER_LEN 8
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
117 #define DEFAULT_FONT_NAME "\0xcb\0xce\0xcc\0xe5"
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
118
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
119 guint8 *qq_get_send_im_tail(const gchar *font_color,
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
120 const gchar *font_size,
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
121 const gchar *font_name,
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
122 gboolean is_bold, gboolean is_italic, gboolean is_underline, gint tail_len)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
123 {
16271
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
124 gchar *s1;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
125 unsigned char *rgb;
14107
d034d8218d02 [gaim-migrate @ 16657]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14083
diff changeset
126 gint font_name_len;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
127 guint8 *send_im_tail;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
128 const guint8 simsun[] = { 0xcb, 0xce, 0xcc, 0xe5 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
129
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
130 if (font_name) {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
131 font_name_len = strlen(font_name);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
132 } else {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
133 font_name_len = DEFAULT_FONT_NAME_LEN;
14107
d034d8218d02 [gaim-migrate @ 16657]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14083
diff changeset
134 font_name = (const gchar *) simsun;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
135 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
136
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
137 send_im_tail = g_new0(guint8, tail_len);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
138
14107
d034d8218d02 [gaim-migrate @ 16657]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14083
diff changeset
139 g_strlcpy((gchar *) (send_im_tail + QQ_SEND_IM_AFTER_MSG_HEADER_LEN),
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
140 font_name, tail_len - QQ_SEND_IM_AFTER_MSG_HEADER_LEN);
14107
d034d8218d02 [gaim-migrate @ 16657]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14083
diff changeset
141 send_im_tail[tail_len - 1] = (guint8) tail_len;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
142
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
143 send_im_tail[0] = 0x00;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
144 if (font_size) {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
145 send_im_tail[1] = (guint8) (atoi(font_size) * 3 + 1);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
146 } else {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
147 send_im_tail[1] = 10;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
148 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
149 if (is_bold)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
150 send_im_tail[1] |= 0x20;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
151 if (is_italic)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
152 send_im_tail[1] |= 0x40;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
153 if (is_underline)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
154 send_im_tail[1] |= 0x80;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
155
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
156 if (font_color) {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
157 s1 = g_strndup(font_color + 1, 6);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
158 /* Henry: maybe this is a bug of purple, the string should have
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
159 * the length of odd number @_@
16271
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
160 * George Ang: This BUG maybe fixed by Purple. adding new byte
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
161 * would cause a crash.
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
162 */
16271
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
163 /* s2 = g_strdup_printf("%sH", s1); */
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
164 rgb = purple_base16_decode(s1, NULL);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
165 g_free(s1);
16271
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
166 /* g_free(s2); */
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
167 if (rgb)
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
168 {
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
169 memcpy(send_im_tail + 2, rgb, 3);
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
170 g_free(rgb);
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
171 } else {
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
172 send_im_tail[2] = send_im_tail[3] = send_im_tail[4] = 0;
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
173 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
174 } else {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
175 send_im_tail[2] = send_im_tail[3] = send_im_tail[4] = 0;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
176 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
177
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
178 send_im_tail[5] = 0x00;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
179 send_im_tail[6] = 0x86;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
180 send_im_tail[7] = 0x22; /* encoding, 0x8622=GB, 0x0000=EN, define BIG5 support here */
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
181 /* qq_show_packet("QQ_MESG", send_im_tail, tail_len); */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
182 return (guint8 *) send_im_tail;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
183 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
184
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
185 static const gchar *qq_get_recv_im_type_str(gint type)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
186 {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
187 switch (type) {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
188 case QQ_RECV_IM_TO_BUDDY:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
189 return "QQ_RECV_IM_TO_BUDDY";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
190 case QQ_RECV_IM_TO_UNKNOWN:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
191 return "QQ_RECV_IM_TO_UNKNOWN";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
192 case QQ_RECV_IM_UNKNOWN_QUN_IM:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
193 return "QQ_RECV_IM_UNKNOWN_QUN_IM";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
194 case QQ_RECV_IM_ADD_TO_QUN:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
195 return "QQ_RECV_IM_ADD_TO_QUN";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
196 case QQ_RECV_IM_DEL_FROM_QUN:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
197 return "QQ_RECV_IM_DEL_FROM_QUN";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
198 case QQ_RECV_IM_APPLY_ADD_TO_QUN:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
199 return "QQ_RECV_IM_APPLY_ADD_TO_QUN";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
200 case QQ_RECV_IM_CREATE_QUN:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
201 return "QQ_RECV_IM_CREATE_QUN";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
202 case QQ_RECV_IM_SYS_NOTIFICATION:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
203 return "QQ_RECV_IM_SYS_NOTIFICATION";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
204 case QQ_RECV_IM_APPROVE_APPLY_ADD_TO_QUN:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
205 return "QQ_RECV_IM_APPROVE_APPLY_ADD_TO_QUN";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
206 case QQ_RECV_IM_REJCT_APPLY_ADD_TO_QUN:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
207 return "QQ_RECV_IM_REJCT_APPLY_ADD_TO_QUN";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
208 case QQ_RECV_IM_TEMP_QUN_IM:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
209 return "QQ_RECV_IM_TEMP_QUN_IM";
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
210 case QQ_RECV_IM_QUN_IM:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
211 return "QQ_RECV_IM_QUN_IM";
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
212 case QQ_RECV_IM_NEWS:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
213 return "QQ_RECV_IM_NEWS";
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
214 case QQ_RECV_IM_FROM_BUDDY_2006:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
215 return "QQ_RECV_IM_FROM_BUDDY_2006";
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
216 case QQ_RECV_IM_FROM_UNKNOWN_2006:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
217 return "QQ_RECV_IM_FROM_UNKNOWN_2006";
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
218 default:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
219 return "QQ_RECV_IM_UNKNOWN";
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
220 }
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
221 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
222
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
223 /* read the common parts of the normal_im,
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
224 * returns the bytes read if succeed, or -1 if there is any error */
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
225 static gint normal_im_common_read(guint8 *data, gint len, qq_recv_normal_im_common *common)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
226 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
227 gint bytes;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
228 g_return_val_if_fail(data != NULL && len != 0 && common != NULL, -1);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
229
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
230 bytes = 0;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
231 /* now push data into common header */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
232 bytes += qq_get16(&(common->sender_ver), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
233 bytes += qq_get32(&(common->sender_uid), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
234 bytes += qq_get32(&(common->receiver_uid), data + bytes);
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
235 bytes += qq_getdata(common->session_md5, QQ_KEY_LENGTH, data + bytes);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
236 bytes += qq_get16(&(common->normal_im_type), data + bytes);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
237
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
238 if (bytes != 28) { /* read common place fail */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
239 purple_debug_error("QQ", "Expect 28 bytes, read %d bytes\n", bytes);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
240 return -1;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
241 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
242
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
243 return bytes;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
244 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
245
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
246 static void process_recv_news(guint8 *data, gint data_len, PurpleConnection *gc)
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
247 {
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
248 qq_data *qd = (qq_data *) gc->proto_data;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
249 gint bytes;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
250 guint8 *temp;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
251 guint8 temp_len;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
252 gchar *title, *brief, *url;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
253 gchar *title_utf8;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
254 gchar *content, *content_utf8;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
255
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
256 g_return_if_fail(data != NULL && data_len != 0);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
257
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
258 #if 0
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
259 qq_show_packet("Rcv news", data, data_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
260 #endif
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
261
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
262 temp = g_newa(guint8, data_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
263 bytes = 4; /* ignore unknown 4 bytes */
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
264
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
265 bytes += qq_get8(&temp_len, data + bytes);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
266 g_return_if_fail(bytes + temp_len <= data_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
267 bytes += qq_getdata(temp, temp_len, data+bytes);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
268 title = g_strndup((gchar *)temp, temp_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
269
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
270 bytes += qq_get8(&temp_len, data + bytes);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
271 g_return_if_fail(bytes + temp_len <= data_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
272 bytes += qq_getdata(temp, temp_len, data+bytes);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
273 brief = g_strndup((gchar *)temp, temp_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
274
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
275 bytes += qq_get8(&temp_len, data + bytes);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
276 g_return_if_fail(bytes + temp_len <= data_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
277 bytes += qq_getdata(temp, temp_len, data+bytes);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
278 url = g_strndup((gchar *)temp, temp_len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
279
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
280 title_utf8 = qq_to_utf8(title, QQ_CHARSET_DEFAULT);
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
281 content = g_strdup_printf(_("Server News:\n%s\n%s\n%s"), title, brief, url);
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
282 content_utf8 = qq_to_utf8(content, QQ_CHARSET_DEFAULT);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
283
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
284 if (qd->is_show_news) {
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
285 qq_got_attention(gc, content_utf8);
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
286 } else {
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
287 purple_debug_info("QQ", "QQ Server news:\n%s\n%s", title_utf8, content_utf8);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
288 }
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
289 g_free(title);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
290 g_free(title_utf8);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
291 g_free(brief);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
292 g_free(url);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
293 g_free(content);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
294 g_free(content_utf8);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
295 }
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
296
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
297 void qq_got_attention(PurpleConnection *gc, const gchar *msg)
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
298 {
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
299 qq_data *qd;
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
300 gchar *from;
24344
712295f3bf6d 2008.09.29 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
301 PurpleBuddy *buddy;
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
302 time_t now = time(NULL);
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
303
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
304 qd = (qq_data *) gc->proto_data;
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
305
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
306 g_return_if_fail(qd->uid > 0);
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
307
24344
712295f3bf6d 2008.09.29 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
308 from = uid_to_purple_name(qd->uid);
712295f3bf6d 2008.09.29 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
309 buddy = purple_find_buddy(gc->account, from);
712295f3bf6d 2008.09.29 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
310 if (buddy == NULL) {
712295f3bf6d 2008.09.29 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
311 qq_create_buddy(gc, qd->uid, TRUE, TRUE);
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
312 }
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
313
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
314 serv_got_im(gc, from, msg, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NOTIFY, now);
24344
712295f3bf6d 2008.09.29 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
315 g_free(from);
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
316 }
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
317
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
318 /* process received normal text IM */
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
319 static void process_recv_normal_im_text(guint8 *data, gint len, qq_recv_normal_im_common *common, PurpleConnection *gc)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
320 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
321 guint16 purple_msg_type;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
322 gchar *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
323 gchar *msg_with_purple_smiley;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
324 gchar *msg_utf8_encoded;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
325 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
326 qq_recv_normal_im_text *im_text;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
327 gint bytes = 0;
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
328 PurpleBuddy *b;
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
329 qq_buddy *qq_b;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
330
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14407
diff changeset
331 g_return_if_fail(common != NULL);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
332 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
333
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
334 /* now it is QQ_NORMAL_IM_TEXT */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
335 /*
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
336 if (*cursor >= (data + len - 1)) {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
337 purple_debug_warning("QQ", "Received normal IM text is empty\n");
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
338 return;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
339 } else
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
340 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
341 im_text = g_newa(qq_recv_normal_im_text, 1);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
342
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
343 im_text->common = common;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
344
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
345 /* push data into im_text */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
346 bytes += qq_get16(&(im_text->msg_seq), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
347 bytes += qq_get32(&(im_text->send_time), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
348 bytes += qq_get16(&(im_text->sender_icon), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
349 bytes += qq_getdata((guint8 *) & (im_text->unknown2), 3, data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
350 bytes += qq_get8(&(im_text->is_there_font_attr), data + bytes);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
351 /**
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
352 * from lumaqq for unknown3
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
353 * totalFragments = buf.get() & 255;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
354 * fragmentSequence = buf.get() & 255;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
355 * messageId = buf.getChar();
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
356 */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
357 bytes += qq_getdata((guint8 *) & (im_text->unknown3), 4, data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
358 bytes += qq_get8(&(im_text->msg_type), data + bytes);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
359
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
360 /* we need to check if this is auto-reply
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
361 * QQ2003iii build 0304, returns the msg without font_attr
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
362 * even the is_there_font_attr shows 0x01, and msg does not ends with 0x00 */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
363 if (im_text->msg_type == QQ_IM_AUTO_REPLY) {
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
364 im_text->is_there_font_attr = 0x00; /* indeed there is no this flag */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
365 im_text->msg = g_strndup((gchar *)(data + bytes), len - bytes);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
366 } else { /* it is normal mesasge */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
367 if (im_text->is_there_font_attr) {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
368 im_text->msg = g_strdup((gchar *)(data + bytes));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
369 bytes += strlen(im_text->msg) + 1; /* length decided by strlen! will it cause a crash? */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
370 im_text->font_attr_len = len - bytes;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
371 im_text->font_attr = g_memdup(data + bytes, im_text->font_attr_len);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
372 } else /* not im_text->is_there_font_attr */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
373 im_text->msg = g_strndup((gchar *)(data + bytes), len - bytes);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
374 } /* if im_text->msg_type */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
375
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
376 name = uid_to_purple_name(common->sender_uid);
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
377 b = purple_find_buddy(gc->account, name);
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
378 if (b == NULL) {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
379 qq_create_buddy(gc, common->sender_uid, FALSE, TRUE);
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
380 b = purple_find_buddy(gc->account, name);
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
381 }
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
382 qq_b = (b == NULL) ? NULL : (qq_buddy *) b->proto_data;
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
383 if (qq_b != NULL) {
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
384 qq_b->client_tag = common->sender_ver;
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
385 }
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
386
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
387 purple_msg_type = (im_text->msg_type == QQ_IM_AUTO_REPLY) ? PURPLE_MESSAGE_AUTO_RESP : 0;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
388
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
389 msg_with_purple_smiley = qq_smiley_to_purple(im_text->msg);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
390 msg_utf8_encoded = im_text->is_there_font_attr ?
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
391 qq_encode_to_purple(im_text->font_attr,
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
392 im_text->font_attr_len,
24346
98c009d1f4e0 2009.10.02 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24344
diff changeset
393 msg_with_purple_smiley, qd->client_version)
98c009d1f4e0 2009.10.02 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24344
diff changeset
394 : qq_to_utf8(msg_with_purple_smiley, QQ_CHARSET_DEFAULT);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
395
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
396 /* send encoded to purple, note that we use im_text->send_time,
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
397 * not the time we receive the message
14407
026c36775c84 [gaim-migrate @ 17047]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14327
diff changeset
398 * as it may have been delayed when I am not online. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
399 serv_got_im(gc, name, msg_utf8_encoded, purple_msg_type, (time_t) im_text->send_time);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
400
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
401 g_free(msg_utf8_encoded);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
402 g_free(msg_with_purple_smiley);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
403 g_free(name);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
404 g_free(im_text->msg);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
405 if (im_text->is_there_font_attr)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
406 g_free(im_text->font_attr);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
407 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
408
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
409 /* it is a normal IM, maybe text or video request */
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
410 static void process_recv_normal_im(guint8 *data, gint len, PurpleConnection *gc)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
411 {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
412 gint bytes = 0;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
413 qq_recv_normal_im_common *common;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
414 qq_recv_normal_im_unprocessed *im_unprocessed;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
415
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
416 g_return_if_fail (data != NULL && len != 0);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
417
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
418 common = g_newa (qq_recv_normal_im_common, 1);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
419
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
420 bytes = normal_im_common_read(data, len, common);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
421 if (bytes < 0) {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
422 purple_debug_error("QQ", "Fail read the common part of normal IM\n");
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
423 return;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
424 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
425
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
426 switch (common->normal_im_type) {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
427 case QQ_NORMAL_IM_TEXT:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
428 purple_debug_info("QQ",
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
429 "Normal IM, text type:\n [%d] => [%d], src: %s (%04X)\n",
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
430 common->sender_uid, common->receiver_uid,
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
431 qq_get_ver_desc (common->sender_ver), common->sender_ver);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
432 if (bytes >= len - 1) {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
433 purple_debug_warning("QQ", "Received normal IM text is empty\n");
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
434 return;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
435 }
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
436 process_recv_normal_im_text(data + bytes, len - bytes, common, gc);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
437 break;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
438 case QQ_NORMAL_IM_FILE_REJECT_UDP:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
439 qq_process_recv_file_reject(data + bytes, len - bytes, common->sender_uid, gc);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
440 break;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
441 case QQ_NORMAL_IM_FILE_APPROVE_UDP:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
442 qq_process_recv_file_accept(data + bytes, len - bytes, common->sender_uid, gc);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
443 break;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
444 case QQ_NORMAL_IM_FILE_REQUEST_UDP:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
445 qq_process_recv_file_request(data + bytes, len - bytes, common->sender_uid, gc);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
446 break;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
447 case QQ_NORMAL_IM_FILE_CANCEL:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
448 qq_process_recv_file_cancel(data + bytes, len - bytes, common->sender_uid, gc);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
449 break;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
450 case QQ_NORMAL_IM_FILE_NOTIFY:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
451 qq_process_recv_file_notify(data + bytes, len - bytes, common->sender_uid, gc);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
452 break;
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
453 case QQ_NORMAL_IM_FILE_REQUEST_TCP:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
454 /* Check ReceivedFileIM::parseContents in eva*/
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
455 /* some client use this function for detect invisable buddy*/
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
456 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_REQUEST_TCP\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
457 qq_show_packet ("Not support", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
458 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
459 case QQ_NORMAL_IM_FILE_APPROVE_TCP:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
460 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_APPROVE_TCP\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
461 qq_show_packet ("Not support", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
462 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
463 case QQ_NORMAL_IM_FILE_REJECT_TCP:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
464 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_REJECT_TCP\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
465 qq_show_packet ("Not support", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
466 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
467 case QQ_NORMAL_IM_FILE_PASV:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
468 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_PASV\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
469 qq_show_packet ("Not support", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
470 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
471 case QQ_NORMAL_IM_FILE_EX_REQUEST_UDP:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
472 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_REQUEST_TCP\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
473 qq_show_packet ("QQ", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
474 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
475 case QQ_NORMAL_IM_FILE_EX_REQUEST_ACCEPT:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
476 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_EX_REQUEST_ACCEPT\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
477 qq_show_packet ("QQ", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
478 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
479 case QQ_NORMAL_IM_FILE_EX_REQUEST_CANCEL:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
480 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_EX_REQUEST_CANCEL\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
481 qq_show_packet ("Not support", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
482 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
483 case QQ_NORMAL_IM_FILE_EX_NOTIFY_IP:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
484 purple_debug_warning("QQ", "Normal IM, not support QQ_NORMAL_IM_FILE_EX_NOTIFY_IP\n");
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
485 qq_show_packet ("Not support", data, len);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
486 break;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
487 default:
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
488 im_unprocessed = g_newa (qq_recv_normal_im_unprocessed, 1);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
489 im_unprocessed->common = common;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
490 im_unprocessed->unknown = data + bytes;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
491 im_unprocessed->length = len - bytes;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
492 /* a simple process here, maybe more later */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
493 purple_debug_warning("QQ",
23194
e8c312705ee8 Sun Jun 29 22:00:12 CST 2008 csyfek@gmail.com
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23193
diff changeset
494 "Normal IM, unprocessed type [0x%04x], len %d\n",
e8c312705ee8 Sun Jun 29 22:00:12 CST 2008 csyfek@gmail.com
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23193
diff changeset
495 common->normal_im_type, im_unprocessed->length);
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
496 qq_show_packet ("QQ", im_unprocessed->unknown, im_unprocessed->length);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
497 return;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
498 }
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
499 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
500
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
501 /* process im from system administrator */
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
502 static void process_recv_sys_im(guint8 *data, gint data_len, PurpleConnection *gc)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
503 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
504 gint len;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
505 guint8 reply;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
506 gchar **segments, *msg_utf8;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
507
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14407
diff changeset
508 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
509
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
510 len = data_len;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
511
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
512 if (NULL == (segments = split_data(data, len, "\x2f", 2)))
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
513 return;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
514
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
515 reply = strtol(segments[0], NULL, 10);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
516 if (reply == QQ_RECV_SYS_IM_KICK_OUT)
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
517 purple_debug_warning("QQ", "We are kicked out by QQ server\n");
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
518 msg_utf8 = qq_to_utf8(segments[1], QQ_CHARSET_DEFAULT);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
519 purple_notify_warning(gc, NULL, _("System Message"), msg_utf8);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
520 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
521
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
522 /* send an IM to to_uid */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
523 void qq_send_packet_im(PurpleConnection *gc, guint32 to_uid, gchar *msg, gint type)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
524 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
525 qq_data *qd;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
526 guint8 *raw_data, *send_im_tail;
24340
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
527 guint16 normal_im_type;
14107
d034d8218d02 [gaim-migrate @ 16657]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14083
diff changeset
528 gint msg_len, raw_len, font_name_len, tail_len, bytes;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
529 time_t now;
14304
1b119ac26ec3 [gaim-migrate @ 16924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14254
diff changeset
530 gchar *msg_filtered;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
531 GData *attribs;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
532 gchar *font_size = NULL, *font_color = NULL, *font_name = NULL, *tmp;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
533 gboolean is_bold = FALSE, is_italic = FALSE, is_underline = FALSE;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
534 const gchar *start, *end, *last;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
535
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
536 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
537 normal_im_type = QQ_NORMAL_IM_TEXT;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
538
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
539 last = msg;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
540 while (purple_markup_find_tag("font", last, &start, &end, &attribs)) {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
541 tmp = g_datalist_get_data(&attribs, "size");
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
542 if (tmp) {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
543 if (font_size)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
544 g_free(font_size);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
545 font_size = g_strdup(tmp);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
546 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
547 tmp = g_datalist_get_data(&attribs, "color");
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
548 if (tmp) {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
549 if (font_color)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
550 g_free(font_color);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
551 font_color = g_strdup(tmp);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
552 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
553 tmp = g_datalist_get_data(&attribs, "face");
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
554 if (tmp) {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
555 if (font_name)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
556 g_free(font_name);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
557 font_name = g_strdup(tmp);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
558 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
559
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
560 g_datalist_clear(&attribs);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
561 last = end + 1;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
562 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
563
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
564 if (purple_markup_find_tag("b", msg, &start, &end, &attribs)) {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
565 is_bold = TRUE;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
566 g_datalist_clear(&attribs);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
567 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
568
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
569 if (purple_markup_find_tag("i", msg, &start, &end, &attribs)) {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
570 is_italic = TRUE;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
571 g_datalist_clear(&attribs);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
572 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
573
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
574 if (purple_markup_find_tag("u", msg, &start, &end, &attribs)) {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
575 is_underline = TRUE;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
576 g_datalist_clear(&attribs);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
577 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
578
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
579 purple_debug_info("QQ_MESG", "send mesg: %s\n", msg);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
580 msg_filtered = purple_markup_strip_html(msg);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
581 msg_len = strlen(msg_filtered);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
582 now = time(NULL);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
583
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
584 font_name_len = (font_name) ? strlen(font_name) : DEFAULT_FONT_NAME_LEN;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
585 tail_len = font_name_len + QQ_SEND_IM_AFTER_MSG_HEADER_LEN + 1;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
586
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
587 raw_len = QQ_SEND_IM_BEFORE_MSG_LEN + msg_len + tail_len;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
588 raw_data = g_newa(guint8, raw_len);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
589 bytes = 0;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
590
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
591 /* 000-003: receiver uid */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
592 bytes += qq_put32(raw_data + bytes, qd->uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
593 /* 004-007: sender uid */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
594 bytes += qq_put32(raw_data + bytes, to_uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
595 /* 008-009: sender client version */
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
596 bytes += qq_put16(raw_data + bytes, qd->client_tag);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
597 /* 010-013: receiver uid */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
598 bytes += qq_put32(raw_data + bytes, qd->uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
599 /* 014-017: sender uid */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
600 bytes += qq_put32(raw_data + bytes, to_uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
601 /* 018-033: md5 of (uid+session_key) */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
602 bytes += qq_putdata(raw_data + bytes, qd->session_md5, 16);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
603 /* 034-035: message type */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
604 bytes += qq_put16(raw_data + bytes, normal_im_type);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
605 /* 036-037: sequence number */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
606 bytes += qq_put16(raw_data + bytes, qd->send_seq);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
607 /* 038-041: send time */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
608 bytes += qq_put32(raw_data + bytes, (guint32) now);
14327
35a1e5dda285 [gaim-migrate @ 16947]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14304
diff changeset
609 /* 042-043: sender icon */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
610 bytes += qq_put16(raw_data + bytes, qd->my_icon);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
611 /* 044-046: always 0x00 */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
612 bytes += qq_put16(raw_data + bytes, 0x0000);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
613 bytes += qq_put8(raw_data + bytes, 0x00);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
614 /* 047-047: we use font attr */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
615 bytes += qq_put8(raw_data + bytes, 0x01);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
616 /* 048-051: always 0x00 */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
617 bytes += qq_put32(raw_data + bytes, 0x00000000);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
618 /* 052-052: text message type (normal/auto-reply) */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
619 bytes += qq_put8(raw_data + bytes, type);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
620 /* 053- : msg ends with 0x00 */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
621 bytes += qq_putdata(raw_data + bytes, (guint8 *) msg_filtered, msg_len);
14107
d034d8218d02 [gaim-migrate @ 16657]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14083
diff changeset
622 send_im_tail = qq_get_send_im_tail(font_color, font_size, font_name, is_bold,
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
623 is_italic, is_underline, tail_len);
23192
2f00b04db5cb patch-04-tcp-pending
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23191
diff changeset
624 qq_show_packet("QQ_send_im_tail debug", send_im_tail, tail_len);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
625 bytes += qq_putdata(raw_data + bytes, send_im_tail, tail_len);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
626
23192
2f00b04db5cb patch-04-tcp-pending
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23191
diff changeset
627 qq_show_packet("QQ_raw_data debug", raw_data, bytes);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
628
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
629 if (bytes == raw_len) /* create packet OK */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
630 qq_send_cmd(gc, QQ_CMD_SEND_IM, raw_data, bytes);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
631 else
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
632 purple_debug_error("QQ",
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
633 "Fail creating send_im packet, expect %d bytes, build %d bytes\n", raw_len, bytes);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
634
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
635 if (font_color)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
636 g_free(font_color);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
637 if (font_size)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
638 g_free(font_size);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
639 g_free(send_im_tail);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
640 g_free(msg_filtered);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
641 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
642
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
643 /* parse the reply to send_im */
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
644 void qq_process_send_im_reply(guint8 *data, gint data_len, PurpleConnection *gc)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
645 {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
646 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
647
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
648 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
649
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
650 qd = gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
651
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
652 if (data[0] != QQ_SEND_IM_REPLY_OK) {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
653 purple_debug_warning("QQ", "Send IM fail\n");
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
654 purple_notify_error(gc, _("Error"), _("Failed to send IM."), NULL);
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
655 } else {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
656 purple_debug_info("QQ", "IM ACK OK\n");
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
657 }
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
658 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
659
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
660 /* I receive a message, mainly it is text msg,
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
661 * but we need to proess other types (group etc) */
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
662 void qq_process_recv_im(guint8 *data, gint data_len, guint16 seq, PurpleConnection *gc)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
663 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
664 qq_data *qd;
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
665 gint bytes;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
666 qq_recv_im_header *im_header;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
667
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
668 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
669
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
670 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
671
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
672 if (data_len < 16) { /* we need to ack with the first 16 bytes */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
673 purple_debug_error("QQ", "MSG is too short\n");
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
674 return;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
675 } else {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
676 /* when we receive a message,
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
677 * we send an ACK which is the first 16 bytes of incoming packet */
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
678 qq_send_server_reply(gc, QQ_CMD_RECV_IM, seq, data, 16);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
679 }
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
680
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
681 /* check len first */
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
682 if (data_len < 20) { /* length of im_header */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
683 purple_debug_error("QQ", "Invald MSG header, len %d < 20\n", data_len);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
684 return;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
685 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
686
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
687 bytes = 0;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
688 im_header = g_newa(qq_recv_im_header, 1);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
689 bytes += qq_get32(&(im_header->sender_uid), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
690 bytes += qq_get32(&(im_header->receiver_uid), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
691 bytes += qq_get32(&(im_header->server_im_seq), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
692 /* if the message is delivered via server, it is server IP/port */
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23194
diff changeset
693 bytes += qq_getIP(&(im_header->sender_ip), data + bytes);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
694 bytes += qq_get16(&(im_header->sender_port), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
695 bytes += qq_get16(&(im_header->im_type), data + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
696 /* im_header prepared */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
697
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
698 if (im_header->receiver_uid != qd->uid) { /* should not happen */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
699 purple_debug_error("QQ", "MSG to [%d], NOT me\n", im_header->receiver_uid);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
700 return;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
701 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
702
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
703 /* check bytes */
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
704 if (bytes >= data_len - 1) {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
705 purple_debug_warning("QQ", "Empty MSG\n");
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
706 return;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
707 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
708
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
709 switch (im_header->im_type) {
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
710 case QQ_RECV_IM_NEWS:
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
711 process_recv_news(data + bytes, data_len - bytes, gc);
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
712 break;
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
713 case QQ_RECV_IM_FROM_BUDDY_2006:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
714 case QQ_RECV_IM_FROM_UNKNOWN_2006:
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
715 case QQ_RECV_IM_TO_UNKNOWN:
24300
aa3947bf4a6a disapproval of revision 'b3ebedfac7cbad2b4bdd322c45aa572c3cd2795b'
Daniel Atallah <datallah@pidgin.im>
parents: 24019
diff changeset
716 case QQ_RECV_IM_TO_BUDDY:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
717 purple_debug_info("QQ", "MSG from buddy [%d]\n", im_header->sender_uid);
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
718 process_recv_normal_im(data + bytes, data_len - bytes, gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
719 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
720 case QQ_RECV_IM_UNKNOWN_QUN_IM:
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
721 case QQ_RECV_IM_TEMP_QUN_IM:
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
722 case QQ_RECV_IM_QUN_IM:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
723 purple_debug_info("QQ", "MSG from room [%d]\n", im_header->sender_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
724 /* sender_uid is in fact id */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
725 qq_process_room_msg_normal(data + bytes, data_len - bytes, im_header->sender_uid, gc, im_header->im_type);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
726 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
727 case QQ_RECV_IM_ADD_TO_QUN:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
728 purple_debug_info("QQ", "Notice from [%d], Added\n", im_header->sender_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
729 /* sender_uid is group id
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
730 * we need this to create a dummy group and add to blist */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
731 qq_process_room_msg_been_added(data + bytes, data_len - bytes, im_header->sender_uid, gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
732 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
733 case QQ_RECV_IM_DEL_FROM_QUN:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
734 purple_debug_info("QQ", "Notice from room [%d], Removed\n", im_header->sender_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
735 /* sender_uid is group id */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
736 qq_process_room_msg_been_removed(data + bytes, data_len - bytes, im_header->sender_uid, gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
737 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
738 case QQ_RECV_IM_APPLY_ADD_TO_QUN:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
739 purple_debug_info("QQ", "Notice from room [%d], Joined\n", im_header->sender_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
740 /* sender_uid is group id */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
741 qq_process_room_msg_apply_join(data + bytes, data_len - bytes, im_header->sender_uid, gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
742 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
743 case QQ_RECV_IM_APPROVE_APPLY_ADD_TO_QUN:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
744 purple_debug_info("QQ", "Notice from room [%d], Confirm add in\n",
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
745 im_header->sender_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
746 /* sender_uid is group id */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
747 qq_process_room_msg_been_approved(data + bytes, data_len - bytes, im_header->sender_uid, gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
748 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
749 case QQ_RECV_IM_REJCT_APPLY_ADD_TO_QUN:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
750 purple_debug_info("QQ", "Notice from room [%d], Refuse add in\n",
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
751 im_header->sender_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
752 /* sender_uid is group id */
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
753 qq_process_room_msg_been_rejected(data + bytes, data_len - bytes, im_header->sender_uid, gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
754 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
755 case QQ_RECV_IM_SYS_NOTIFICATION:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
756 purple_debug_info("QQ", "Admin notice from [%d]\n", im_header->sender_uid);
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
757 process_recv_sys_im(data + bytes, data_len - bytes, gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
758 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
759 default:
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
760 purple_debug_warning("QQ", "MSG from [%d], unknown type %s [0x%02x]\n",
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
761 im_header->sender_uid, qq_get_recv_im_type_str(im_header->im_type),
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
762 im_header->im_type);
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
763 qq_show_packet("Unknown MSG type", data, data_len);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
764 }
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13933
diff changeset
765 }
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
766

mercurial