libpurple/protocols/qq/buddy_opt.c

Thu, 11 Dec 2008 06:32:05 +0000

author
Florian Quèze <florian@instantbird.org>
date
Thu, 11 Dec 2008 06:32:05 +0000
changeset 25105
fe13c190ca13
parent 25028
ecaeb08ebae8
child 25117
ae5ff04ed0ae
permissions
-rw-r--r--

Remove the commas at the end of enumerator lists. This resolves warnings
when building libpurple within the Mozilla build system that turn into errors
if the compiler is switched to a C++ compiler. Fixes #7717.


committer: John Bailey <rekkanoryo@rekkanoryo.org>

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: 14691
diff changeset
2 * @file buddy_opt.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: 14691
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: 14691
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
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
25 #include "debug.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
26 #include "internal.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
27 #include "notify.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
28 #include "request.h"
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
29 #include "privacy.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
30
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
31 #include "buddy_info.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
32 #include "buddy_list.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
33 #include "buddy_opt.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
34 #include "char_conv.h"
24340
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
35 #include "qq_define.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
36 #include "im.h"
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23193
diff changeset
37 #include "qq_base.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
38 #include "packet_parse.h"
23192
2f00b04db5cb patch-04-tcp-pending
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23190
diff changeset
39 #include "qq_network.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
40 #include "utils.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
41
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
42 #define PURPLE_GROUP_QQ_FORMAT "QQ (%s)"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
43
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
44 #define QQ_REMOVE_SELF_REPLY_OK 0x00
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 enum {
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
47 QQ_MY_AUTH_APPROVE = 0x30, /* ASCII value of "0" */
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
48 QQ_MY_AUTH_REJECT = 0x31, /* ASCII value of "1" */
25105
fe13c190ca13 Remove the commas at the end of enumerator lists. This resolves warnings
Florian Quèze <florian@instantbird.org>
parents: 25028
diff changeset
49 QQ_MY_AUTH_REQUEST = 0x32 /* ASCII value of "2" */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
50 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
51
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
52 typedef struct _qq_buddy_req {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
53 PurpleConnection *gc;
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
54 guint32 uid;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
55 guint8 *auth;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
56 guint8 auth_len;
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
57 } qq_buddy_req;
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
58
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
59 void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
60 guint8 *auth, guint8 auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
61
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
62 static void buddy_req_free(qq_buddy_req *add_req)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
63 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
64 g_return_if_fail(add_req != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
65 if (add_req->auth) g_free(add_req->auth);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
66 g_free(add_req);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
67 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
68
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
69 static void buddy_req_cancel_cb(qq_buddy_req *add_req, const gchar *msg)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
70 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
71 g_return_if_fail(add_req != NULL);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
72 buddy_req_free(add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
73 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
74
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
75 PurpleGroup *qq_group_find_or_new(const gchar *group_name)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
76 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
77 PurpleGroup *g;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
78
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
79 g_return_val_if_fail(group_name != NULL, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
80
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
81 g = purple_find_group(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
82 if (g == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
83 g = purple_group_new(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
84 purple_blist_add_group(g, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
85 purple_debug_warning("QQ", "Add new group: %s\n", group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
86 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
87
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
88 return g;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
89 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
90
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
91 static qq_buddy_data *qq_buddy_data_new(guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
92 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
93 qq_buddy_data *bd = g_new0(qq_buddy_data, 1);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
94 memset(bd, 0, sizeof(qq_buddy_data));
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
95 bd->uid = uid;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
96 bd->status = QQ_BUDDY_OFFLINE;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
97 return bd;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
98 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
99
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
100 qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
101 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
102 gchar *who;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
103 PurpleBuddy *buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
104
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
105 g_return_val_if_fail(gc != NULL, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
106
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
107 who = uid_to_purple_name(uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
108 if (who == NULL) return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
109 buddy = purple_find_buddy(purple_connection_get_account(gc), who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
110 g_free(who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
111
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
112 if (buddy == NULL) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
113 purple_debug_error("QQ", "Can not find purple buddy of %u\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
114 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
115 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
116 if (buddy->proto_data == NULL) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
117 purple_debug_error("QQ", "Can not find buddy data of %u\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
118 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
119 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
120 return (qq_buddy_data *)buddy->proto_data;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
121 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
122
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
123 void qq_buddy_data_free(qq_buddy_data *bd)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
124 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
125 g_return_if_fail(bd != NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
126
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
127 if (bd->nickname) g_free(bd->nickname);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
128 g_free(bd);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
129 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
130
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
131 /* create purple buddy without data and display with no-auth icon */
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
132 PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
133 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
134 PurpleBuddy *buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
135 PurpleGroup *group;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
136 gchar *who;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
137 gchar *group_name;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
138
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
139 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
140
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
141 group_name = g_strdup_printf(PURPLE_GROUP_QQ_FORMAT,
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
142 purple_account_get_username(gc->account));
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
143 group = qq_group_find_or_new(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
144 if (group == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
145 purple_debug_error("QQ", "Failed creating group %s\n", group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
146 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
147 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
148
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
149 purple_debug_info("QQ", "Add new purple buddy: [%u]\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
150 who = uid_to_purple_name(uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
151 buddy = purple_buddy_new(gc->account, who, NULL); /* alias is NULL */
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
152 buddy->proto_data = NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
153
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
154 g_free(who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
155
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
156 purple_blist_add_buddy(buddy, NULL, group, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
157
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
158 g_free(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
159
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
160 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
161 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
162
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
163 static void qq_buddy_free(PurpleBuddy *buddy)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
164 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
165 g_return_if_fail(buddy);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
166 if (buddy->proto_data) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
167 qq_buddy_data_free(buddy->proto_data);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
168 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
169 buddy->proto_data = NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
170 purple_blist_remove_buddy(buddy);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
171 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
172
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
173 PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
174 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
175 PurpleBuddy *buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
176 gchar *who;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
177
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
178 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
179
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
180 who = uid_to_purple_name(uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
181 buddy = purple_find_buddy(gc->account, who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
182 g_free(who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
183 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
184 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
185
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
186 PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
187 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
188 PurpleBuddy *buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
189
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
190 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
191
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
192 buddy = qq_buddy_find(gc, uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
193 if (buddy == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
194 buddy = qq_buddy_new(gc, uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
195 if (buddy == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
196 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
197 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
198 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
199
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
200 if (buddy->proto_data != NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
201 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
202 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
203
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
204 buddy->proto_data = qq_buddy_data_new(uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
205 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
206 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
207
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
208 /* send packet to remove a buddy from my buddy list */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
209 static void request_remove_buddy(PurpleConnection *gc, guint32 uid)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
210 {
14581
5c4b594933f6 [gaim-migrate @ 17239]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14381
diff changeset
211 gchar uid_str[11];
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
212 gint bytes;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
213
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
214 g_return_if_fail(uid > 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
215
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
216 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
217 bytes = strlen(uid_str);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
218 qq_send_cmd_mess(gc, QQ_CMD_REMOVE_BUDDY, (guint8 *) uid_str, bytes, 0, uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
219 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
220
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
221 static void request_remove_buddy_ex(PurpleConnection *gc,
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
222 guint32 uid, guint8 *auth, guint8 auth_len)
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
223 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
224 gint bytes;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
225 guint8 *raw_data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
226 gchar uid_str[16];
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
227
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
228 g_return_if_fail(uid != 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
229 g_return_if_fail(auth != NULL && auth_len > 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
230
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
231 raw_data = g_newa(guint8, auth_len + sizeof(uid_str) );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
232 bytes = 0;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
233 bytes += qq_put8(raw_data + bytes, auth_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
234 bytes += qq_putdata(raw_data + bytes, auth, auth_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
235
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
236 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
237 bytes += qq_putdata(raw_data + bytes, (guint8 *)uid_str, strlen(uid_str));
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
238
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
239 qq_send_cmd_mess(gc, QQ_CMD_REMOVE_BUDDY, raw_data, bytes, 0, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
240 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
241
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
242 void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, guint32 uid)
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
243 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
244 guint8 raw_data[16];
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
245 gint bytes;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
246
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
247 g_return_if_fail(uid > 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
248 bytes = 0;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
249 bytes += qq_put8(raw_data + bytes, cmd);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
250 bytes += qq_put16(raw_data + bytes, sub_cmd);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
251 bytes += qq_put32(raw_data + bytes, uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
252
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
253 qq_send_cmd_mess(gc, QQ_CMD_AUTH_CODE, raw_data, bytes, 0, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
254 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
255
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
256 void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
257 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
258 qq_data *qd;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
259 gint bytes;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
260 guint8 cmd, reply;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
261 guint16 sub_cmd;
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
262 guint8 *code = NULL;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
263 guint16 code_len = 0;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
264
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
265 g_return_if_fail(data != NULL && data_len != 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
266 g_return_if_fail(uid != 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
267
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
268 qd = (qq_data *) gc->proto_data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
269
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
270 qq_show_packet("qq_process_auth_code", data, data_len);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
271 bytes = 0;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
272 bytes += qq_get8(&cmd, data + bytes);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
273 bytes += qq_get16(&sub_cmd, data + bytes);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
274 bytes += qq_get8(&reply, data + bytes);
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
275 g_return_if_fail(bytes + 2 <= data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
276
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
277 bytes += qq_get16(&code_len, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
278 g_return_if_fail(code_len > 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
279 g_return_if_fail(bytes + code_len <= data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
280 code = g_newa(guint8, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
281 bytes += qq_getdata(code, code_len, data + bytes);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
282
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
283 if (cmd == QQ_AUTH_INFO_BUDDY && sub_cmd == QQ_AUTH_INFO_REMOVE_BUDDY) {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
284 request_remove_buddy_ex(gc, uid, code, code_len);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
285 return;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
286 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
287 if (cmd == QQ_AUTH_INFO_BUDDY && sub_cmd == QQ_AUTH_INFO_ADD_BUDDY) {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
288 add_buddy_authorize_input(gc, uid, code, code_len);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
289 return;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
290 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
291 purple_debug_info("QQ", "Got auth info cmd 0x%x, sub 0x%x, reply 0x%x\n",
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
292 cmd, sub_cmd, reply);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
293 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
294
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
295 static void add_buddy_question_cb(qq_buddy_req *add_req, const gchar *text)
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
296 {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
297 g_return_if_fail(add_req != NULL);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
298 if (add_req->gc == NULL || add_req->uid == 0) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
299 buddy_req_free(add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
300 return;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
301 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
302
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
303 qq_request_question(add_req->gc, QQ_QUESTION_ANSWER, add_req->uid, NULL, text);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
304 buddy_req_free(add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
305 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
306
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
307 static void add_buddy_question_input(PurpleConnection *gc, guint32 uid, gchar *question)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
308 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
309 gchar *who, *msg;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
310 qq_buddy_req *add_req;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
311 g_return_if_fail(uid != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
312
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
313 add_req = g_new0(qq_buddy_req, 1);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
314 add_req->gc = gc;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
315 add_req->uid = uid;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
316 add_req->auth = NULL;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
317 add_req->auth_len = 0;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
318
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
319 who = uid_to_purple_name(uid);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
320 msg = g_strdup_printf(_("%u needs Q&A"), uid);
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
321 purple_request_input(gc, _("Add buddy Q&A"), msg,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
322 _("Input answer here"),
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
323 NULL,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
324 TRUE, FALSE, NULL,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
325 _("Send"), G_CALLBACK(add_buddy_question_cb),
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
326 _("Cancel"), G_CALLBACK(buddy_req_cancel_cb),
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
327 purple_connection_get_account(gc), who, NULL,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
328 add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
329
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
330 g_free(msg);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
331 g_free(who);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
332 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
333
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
334 void qq_request_question(PurpleConnection *gc,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
335 guint8 cmd, guint32 uid, const gchar *question_utf8, const gchar *answer_utf8)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
336 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
337 guint8 raw_data[MAX_PACKET_SIZE - 16];
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
338 gint bytes;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
339
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
340 g_return_if_fail(uid > 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
341 bytes = 0;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
342 bytes += qq_put8(raw_data + bytes, cmd);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
343 if (cmd == QQ_QUESTION_GET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
344 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
345 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
346 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
347 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
348 if (cmd == QQ_QUESTION_SET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
349 bytes += qq_put_vstr(raw_data + bytes, question_utf8, QQ_CHARSET_DEFAULT);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
350 bytes += qq_put_vstr(raw_data + bytes, answer_utf8, QQ_CHARSET_DEFAULT);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
351 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
352 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
353 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
354 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
355 /* Unknow 2 bytes, 0x(00 01) */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
356 bytes += qq_put8(raw_data + bytes, 0x00);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
357 bytes += qq_put8(raw_data + bytes, 0x01);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
358 g_return_if_fail(uid != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
359 bytes += qq_put32(raw_data + bytes, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
360 if (cmd == QQ_QUESTION_REQUEST) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
361 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
362 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
363 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
364 bytes += qq_put_vstr(raw_data + bytes, answer_utf8, QQ_CHARSET_DEFAULT);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
365 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
366 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
367 return;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
368 }
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
369
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
370 static void request_add_buddy_by_question(PurpleConnection *gc, guint32 uid,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
371 guint8 *code, guint16 code_len)
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
372 {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
373 guint8 raw_data[MAX_PACKET_SIZE - 16];
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
374 gint bytes = 0;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
375
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
376 g_return_if_fail(uid != 0 && code_len > 0);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
377
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
378 bytes = 0;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
379 bytes += qq_put8(raw_data + bytes, 0x10);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
380 bytes += qq_put32(raw_data + bytes, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
381 bytes += qq_put16(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
382
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
383 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
384 bytes += qq_put8(raw_data + bytes, 0); /* no auth code */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
385
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
386 bytes += qq_put16(raw_data + bytes, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
387 bytes += qq_putdata(raw_data + bytes, code, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
388
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
389 bytes += qq_put8(raw_data + bytes, 1); /* ALLOW ADD ME FLAG */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
390 bytes += qq_put8(raw_data + bytes, 0); /* group number? */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
391 qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH_EX, raw_data, bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
392 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
393
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
394 void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
395 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
396 qq_data *qd;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
397 gint bytes;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
398 guint8 cmd, reply;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
399 gchar *question, *answer;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
400 guint16 code_len;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
401 guint8 *code;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
402
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
403 g_return_if_fail(data != NULL && data_len != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
404
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
405 qd = (qq_data *) gc->proto_data;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
406
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
407 qq_show_packet("qq_process_question", data, data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
408 bytes = 0;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
409 bytes += qq_get8(&cmd, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
410 if (cmd == QQ_QUESTION_GET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
411 bytes += qq_get_vstr(&question, QQ_CHARSET_DEFAULT, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
412 bytes += qq_get_vstr(&answer, QQ_CHARSET_DEFAULT, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
413 purple_debug_info("QQ", "Get buddy adding Q&A:\n%s\n%s\n", question, answer);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
414 g_free(question);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
415 g_free(answer);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
416 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
417 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
418 if (cmd == QQ_QUESTION_SET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
419 bytes += qq_get8(&reply, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
420 if (reply == 0) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
421 purple_debug_info("QQ", "Successed setting Q&A\n");
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
422 } else {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
423 purple_debug_warning("QQ", "Failed setting Q&A, reply %d\n", reply);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
424 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
425 return;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
426 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
427
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
428 g_return_if_fail(uid != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
429 bytes += 2; /* skip 2 bytes, 0x(00 01)*/
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
430 if (cmd == QQ_QUESTION_REQUEST) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
431 bytes += qq_get8(&reply, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
432 if (reply == 0x01) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
433 purple_debug_warning("QQ", "Failed getting question, reply %d\n", reply);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
434 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
435 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
436 bytes += qq_get_vstr(&question, QQ_CHARSET_DEFAULT, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
437 purple_debug_info("QQ", "Get buddy question:\n%s\n", question);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
438 add_buddy_question_input(gc, uid, question);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
439 g_free(question);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
440 return;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
441 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
442
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
443 if (cmd == QQ_QUESTION_ANSWER) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
444 bytes += qq_get8(&reply, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
445 if (reply == 0x01) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
446 purple_notify_error(gc, _("Add Buddy"), _("Invalid answer."), NULL);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
447 return;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
448 }
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
449 bytes += qq_get16(&code_len, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
450 g_return_if_fail(code_len > 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
451 g_return_if_fail(bytes + code_len <= data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
452
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
453 code = g_newa(guint8, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
454 bytes += qq_getdata(code, code_len, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
455 request_add_buddy_by_question(gc, uid, code, code_len);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
456 return;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
457 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
458
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
459 g_return_if_reached();
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
460 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
461
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
462 /* try to remove myself from someone's buddy list */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
463 static void request_buddy_remove_me(PurpleConnection *gc, guint32 uid)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
464 {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
465 guint8 raw_data[16] = {0};
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
466 gint bytes = 0;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
467
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
468 g_return_if_fail(uid > 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
469
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
470 bytes += qq_put32(raw_data + bytes, uid);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
471
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
472 qq_send_cmd_mess(gc, QQ_CMD_REMOVE_ME, raw_data, bytes, 0, uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
473 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
474
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
475 /* try to add a buddy without authentication */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
476 static void request_add_buddy_no_auth(PurpleConnection *gc, guint32 uid)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
477 {
14581
5c4b594933f6 [gaim-migrate @ 17239]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14381
diff changeset
478 gchar uid_str[11];
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
479
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
480 g_return_if_fail(uid > 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
481
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
482 /* we need to send the ascii code of this uid to qq server */
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
483 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
484 qq_send_cmd_mess(gc, QQ_CMD_ADD_BUDDY_NO_AUTH,
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
485 (guint8 *) uid_str, strlen(uid_str), 0, uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
486 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
487
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
488 static void request_add_buddy_no_auth_ex(PurpleConnection *gc, guint32 uid)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
489 {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
490 guint bytes;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
491 guint8 raw_data[16];
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
492
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
493 g_return_if_fail(uid != 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
494
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
495 bytes = 0;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
496 bytes += qq_put32(raw_data + bytes, uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
497 qq_send_cmd_mess(gc, QQ_CMD_ADD_BUDDY_NO_AUTH_EX, raw_data, bytes, 0, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
498 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
499
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
500 /* this buddy needs authentication, text conversion is done at lowest level */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
501 static void request_add_buddy_auth(PurpleConnection *gc, guint32 uid, const gchar response, const gchar *text)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
502 {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
503 guint8 raw_data[MAX_PACKET_SIZE - 16];
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
504 gint bytes;
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
505 gchar *msg, uid_str[11];
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
506 guint8 bar;
13932
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: 14581
diff changeset
508 g_return_if_fail(uid != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
509
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
510 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
511 bar = 0x1f;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
512
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
513 bytes = 0;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
514 bytes += qq_putdata(raw_data + bytes, (guint8 *) uid_str, strlen(uid_str));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
515 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
516 bytes += qq_put8(raw_data + bytes, response);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
517
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
518 if (text != NULL) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
519 msg = utf8_to_qq(text, QQ_CHARSET_DEFAULT);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
520 bytes += qq_put8(raw_data + bytes, bar);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
521 bytes += qq_putdata(raw_data + bytes, (guint8 *) msg, strlen(msg));
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
522 g_free(msg);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
523 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
524
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
525 qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH, raw_data, bytes);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
526 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
527
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
528 static void request_add_buddy_auth_ex(PurpleConnection *gc, guint32 uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
529 const gchar *text, guint8 *auth, guint8 auth_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
530 {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
531 guint8 raw_data[MAX_PACKET_SIZE - 16];
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
532 gint bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
533
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
534 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
535
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
536 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
537 bytes += qq_put8(raw_data + bytes, 0x02);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
538 bytes += qq_put32(raw_data + bytes, uid);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
539 bytes += qq_put16(raw_data + bytes, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
540
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
541 bytes += qq_put8(raw_data + bytes, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
542 if (auth == NULL || auth_len <= 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
543 bytes += qq_put8(raw_data + bytes, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
544 } else {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
545 bytes += qq_put8(raw_data + bytes, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
546 bytes += qq_putdata(raw_data + bytes, auth, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
547 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
548 bytes += qq_put8(raw_data + bytes, 1); /* ALLOW ADD ME FLAG */
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
549 bytes += qq_put8(raw_data + bytes, 0); /* group number? */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
550 bytes += qq_put_vstr(raw_data + bytes, text, QQ_CHARSET_DEFAULT);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
551 qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH_EX, raw_data, bytes);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
552 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
553
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
554 void qq_process_add_buddy_auth_ex(PurpleConnection *gc, guint8 *data, gint data_len, guint32 ship32)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
555 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
556 g_return_if_fail(data != NULL && data_len != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
557
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
558 qq_show_packet("qq_process_question", data, data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
559 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
560
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
561 static void add_buddy_auth_cb(qq_buddy_req *add_req, const gchar *text)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
562 {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
563 qq_data *qd;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
564 g_return_if_fail(add_req != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
565 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
566 buddy_req_free(add_req);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
567 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
568 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
569
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
570 qd = (qq_data *)add_req->gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
571 if (qd->client_version > 2005) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
572 request_add_buddy_auth_ex(add_req->gc, add_req->uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
573 text, add_req->auth, add_req->auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
574 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
575 request_add_buddy_auth(add_req->gc, add_req->uid, QQ_MY_AUTH_REQUEST, text);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
576 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
577 buddy_req_free(add_req);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
578 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
579
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
580 /* the real packet to reject and request is sent from here */
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
581 static void buddy_add_deny_reason_cb(qq_buddy_req *add_req, const gchar *reason)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
582 {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
583 g_return_if_fail(add_req != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
584 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
585 buddy_req_free(add_req);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
586 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
587 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
588
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
589 request_add_buddy_auth(add_req->gc, add_req->uid, QQ_MY_AUTH_REJECT, reason);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
590 buddy_req_free(add_req);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
591 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
592
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
593 static void buddy_add_deny_noreason_cb(qq_buddy_req *add_req)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
594 {
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
595 buddy_add_deny_reason_cb(add_req, NULL);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
596 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
597
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
598 /* we approve other's request of adding me as friend */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
599 static void buddy_add_authorize_cb(gpointer data)
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
600 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
601 qq_buddy_req *add_req = (qq_buddy_req *)data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
602
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
603 g_return_if_fail(add_req != NULL);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
604 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
605 buddy_req_free(add_req);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
606 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
607 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
608
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
609 request_add_buddy_auth(add_req->gc, add_req->uid, QQ_MY_AUTH_APPROVE, NULL);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
610 buddy_req_free(add_req);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
611 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
612
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
613 /* we reject other's request of adding me as friend */
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
614 static void buddy_add_deny_cb(gpointer data)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
615 {
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
616 qq_buddy_req *add_req = (qq_buddy_req *)data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
617 gchar *who = uid_to_purple_name(add_req->uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
618 purple_request_input(add_req->gc, NULL, _("Authorization denied message:"),
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
619 NULL, _("Sorry, You are not my style."), TRUE, FALSE, NULL,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
620 _("OK"), G_CALLBACK(buddy_add_deny_reason_cb),
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
621 _("Cancel"), G_CALLBACK(buddy_add_deny_noreason_cb),
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
622 purple_connection_get_account(add_req->gc), who, NULL,
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
623 add_req);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
624 g_free(who);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
625 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
626
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
627 static void add_buddy_no_auth_cb(qq_buddy_req *add_req)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
628 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
629 qq_data *qd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
630 g_return_if_fail(add_req != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
631 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
632 buddy_req_free(add_req);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
633 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
634 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
635
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
636 qd = (qq_data *) add_req->gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
637 if (qd->client_version > 2005) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
638 request_add_buddy_no_auth_ex(add_req->gc, add_req->uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
639 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
640 request_add_buddy_no_auth(add_req->gc, add_req->uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
641 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
642 buddy_req_free(add_req);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
643 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
644
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
645 void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
646 guint8 *auth, guint8 auth_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
647 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
648 gchar *who, *msg;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
649 qq_buddy_req *add_req;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
650 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
651
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
652 add_req = g_new0(qq_buddy_req, 1);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
653 add_req->gc = gc;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
654 add_req->uid = uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
655 add_req->auth = NULL;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
656 add_req->auth_len = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
657 if (auth != NULL && auth_len > 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
658 add_req->auth = g_new0(guint8, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
659 g_memmove(add_req->auth, auth, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
660 add_req->auth_len = auth_len;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
661 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
662
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
663 who = uid_to_purple_name(uid);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
664 msg = g_strdup_printf(_("%u needs authentication"), uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
665 purple_request_input(gc, _("Add buddy authorize"), msg,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
666 _("Input request here"),
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
667 _("Would you be my friend?"),
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
668 TRUE, FALSE, NULL,
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
669 _("Send"), G_CALLBACK(add_buddy_auth_cb),
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
670 _("Cancel"), G_CALLBACK(buddy_req_cancel_cb),
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
671 purple_connection_get_account(gc), who, NULL,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
672 add_req);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
673
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
674 g_free(msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
675 g_free(who);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
676 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
677
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
678 /* add a buddy and send packet to QQ server
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
679 * note that when purple load local cached buddy list into its blist
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
680 * it also calls this funtion, so we have to
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
681 * define qd->is_login=TRUE AFTER LOGIN */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
682 void qq_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
683 {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
684 qq_data *qd;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
685 guint32 uid;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
686
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
687 g_return_if_fail(NULL != gc && NULL != gc->proto_data);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
688 g_return_if_fail(buddy != NULL);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
689
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
690 qd = (qq_data *) gc->proto_data;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
691 if (!qd->is_login)
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
692 return; /* IMPORTANT ! */
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
693
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
694 uid = purple_name_to_uid(buddy->name);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
695 if (uid > 0) {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
696 if (qd->client_version > 2005) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
697 request_add_buddy_no_auth_ex(gc, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
698 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
699 request_add_buddy_no_auth(gc, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
700 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
701 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
702 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
703
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
704 purple_notify_error(gc, _("QQ Buddy"), _("Add buddy"), _("Invalid QQ Number"));
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
705 if (buddy == NULL) {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
706 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
707 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
708
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
709 purple_debug_info("QQ", "Remove buddy with invalid QQ number %u\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
710 qq_buddy_free(buddy);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
711 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
712
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
713 /* process reply to add_buddy_auth request */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
714 void qq_process_add_buddy_auth(guint8 *data, gint data_len, PurpleConnection *gc)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
715 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
716 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
717 gchar **segments, *msg_utf8;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
718
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
719 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
720
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
721 qd = (qq_data *) gc->proto_data;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
722
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
723 if (data[0] == '0') {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
724 purple_debug_info("QQ", "Reply OK for sending authorize\n");
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
725 return;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
726 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
727
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
728 if (NULL == (segments = split_data(data, data_len, "\x1f", 2))) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
729 purple_notify_error(gc, _("QQ Buddy"), _("Failed sending authorize"), NULL);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
730 return;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
731 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
732 msg_utf8 = qq_to_utf8(segments[1], QQ_CHARSET_DEFAULT);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
733 purple_notify_error(gc, _("QQ Buddy"), _("Failed sending authorize"), msg_utf8);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
734 g_free(msg_utf8);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
735 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
736
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
737 /* process the server reply for my request to remove a buddy */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
738 void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
739 {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
740 PurpleBuddy *buddy = NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
741 gchar *msg;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
742
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
743 g_return_if_fail(data != NULL && data_len != 0);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
744 g_return_if_fail(uid != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
745
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
746 buddy = qq_buddy_find(gc, uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
747 if (data[0] != 0) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
748 msg = g_strdup_printf(_("Failed removing buddy %u"), uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
749 purple_notify_info(gc, _("QQ Buddy"), msg, NULL);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
750 g_free(msg);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
751 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
752
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
753 purple_debug_info("QQ", "Reply OK for removing buddy\n");
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
754 /* remove buddy again */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
755 if (buddy != NULL) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
756 qq_buddy_free(buddy);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
757 }
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
758 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
759
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
760 /* process the server reply for my request to remove myself from a buddy */
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
761 void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
762 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
763 qq_data *qd;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
764 gchar *msg;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
765
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
766 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
767 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
768
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
769 if (data[0] == 0) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
770 purple_debug_info("QQ", "Reply OK for removing me from %u's buddy list\n", uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
771 return;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
772 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
773 msg = g_strdup_printf(_("Failed removing me from %d's buddy list"), uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
774 purple_notify_info(gc, _("QQ Buddy"), msg, NULL);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
775 g_free(msg);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
776 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
777
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
778 void qq_process_add_buddy_no_auth(PurpleConnection *gc,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
779 guint8 *data, gint data_len, guint32 uid)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
780 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
781 qq_data *qd;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
782 gchar **segments;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
783 gchar *dest_uid, *reply;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
784 PurpleBuddy *buddy;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
785
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
786 g_return_if_fail(data != NULL && data_len != 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
787 g_return_if_fail(uid != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
788
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
789 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
790
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
791 purple_debug_info("QQ", "Process buddy add for id [%u]\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
792 qq_show_packet("buddy_add_no_auth", data, data_len);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
793
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
794 if (NULL == (segments = split_data(data, data_len, "\x1f", 2)))
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
795 return;
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
796
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
797 dest_uid = segments[0];
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
798 reply = segments[1];
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
799 if (strtoul(dest_uid, NULL, 10) != qd->uid) { /* should not happen */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
800 purple_debug_error("QQ", "Add buddy reply is to [%s], not me!", dest_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
801 g_strfreev(segments);
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
802 return;
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
803 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
804
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
805 if (strtol(reply, NULL, 10) == 0) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
806 /* add OK */
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
807 qq_buddy_find_or_new(gc, uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
808
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
809 qq_request_buddy_info(gc, uid, 0, 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
810 if (qd->client_version >= 2007) {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
811 qq_request_get_level_2007(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
812 } else {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
813 qq_request_get_level(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
814 }
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
815 qq_request_get_buddies_online(gc, 0, 0);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
816
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
817 purple_debug_info("QQ", "Successed adding into %u's buddy list", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
818 g_strfreev(segments);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
819 return;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
820 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
821
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
822 /* need auth */
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
823 purple_debug_warning("QQ", "Failed adding buddy, need authorize\n");
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
824
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
825 buddy = qq_buddy_find(gc, uid);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
826 if (buddy == NULL) {
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
827 buddy = qq_buddy_new(gc, uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
828 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
829 if (buddy != NULL && buddy->proto_data != NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
830 /* Not authorized now, free buddy data */
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
831 qq_buddy_data_free(buddy->proto_data);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
832 buddy->proto_data = NULL;
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
833 }
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
834
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
835 add_buddy_authorize_input(gc, uid, NULL, 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
836 g_strfreev(segments);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
837 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
838
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
839 void qq_process_add_buddy_no_auth_ex(PurpleConnection *gc,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
840 guint8 *data, gint data_len, guint32 uid)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
841 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
842 qq_data *qd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
843 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
844 guint32 dest_uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
845 guint8 reply;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
846 guint8 auth_type;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
847
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
848 g_return_if_fail(data != NULL && data_len >= 5);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
849 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
850
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
851 qd = (qq_data *) gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
852
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
853 purple_debug_info("QQ", "Process buddy add no auth for id [%u]\n", uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
854 qq_show_packet("buddy_add_no_auth_ex", data, data_len);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
855
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
856 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
857 bytes += qq_get32(&dest_uid, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
858 bytes += qq_get8(&reply, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
859
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
860 g_return_if_fail(dest_uid == uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
861
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
862 if (reply == 0x99) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
863 purple_debug_info("QQ", "Successed adding buddy %u\n", uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
864 qq_buddy_find_or_new(gc, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
865
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
866 qq_request_buddy_info(gc, uid, 0, 0);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
867 if (qd->client_version >= 2007) {
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
868 qq_request_get_level_2007(gc, uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
869 } else {
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
870 qq_request_get_level(gc, uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
871 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
872 qq_request_get_buddies_online(gc, 0, 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
873 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
874 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
875
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
876 if (reply != 0) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
877 purple_debug_info("QQ", "Failed adding buddy %u, Unknow reply 0x%02X\n",
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
878 uid, reply);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
879 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
880
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
881 /* need auth */
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
882 g_return_if_fail(data_len > bytes);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
883 bytes += qq_get8(&auth_type, data + bytes);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
884 purple_debug_warning("QQ", "Adding buddy needs authorize 0x%02X\n", auth_type);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
885
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
886 switch (auth_type) {
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
887 case 0x00: /* no authorize */
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
888 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
889 case 0x01: /* authorize */
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
890 qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_ADD_BUDDY, uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
891 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
892 case 0x02: /* disable */
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
893 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
894 case 0x03: /* answer question */
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
895 qq_request_question(gc, QQ_QUESTION_REQUEST, uid, NULL, NULL);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
896 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
897 default:
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
898 g_return_if_reached();
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
899 break;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
900 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
901 return;
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24344
diff changeset
902 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24344
diff changeset
903
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
904 /* remove a buddy and send packet to QQ server accordingly */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
905 void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
906 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
907 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
908 guint32 uid;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
909
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
910 g_return_if_fail(gc != NULL && gc->proto_data != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
911 g_return_if_fail(buddy != NULL);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
912
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
913 qd = (qq_data *) gc->proto_data;
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
914 if (!qd->is_login)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
915 return;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
916
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
917 uid = purple_name_to_uid(buddy->name);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
918 if (uid > 0 && uid != qd->uid) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
919 if (qd->client_version > 2005) {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
920 qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_REMOVE_BUDDY, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
921 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
922 request_remove_buddy(gc, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
923 request_buddy_remove_me(gc, uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
924 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
925 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
926
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
927 if (buddy->proto_data) {
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
928 qq_buddy_data_free(buddy->proto_data);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
929 buddy->proto_data = NULL;
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
930 } else {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
931 purple_debug_warning("QQ", "Empty buddy data of %s\n", buddy->name);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
932 }
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
933
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
934 /* Do not call purple_blist_remove_buddy,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
935 * otherwise purple segmentation fault */
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
936 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
937
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
938 static void buddy_add_input(PurpleConnection *gc, guint32 uid, gchar *reason)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
939 {
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
940 PurpleAccount *account = purple_connection_get_account(gc);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
941 qq_buddy_req *add_req;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
942 gchar *who;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
943
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
944 g_return_if_fail(uid != 0 && reason != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
945
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
946 purple_debug_info("QQ", "Buddy %u request adding, msg: %s\n", uid, reason);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
947
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
948 add_req = g_new0(qq_buddy_req, 1);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
949 add_req->gc = gc;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
950 add_req->uid = uid;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
951
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
952 if (purple_prefs_get_bool("/plugins/prpl/qq/auto_get_authorize_info")) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
953 qq_request_buddy_info(gc, add_req->uid, 0, QQ_BUDDY_INFO_DISPLAY);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
954 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
955 who = uid_to_purple_name(add_req->uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
956
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
957 purple_account_request_authorization(account,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
958 who, NULL,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
959 NULL, reason,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
960 purple_find_buddy(account, who) != NULL,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
961 buddy_add_authorize_cb,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
962 buddy_add_deny_cb,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
963 add_req);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
964
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
965 g_free(who);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
966 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
967
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
968 /* someone wants to add you to his buddy list */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
969 static void server_buddy_add_request(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
970 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
971 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
972 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
973 gchar *msg, *reason;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
974
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
975 g_return_if_fail(from != NULL && to != NULL);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
976 uid = strtoul(from, NULL, 10);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
977 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
978
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
979 if (purple_prefs_get_bool("/plugins/prpl/qq/auto_get_authorize_info")) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
980 qq_request_buddy_info(gc, uid, 0, QQ_BUDDY_INFO_DISPLAY);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
981 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
982
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
983 if (data_len <= 0) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
984 reason = g_strdup( _("No reason given") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
985 } else {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
986 msg = g_strndup((gchar *)data, data_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
987 reason = qq_to_utf8(msg, QQ_CHARSET_DEFAULT);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
988 if (reason == NULL) reason = g_strdup( _("Unknown reason") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
989 g_free(msg);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
990 }
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
991
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
992 buddy_add_input(gc, uid, reason);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
993 g_free(reason);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
994 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
995
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
996 void qq_process_buddy_check_code(PurpleConnection *gc, guint8 *data, gint data_len)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
997 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
998 qq_data *qd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
999 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1000 guint8 cmd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1001 guint8 reply;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1002 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1003 guint16 flag1, flag2;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1004
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1005 g_return_if_fail(data != NULL && data_len >= 5);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1006 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1007
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1008 qd = (qq_data *) gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1009
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1010 qq_show_packet("buddy_check_code", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1011
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1012 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1013 bytes += qq_get8(&cmd, data + bytes); /* 0x03 */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1014 bytes += qq_get8(&reply, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1015
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1016 if (reply == 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1017 purple_debug_info("QQ", "Failed checking code\n");
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1018 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1019 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1020
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1021 bytes += qq_get32(&uid, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1022 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1023 bytes += qq_get16(&flag1, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1024 bytes += qq_get16(&flag2, data + bytes);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1025 purple_debug_info("QQ", "Check code reply Ok, uid %u, flag 0x%04X-0x%04X\n",
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1026 uid, flag1, flag2);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1027 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1028 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1029
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1030 static void request_buddy_check_code(PurpleConnection *gc,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1031 gchar *from, guint8 *code, gint code_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1032 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1033 guint8 *raw_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1034 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1035 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1036
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1037 g_return_if_fail(code != NULL && code_len > 0 && from != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1038
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1039 uid = strtoul(from, NULL, 10);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1040 raw_data = g_newa(guint8, code_len + 16);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1041 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1042 bytes += qq_put8(raw_data + bytes, 0x03);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1043 bytes += qq_put8(raw_data + bytes, 0x01);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1044 bytes += qq_put32(raw_data + bytes, uid);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1045 bytes += qq_put16(raw_data + bytes, code_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1046 bytes += qq_putdata(raw_data + bytes, code, code_len);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1047
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1048 qq_send_cmd(gc, QQ_CMD_BUDDY_CHECK_CODE, raw_data, bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1049 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1050
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1051 static gint server_buddy_check_code(PurpleConnection *gc,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1052 gchar *from, guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1053 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1054 gint bytes;
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
1055 guint16 code_len;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1056 guint8 *code;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1057
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1058 g_return_val_if_fail(data != NULL && data_len > 0, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1059
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1060 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1061 bytes += qq_get16(&code_len, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1062 if (code_len <= 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1063 purple_debug_info("QQ", "Server msg for buddy has no code\n");
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1064 return bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1065 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1066 if (bytes + code_len < data_len) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1067 purple_debug_error("QQ", "Code len error in server msg for buddy\n");
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1068 qq_show_packet("server_buddy_check_code", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1069 code_len = data_len - bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1070 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1071 code = g_newa(guint8, code_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1072 bytes += qq_getdata(code, code_len, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1073
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1074 request_buddy_check_code(gc, from, code, code_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1075 return bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1076 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1077
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1078 static void server_buddy_add_request_ex(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1079 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1080 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1081 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1082 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1083 gchar *msg;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1084 guint8 allow_reverse;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1085
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1086 g_return_if_fail(from != NULL && to != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1087 g_return_if_fail(data != NULL && data_len >= 3);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1088 uid = strtoul(from, NULL, 10);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1089 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1090
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1091 /* qq_show_packet("server_buddy_add_request_ex", data, data_len); */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1092
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1093 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1094 bytes += qq_get_vstr(&msg, QQ_CHARSET_DEFAULT, data+bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1095 bytes += qq_get8(&allow_reverse, data + bytes); /* allow_reverse = 0x01, allowed */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1096 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1097
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1098 if (strlen(msg) <= 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1099 g_free(msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1100 msg = g_strdup( _("No reason given") );
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1101 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1102 buddy_add_input(gc, uid, msg);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1103 g_free(msg);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1104 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1105
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1106 /* when you are added by a person, QQ server will send sys message */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1107 static void server_buddy_added(PurpleConnection *gc, gchar *from, gchar *to,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1108 guint8 *data, gint data_len)
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1109 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1110 PurpleAccount *account = purple_connection_get_account(gc);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1111 PurpleBuddy *buddy;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1112 guint32 uid;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1113 qq_buddy_req *add_req;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1114 gchar *who;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1115 gchar *primary;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1116
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1117 g_return_if_fail(from != NULL && to != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1118
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1119 uid = strtoul(from, NULL, 10);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1120 who = uid_to_purple_name(uid);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1121
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1122 buddy = purple_find_buddy(account, who);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1123 if (buddy != NULL) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1124 purple_account_notify_added(account, from, to, NULL, NULL);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1125 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1126
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1127 add_req = g_new0(qq_buddy_req, 1);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1128 add_req->gc = gc;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1129 add_req->uid = uid; /* only need to get value */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1130 primary = g_strdup_printf(_("You have been added by %s"), from);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1131 purple_request_action(gc, NULL, primary,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1132 _("Would you like to add him?"),
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1133 PURPLE_DEFAULT_ACTION_NONE,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1134 purple_connection_get_account(gc), who, NULL,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1135 add_req, 2,
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1136 _("Add"), G_CALLBACK(add_buddy_no_auth_cb),
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1137 _("Cancel"), G_CALLBACK(buddy_req_cancel_cb));
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1138
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1139 g_free(who);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1140 g_free(primary);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1141 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1142
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1143 static void server_buddy_added_ex(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1144 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1145 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1146 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1147 guint8 allow_reverse;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1148 gchar *msg;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1149
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1150 g_return_if_fail(from != NULL && to != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1151 g_return_if_fail(data != NULL && data_len >= 3);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1152
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1153 qq_show_packet("server_buddy_added_ex", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1154
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1155 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1156 bytes += qq_get_vstr(&msg, QQ_CHARSET_DEFAULT, data+bytes); /* always empty msg */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1157 purple_debug_info("QQ", "Buddy added msg: %s\n", msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1158 bytes += qq_get8(&allow_reverse, data + bytes); /* allow_reverse = 0x01, allowed */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1159 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1160
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1161 g_free(msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1162 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1163
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1164 static void server_buddy_adding_ex(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1165 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1166 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1167 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1168 guint8 allow_reverse;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1169
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1170 g_return_if_fail(from != NULL && to != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1171 g_return_if_fail(data != NULL && data_len >= 3);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1172
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1173 qq_show_packet("server_buddy_adding_ex", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1174
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1175 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1176 bytes += qq_get8(&allow_reverse, data + bytes); /* allow_reverse = 0x01, allowed */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1177 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1178 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1179
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1180 /* the buddy approves your request of adding him/her as your friend */
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1181 static void server_buddy_added_me(PurpleConnection *gc, gchar *from, gchar *to,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1182 guint8 *data, gint data_len)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1183 {
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
1184 PurpleAccount *account = purple_connection_get_account(gc);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1185 qq_data *qd;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1186 guint32 uid;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1187
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1188 g_return_if_fail(from != NULL && to != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1189
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1190 qd = (qq_data *) gc->proto_data;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1191
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1192 uid = strtoul(from, NULL, 10);
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1193 g_return_if_fail(uid > 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1194
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1195 server_buddy_check_code(gc, from, data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1196
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1197 qq_buddy_find_or_new(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1198 qq_request_buddy_info(gc, uid, 0, 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1199 qq_request_get_buddies_online(gc, 0, 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1200 if (qd->client_version >= 2007) {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1201 qq_request_get_level_2007(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1202 } else {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1203 qq_request_get_level(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1204 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1205
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1206 purple_account_notify_added(account, to, from, NULL, NULL);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1207 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1208
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1209 /* you are rejected by the person */
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1210 static void server_buddy_rejected_me(PurpleConnection *gc, gchar *from, gchar *to,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1211 guint8 *data, gint data_len)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1212 {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1213 guint32 uid;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1214 PurpleBuddy *buddy;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1215 gchar *msg, *msg_utf8;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1216 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1217 gchar **segments;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1218 gchar *primary, *secondary;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1219
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1220 g_return_if_fail(from != NULL && to != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1221
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1222 qq_show_packet("server_buddy_rejected_me", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1223
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1224 if (data_len <= 0) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1225 msg = g_strdup( _("No reason given") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1226 } else {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1227 segments = g_strsplit((gchar *)data, "\x1f", 1);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1228 if (segments != NULL && segments[0] != NULL) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1229 msg = g_strdup(segments[0]);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1230 g_strfreev(segments);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1231 bytes = strlen(msg) + 1;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1232 if (bytes < data_len) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1233 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1234 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1235 } else {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1236 msg = g_strdup( _("No reason given") );
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1237 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1238 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1239 msg_utf8 = qq_to_utf8(msg, QQ_CHARSET_DEFAULT);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1240 if (msg_utf8 == NULL) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1241 msg_utf8 = g_strdup( _("Unknown reason") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1242 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1243 g_free(msg);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1244
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1245 primary = g_strdup_printf(_("Rejected by %s"), from);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1246 secondary = g_strdup_printf(_("Message: %s"), msg_utf8);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1247
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1248 purple_notify_info(gc, _("QQ Buddy"), primary, secondary);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1249
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1250 g_free(msg_utf8);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1251 g_free(primary);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1252 g_free(secondary);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1253
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1254 uid = strtoul(from, NULL, 10);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1255 g_return_if_fail(uid != 0);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1256
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1257 buddy = qq_buddy_find(gc, uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1258 if (buddy != NULL && buddy->proto_data != NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1259 /* Not authorized now, free buddy data */
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1260 qq_buddy_data_free(buddy->proto_data);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1261 buddy->proto_data = NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1262 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1263 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1264
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1265 void qq_process_buddy_from_server(PurpleConnection *gc, int funct,
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1266 gchar *from, gchar *to, guint8 *data, gint data_len)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1267 {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1268 switch (funct) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1269 case QQ_SERVER_BUDDY_ADDED:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1270 server_buddy_added(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1271 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1272 case QQ_SERVER_BUDDY_ADD_REQUEST:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1273 server_buddy_add_request(gc, from, to, data, data_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1274 break;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1275 case QQ_SERVER_BUDDY_ADD_REQUEST_EX:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1276 server_buddy_add_request_ex(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1277 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1278 case QQ_SERVER_BUDDY_ADDED_ME:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1279 server_buddy_added_me(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1280 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1281 case QQ_SERVER_BUDDY_REJECTED_ME:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1282 server_buddy_rejected_me(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1283 break;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1284 case QQ_SERVER_BUDDY_ADDED_EX:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1285 server_buddy_added_ex(gc, from, to, data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1286 break;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1287 case QQ_SERVER_BUDDY_ADDING_EX:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1288 case QQ_SERVER_BUDDY_ADDED_ANSWER:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1289 server_buddy_adding_ex(gc, from, to, data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1290 break;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1291 default:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1292 purple_debug_warning("QQ", "Unknow buddy operate (%d) from server\n", funct);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1293 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1294 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1295 }

mercurial