libpurple/protocols/oscar/family_icq.c

Wed, 27 Feb 2008 09:18:06 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Wed, 27 Feb 2008 09:18:06 +0000
changeset 22479
10f266abebd0
parent 22125
57b7d398c30e
child 22622
1ecb840b5101
permissions
-rw-r--r--

Add support for offline messages for AIM, thanks to some info from
Matthew Goldstein. The new protocol bits used for offline messaging
for AIM are very nice. It fits in with the rest of the oscar protocol
very well (the old, ICQ-style offline messages were a bit of a hack).
The offline messages arrive in the same way as every other message
(except that they have a timestamp), so we can use the same message
parsing that we use for all other IMs. This means that all our
encoding stuff works just as well with offline messages.

AND the new offline message stuff works for ICQ accounts, too. So I
switched ICQ over to use it, which fixes offline message timestamps
(if that was still a problem, I'm not sure) and offline message encoding
bugs.

Fixes #1229 (feature request for AIM offline messages)
Fixes #1761 (ICQ offline message timestamp is wrong)
Fixes #4300 (crash when receiving offline messages)
Fixes #4464 (can't send IMs to invisible users)

13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * Purple's oscar protocol plugin
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
3 * This file is the legal property of its developers.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
4 * Please see the AUTHORS file distributed alongside this file.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
5 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
6 * This library is free software; you can redistribute it and/or
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
9 * version 2 of the License, or (at your option) any later version.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
11 * This library is distributed in the hope that it will be useful,
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
14 * Lesser General Public License for more details.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
15 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
17 * License along with this library; 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: 19819
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
19 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
20
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
21 /*
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 * Family 0x0015 - Encapsulated ICQ.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
23 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
24 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
25
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
26 #include "oscar.h"
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
27
22479
10f266abebd0 Add support for offline messages for AIM, thanks to some info from
Mark Doliner <markdoliner@pidgin.im>
parents: 22125
diff changeset
28 #ifdef OLDSTYLE_ICQ_OFFLINEMSGS
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
29 int aim_icq_reqofflinemsgs(OscarData *od)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
30 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
31 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
32 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
33 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
34 int bslen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
35
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
36 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
37 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
38
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
39 bslen = 2 + 4 + 2 + 2;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
41 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
42
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
43 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
44 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
45
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
46 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
47 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
48 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
49
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
50 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
51 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
52 byte_stream_putle16(&frame->data, 0x003c); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
53 byte_stream_putle16(&frame->data, snacid); /* eh. */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
54
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
55 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
56
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
57 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
58 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
59
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
60 int aim_icq_ackofflinemsgs(OscarData *od)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
61 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
62 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
63 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
64 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
65 int bslen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
66
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
67 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
68 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
69
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
70 bslen = 2 + 4 + 2 + 2;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
71
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
72 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
73
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
74 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
75 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
76
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
77 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
78 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
79 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
80
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
81 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
82 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
83 byte_stream_putle16(&frame->data, 0x003e); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
84 byte_stream_putle16(&frame->data, snacid); /* eh. */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
85
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
86 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
87
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
88 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
89 }
22479
10f266abebd0 Add support for offline messages for AIM, thanks to some info from
Mark Doliner <markdoliner@pidgin.im>
parents: 22125
diff changeset
90 #endif /* OLDSTYLE_ICQ_OFFLINEMSGS */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
91
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
92 int
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
93 aim_icq_setsecurity(OscarData *od, gboolean auth_required, gboolean webaware)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
94 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
95 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
96 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
97 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
98 int bslen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
99
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
100 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
101 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
102
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
103 bslen = 2+4+2+2+2+2+2+1+1+1+1+1+1;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
104
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
105 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
106
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
107 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
108 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
109
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
110 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
111 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
112 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
113
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
114 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
115 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
116 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
117 byte_stream_putle16(&frame->data, snacid); /* eh. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
118 byte_stream_putle16(&frame->data, 0x0c3a); /* shrug. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
119 byte_stream_putle16(&frame->data, 0x030c);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
120 byte_stream_putle16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
121 byte_stream_putle8(&frame->data, webaware);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
122 byte_stream_putle8(&frame->data, 0xf8);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
123 byte_stream_putle8(&frame->data, 0x02);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
124 byte_stream_putle8(&frame->data, 0x01);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
125 byte_stream_putle8(&frame->data, 0x00);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
126 byte_stream_putle8(&frame->data, !auth_required);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
127
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
128 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
129
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
130 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
131 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
132
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
133 /**
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
134 * Change your ICQ password.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
135 *
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
136 * @param od The oscar session
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
137 * @param passwd The new password. If this is longer than 8 characters it
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
138 * will be truncated.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
139 * @return Return 0 if no errors, otherwise return the error number.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
140 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
141 int aim_icq_changepasswd(OscarData *od, const char *passwd)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
142 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
143 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
144 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
145 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
146 int bslen, passwdlen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
147
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
148 if (!passwd)
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
149 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
150
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
151 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
152 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
153
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
154 passwdlen = strlen(passwd);
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
155 if (passwdlen > MAXICQPASSLEN)
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
156 passwdlen = MAXICQPASSLEN;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
157 bslen = 2+4+2+2+2+2+passwdlen+1;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
158
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
159 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
160
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
161 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
162 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
163
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
164 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
165 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
166 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
167
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
168 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
169 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
170 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
171 byte_stream_putle16(&frame->data, snacid); /* eh. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
172 byte_stream_putle16(&frame->data, 0x042e); /* shrug. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
173 byte_stream_putle16(&frame->data, passwdlen+1);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
174 byte_stream_putstr(&frame->data, passwd);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
175 byte_stream_putle8(&frame->data, '\0');
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
176
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
177 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
178
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
179 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
180 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
181
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
182 int aim_icq_getallinfo(OscarData *od, const char *uin)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
183 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
184 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
185 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
186 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
187 int bslen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
188 struct aim_icq_info *info;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
189
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
190 if (!uin || uin[0] < '0' || uin[0] > '9')
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
191 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
192
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
193 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
194 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
195
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
196 bslen = 2 + 4 + 2 + 2 + 2 + 4;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
197
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
198 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
199
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
200 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
201 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
202
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
203 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
204 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
205 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
206
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
207 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
208 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
209 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
210 byte_stream_putle16(&frame->data, snacid); /* eh. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
211 byte_stream_putle16(&frame->data, 0x04b2); /* shrug. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
212 byte_stream_putle32(&frame->data, atoi(uin));
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
213
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
214 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
215
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
216 /* Keep track of this request and the ICQ number and request ID */
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
217 info = (struct aim_icq_info *)g_new0(struct aim_icq_info, 1);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
218 info->reqid = snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
219 info->uin = atoi(uin);
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
220 info->next = od->icq_info;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
221 od->icq_info = info;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
222
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
223 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
224 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
225
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
226 int aim_icq_getalias(OscarData *od, const char *uin)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
227 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
228 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
229 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
230 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
231 int bslen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
232 struct aim_icq_info *info;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
233
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
234 if (!uin || uin[0] < '0' || uin[0] > '9')
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
235 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
236
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
237 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
238 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
239
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
240 bslen = 2 + 4 + 2 + 2 + 2 + 4;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
241
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
242 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
243
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
244 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
245 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
246
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
247 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
248 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
249 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
250
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
251 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
252 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
253 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
254 byte_stream_putle16(&frame->data, snacid); /* eh. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
255 byte_stream_putle16(&frame->data, 0x04ba); /* shrug. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
256 byte_stream_putle32(&frame->data, atoi(uin));
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
257
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
258 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
259
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
260 /* Keep track of this request and the ICQ number and request ID */
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
261 info = (struct aim_icq_info *)g_new0(struct aim_icq_info, 1);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
262 info->reqid = snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
263 info->uin = atoi(uin);
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
264 info->next = od->icq_info;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
265 od->icq_info = info;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
266
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
267 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
268 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
269
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
270 int aim_icq_getsimpleinfo(OscarData *od, const char *uin)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
271 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
272 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
273 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
274 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
275 int bslen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
276
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
277 if (!uin || uin[0] < '0' || uin[0] > '9')
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
278 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
279
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
280 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
281 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
282
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
283 bslen = 2 + 4 + 2 + 2 + 2 + 4;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
284
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
285 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
286
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
287 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
288 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
289
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
290 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
291 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
292 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
293
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
294 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
295 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
296 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
297 byte_stream_putle16(&frame->data, snacid); /* eh. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
298 byte_stream_putle16(&frame->data, 0x051f); /* shrug. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
299 byte_stream_putle32(&frame->data, atoi(uin));
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
300
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
301 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
302
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
303 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
304 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
305
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
306 #if 0
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
307 int aim_icq_sendxmlreq(OscarData *od, const char *xml)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
308 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
309 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
310 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
311 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
312 int bslen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
313
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
314 if (!xml || !strlen(xml))
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
315 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
316
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
317 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
318 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
319
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
320 bslen = 2 + 10 + 2 + strlen(xml) + 1;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
321
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
322 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
323
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
324 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
325 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
326
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
327 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
328 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
329 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
330
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
331 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
332 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
333 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
334 byte_stream_putle16(&frame->data, snacid); /* eh. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
335 byte_stream_putle16(&frame->data, 0x0998); /* shrug. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
336 byte_stream_putle16(&frame->data, strlen(xml) + 1);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
337 byte_stream_putraw(&frame->data, (guint8 *)xml, strlen(xml) + 1);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
338
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
339 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
340
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
341 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
342 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
343 #endif
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
344
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
345 /*
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
346 * Send an SMS message. This is the non-US way. The US-way is to IM
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
347 * their cell phone number (+19195551234).
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
348 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
349 * We basically construct and send an XML message. The format is:
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
350 * <icq_sms_message>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
351 * <destination>full_phone_without_leading_+</destination>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
352 * <text>message</text>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
353 * <codepage>1252</codepage>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
354 * <senders_UIN>self_uin</senders_UIN>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
355 * <senders_name>self_name</senders_name>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
356 * <delivery_receipt>Yes|No</delivery_receipt>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
357 * <time>Wkd, DD Mmm YYYY HH:MM:SS TMZ</time>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
358 * </icq_sms_message>
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
359 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
360 * Yeah hi Peter, whaaaat's happening. If there's any way to use
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
361 * a codepage other than 1252 that would be great. Thaaaanks.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
362 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
363 int aim_icq_sendsms(OscarData *od, const char *name, const char *msg, const char *alias)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
364 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
365 FlapConnection *conn;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
366 FlapFrame *frame;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
367 aim_snacid_t snacid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
368 int bslen, xmllen;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
369 char *xml;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
370 const char *timestr;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
371 time_t t;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
372 struct tm *tm;
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
373 gchar *stripped;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
374
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
375 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
376 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
377
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
378 if (!name || !msg || !alias)
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
379 return -EINVAL;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
380
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
381 time(&t);
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
382 tm = gmtime(&t);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
383 timestr = purple_utf8_strftime("%a, %d %b %Y %T %Z", tm);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
384
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
385 stripped = purple_markup_strip_html(msg);
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
386
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
387 /* The length of xml included the null terminating character */
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
388 xmllen = 209 + strlen(name) + strlen(stripped) + strlen(od->sn) + strlen(alias) + strlen(timestr) + 1;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
389
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
390 xml = g_new(char, xmllen);
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
391 snprintf(xml, xmllen, "<icq_sms_message>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
392 "<destination>%s</destination>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
393 "<text>%s</text>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
394 "<codepage>1252</codepage>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
395 "<senders_UIN>%s</senders_UIN>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
396 "<senders_name>%s</senders_name>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
397 "<delivery_receipt>Yes</delivery_receipt>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
398 "<time>%s</time>"
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
399 "</icq_sms_message>",
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
400 name, stripped, od->sn, alias, timestr);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
401
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
402 bslen = 36 + xmllen;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
403
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
404 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
405
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
406 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
407 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
408
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
409 /* For simplicity, don't bother using a tlvlist */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
410 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
411 byte_stream_put16(&frame->data, bslen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
412
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
413 byte_stream_putle16(&frame->data, bslen - 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
414 byte_stream_putle32(&frame->data, atoi(od->sn));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
415 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
416 byte_stream_putle16(&frame->data, snacid); /* eh. */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
417
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
418 /* From libicq200-0.3.2/src/SNAC-SRV.cpp */
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
419 byte_stream_putle16(&frame->data, 0x1482);
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
420 byte_stream_put16(&frame->data, 0x0001);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
421 byte_stream_put16(&frame->data, 0x0016);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
422 byte_stream_put32(&frame->data, 0x00000000);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
423 byte_stream_put32(&frame->data, 0x00000000);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
424 byte_stream_put32(&frame->data, 0x00000000);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
425 byte_stream_put32(&frame->data, 0x00000000);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
426
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
427 byte_stream_put16(&frame->data, 0x0000);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
428 byte_stream_put16(&frame->data, xmllen);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
429 byte_stream_putstr(&frame->data, xml);
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
430 byte_stream_put8(&frame->data, 0x00);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
431
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
432 flap_connection_send(conn, frame);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
433
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
434 g_free(xml);
19819
e9d8873f4d27 Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents: 17443
diff changeset
435 g_free(stripped);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
436
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
437 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
438 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
439
22125
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
440 /*
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
441 * getstatusnote may be a misleading name because the response
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
442 * contains a lot of different information but currently it's only
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
443 * used to get that.
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
444 */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
445 int aim_icq_getstatusnote(OscarData *od, const char *uin, guint8 *note_hash, guint16 note_hash_len)
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
446 {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
447 FlapConnection *conn;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
448 FlapFrame *frame;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
449 aim_snacid_t snacid;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
450 int bslen;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
451
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
452 purple_debug_misc("oscar", "aim_icq_getstatusnote: requesting status note for %s.\n", uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
453
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
454 if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
455 {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
456 purple_debug_misc("oscar", "aim_icq_getstatusnote: no connection.\n");
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
457 return -EINVAL;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
458 }
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
459
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
460 bslen = 2 + 4 + 2 + 2 + 2 + 2 + 58 + strlen(uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
461
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
462 frame = flap_frame_new(od, 0x02, 10 + 4 + bslen);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
463
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
464 snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
465 aim_putsnac(&frame->data, 0x0015, 0x0002, 0x0000, snacid);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
466
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
467 /* For simplicity, don't bother using a tlvlist */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
468 byte_stream_put16(&frame->data, 0x0001);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
469 byte_stream_put16(&frame->data, bslen);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
470
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
471 byte_stream_putle16(&frame->data, bslen - 2);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
472 byte_stream_putle32(&frame->data, atoi(od->sn));
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
473 byte_stream_putle16(&frame->data, 0x07d0); /* I command thee. */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
474 byte_stream_putle16(&frame->data, snacid); /* eh. */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
475 byte_stream_putle16(&frame->data, 0x0fa0); /* shrug. */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
476 byte_stream_putle16(&frame->data, 58 + strlen(uin));
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
477
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
478 byte_stream_put32(&frame->data, 0x05b90002); /* don't ask */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
479 byte_stream_put32(&frame->data, 0x80000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
480 byte_stream_put32(&frame->data, 0x00000006);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
481 byte_stream_put32(&frame->data, 0x00010002);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
482 byte_stream_put32(&frame->data, 0x00020000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
483 byte_stream_put32(&frame->data, 0x04e30000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
484 byte_stream_put32(&frame->data, 0x00020002);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
485 byte_stream_put32(&frame->data, 0x00000001);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
486
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
487 byte_stream_put16(&frame->data, 24 + strlen(uin));
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
488 byte_stream_put32(&frame->data, 0x003c0010);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
489 byte_stream_putraw(&frame->data, note_hash, 16); /* status note hash */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
490 byte_stream_put16(&frame->data, 0x0032); /* buddy uin */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
491 byte_stream_put16(&frame->data, strlen(uin));
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
492 byte_stream_putstr(&frame->data, uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
493
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
494 flap_connection_send(conn, frame);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
495
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
496 return 0;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
497 }
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
498
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
499 static void aim_icq_freeinfo(struct aim_icq_info *info) {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
500 int i;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
501
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
502 if (!info)
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
503 return;
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
504 g_free(info->nick);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
505 g_free(info->first);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
506 g_free(info->last);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
507 g_free(info->email);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
508 g_free(info->homecity);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
509 g_free(info->homestate);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
510 g_free(info->homephone);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
511 g_free(info->homefax);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
512 g_free(info->homeaddr);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
513 g_free(info->mobile);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
514 g_free(info->homezip);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
515 g_free(info->personalwebpage);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
516 if (info->email2)
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
517 for (i = 0; i < info->numaddresses; i++)
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
518 g_free(info->email2[i]);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
519 g_free(info->email2);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
520 g_free(info->workcity);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
521 g_free(info->workstate);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
522 g_free(info->workphone);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
523 g_free(info->workfax);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
524 g_free(info->workaddr);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
525 g_free(info->workzip);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
526 g_free(info->workcompany);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
527 g_free(info->workdivision);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
528 g_free(info->workposition);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
529 g_free(info->workwebpage);
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
530 g_free(info->info);
22125
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
531 g_free(info->status_note_title);
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
532 g_free(info);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
533 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
534
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
535 /**
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
536 * Subtype 0x0003 - Response to 0x0015/0x002, contains an ICQesque packet.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
537 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
538 static int
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
539 icqresponse(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
540 {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
541 int ret = 0;
17443
bae8548d98b3 Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents: 17280
diff changeset
542 GSList *tlvlist;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
543 aim_tlv_t *datatlv;
13240
db5187cc40d1 [gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents: 13235
diff changeset
544 ByteStream qbs;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
545 guint32 ouruin;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
546 guint16 cmdlen, cmd, reqid;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
547
17443
bae8548d98b3 Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents: 17280
diff changeset
548 if (!(tlvlist = aim_tlvlist_read(bs)) || !(datatlv = aim_tlv_gettlv(tlvlist, 0x0001, 1))) {
bae8548d98b3 Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents: 17280
diff changeset
549 aim_tlvlist_free(tlvlist);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
550 purple_debug_misc("oscar", "corrupt ICQ response\n");
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
551 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
552 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
553
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
554 byte_stream_init(&qbs, datatlv->value, datatlv->length);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
555
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
556 cmdlen = byte_stream_getle16(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
557 ouruin = byte_stream_getle32(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
558 cmd = byte_stream_getle16(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
559 reqid = byte_stream_getle16(&qbs);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
560
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
561 purple_debug_misc("oscar", "icq response: %d bytes, %ld, 0x%04x, 0x%04x\n", cmdlen, ouruin, cmd, reqid);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
562
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
563 if (cmd == 0x0041) { /* offline message */
22479
10f266abebd0 Add support for offline messages for AIM, thanks to some info from
Mark Doliner <markdoliner@pidgin.im>
parents: 22125
diff changeset
564 #ifdef OLDSTYLE_ICQ_OFFLINEMSGS
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
565 struct aim_icq_offlinemsg msg;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
566 aim_rxcallback_t userfunc;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
567
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
568 memset(&msg, 0, sizeof(msg));
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
569
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
570 msg.sender = byte_stream_getle32(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
571 msg.year = byte_stream_getle16(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
572 msg.month = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
573 msg.day = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
574 msg.hour = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
575 msg.minute = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
576 msg.type = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
577 msg.flags = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
578 msg.msglen = byte_stream_getle16(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
579 msg.msg = byte_stream_getstr(&qbs, msg.msglen);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
580
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
581 if ((userfunc = aim_callhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_OFFLINEMSG)))
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
582 ret = userfunc(od, conn, frame, &msg);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
583
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
584 g_free(msg.msg);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
585
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
586 } else if (cmd == 0x0042) {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
587 aim_rxcallback_t userfunc;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
588
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
589 if ((userfunc = aim_callhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_OFFLINEMSGCOMPLETE)))
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
590 ret = userfunc(od, conn, frame);
22479
10f266abebd0 Add support for offline messages for AIM, thanks to some info from
Mark Doliner <markdoliner@pidgin.im>
parents: 22125
diff changeset
591 #endif /* OLDSTYLE_ICQ_OFFLINEMSGS */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
592
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
593 } else if (cmd == 0x07da) { /* information */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
594 guint16 subtype;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
595 struct aim_icq_info *info;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
596 aim_rxcallback_t userfunc;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
597
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
598 subtype = byte_stream_getle16(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
599 byte_stream_advance(&qbs, 1); /* 0x0a */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
600
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
601 /* find other data from the same request */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
602 for (info = od->icq_info; info && (info->reqid != reqid); info = info->next);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
603 if (!info) {
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
604 info = (struct aim_icq_info *)g_new0(struct aim_icq_info, 1);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
605 info->reqid = reqid;
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
606 info->next = od->icq_info;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
607 od->icq_info = info;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
608 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
609
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
610 switch (subtype) {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
611 case 0x00a0: { /* hide ip status */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
612 /* nothing */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
613 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
614
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
615 case 0x00aa: { /* password change status */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
616 /* nothing */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
617 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
618
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
619 case 0x00c8: { /* general and "home" information */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
620 info->nick = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
621 info->first = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
622 info->last = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
623 info->email = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
624 info->homecity = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
625 info->homestate = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
626 info->homephone = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
627 info->homefax = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
628 info->homeaddr = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
629 info->mobile = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
630 info->homezip = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
631 info->homecountry = byte_stream_getle16(&qbs);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
632 /* 0x0a 00 02 00 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
633 /* 1 byte timezone? */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
634 /* 1 byte hide email flag? */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
635 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
636
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
637 case 0x00dc: { /* personal information */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
638 info->age = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
639 info->unknown = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
640 info->gender = byte_stream_getle8(&qbs); /* Not specified=0x00, Female=0x01, Male=0x02 */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
641 info->personalwebpage = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
642 info->birthyear = byte_stream_getle16(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
643 info->birthmonth = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
644 info->birthday = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
645 info->language1 = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
646 info->language2 = byte_stream_getle8(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
647 info->language3 = byte_stream_getle8(&qbs);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
648 /* 0x00 00 01 00 00 01 00 00 00 00 00 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
649 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
650
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
651 case 0x00d2: { /* work information */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
652 info->workcity = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
653 info->workstate = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
654 info->workphone = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
655 info->workfax = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
656 info->workaddr = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
657 info->workzip = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
658 info->workcountry = byte_stream_getle16(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
659 info->workcompany = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
660 info->workdivision = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
661 info->workposition = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
662 byte_stream_advance(&qbs, 2); /* 0x01 00 */
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
663 info->workwebpage = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
664 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
665
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
666 case 0x00e6: { /* additional personal information */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
667 info->info = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs)-1);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
668 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
669
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
670 case 0x00eb: { /* email address(es) */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
671 int i;
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
672 info->numaddresses = byte_stream_getle16(&qbs);
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
673 info->email2 = (char **)g_new0(char *, info->numaddresses);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
674 for (i = 0; i < info->numaddresses; i++) {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
675 info->email2[i] = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
676 if (i+1 != info->numaddresses)
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
677 byte_stream_advance(&qbs, 1); /* 0x00 */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
678 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
679 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
680
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
681 case 0x00f0: { /* personal interests */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
682 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
683
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
684 case 0x00fa: { /* past background and current organizations */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
685 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
686
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
687 case 0x0104: { /* alias info */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
688 info->nick = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
689 info->first = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
690 info->last = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
691 byte_stream_advance(&qbs, byte_stream_getle16(&qbs)); /* email address? */
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
692 /* Then 0x00 02 00 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
693 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
694
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
695 case 0x010e: { /* unknown */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
696 /* 0x00 00 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
697 } break;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
698
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
699 case 0x019a: { /* simple info */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
700 byte_stream_advance(&qbs, 2);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
701 info->uin = byte_stream_getle32(&qbs);
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
702 info->nick = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
703 info->first = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
704 info->last = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
705 info->email = byte_stream_getstr(&qbs, byte_stream_getle16(&qbs));
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
706 /* Then 0x00 02 00 00 00 00 00 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
707 } break;
22125
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
708
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
709 /* status note title and send request for status note text */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
710 case 0x0fb4: {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
711 GSList *tlvlist;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
712 aim_tlv_t *tlv;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
713 FlapConnection *conn;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
714 char *uin = NULL;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
715 char *status_note_title = NULL;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
716
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
717 conn = flap_connection_findbygroup(od, 0x0004);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
718 if (conn == NULL)
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
719 {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
720 purple_debug_misc("oscar", "icq/0x0fb4: flap connection was not found.\n");
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
721 break;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
722 }
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
723
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
724 byte_stream_advance(&qbs, 0x02); /* length */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
725 byte_stream_advance(&qbs, 0x2f); /* unknown stuff */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
726
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
727 tlvlist = aim_tlvlist_read(&qbs);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
728
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
729 tlv = aim_tlv_gettlv(tlvlist, 0x0032, 1);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
730 if (tlv != NULL)
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
731 /* Get user number */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
732 uin = aim_tlv_getvalue_as_string(tlv);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
733
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
734 tlv = aim_tlv_gettlv(tlvlist, 0x0226, 1);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
735 if (tlv != NULL)
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
736 /* Get status note title */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
737 status_note_title = aim_tlv_getvalue_as_string(tlv);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
738
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
739 aim_tlvlist_free(tlvlist);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
740
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
741 if (uin == NULL || status_note_title == NULL)
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
742 {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
743 purple_debug_misc("oscar", "icq/0x0fb4: uin or "
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
744 "status_note_title was not found\n");
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
745 g_free(uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
746 g_free(status_note_title);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
747 break;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
748 }
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
749
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
750 if (status_note_title[0] == '\0')
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
751 {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
752 PurpleAccount *account;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
753 PurpleBuddy *buddy;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
754 PurplePresence *presence;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
755 PurpleStatus *status;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
756
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
757 account = purple_connection_get_account(od->gc);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
758 buddy = purple_find_buddy(account, uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
759 presence = purple_buddy_get_presence(buddy);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
760 status = purple_presence_get_active_status(presence);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
761
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
762 purple_prpl_got_user_status(account, uin,
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
763 purple_status_get_id(status),
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
764 "message", NULL, NULL);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
765
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
766 g_free(status_note_title);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
767 }
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
768 else
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
769 {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
770 struct aim_icq_info *info;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
771 guint32 data_len;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
772 FlapFrame *frame;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
773 aim_snacid_t snacid;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
774 guchar cookie[8];
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
775
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
776 info = g_new0(struct aim_icq_info, 1);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
777
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
778 if (info == NULL)
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
779 {
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
780 g_free(uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
781 g_free(status_note_title);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
782
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
783 break;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
784 }
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
785
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
786 data_len = 13 + strlen(uin) + 30 + 6 + 4 + 55 + 85 + 4;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
787 frame = flap_frame_new(od, 0x0002, 10 + 4 + data_len);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
788 snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
789
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
790 aim_putsnac(&frame->data, 0x0004, 0x0006, 0x0000, snacid);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
791
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
792 aim_icbm_makecookie(cookie);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
793
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
794 byte_stream_putraw(&frame->data, cookie, 8); /* ICBM cookie */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
795 byte_stream_put16(&frame->data, 0x0002); /* message channel */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
796 byte_stream_put8(&frame->data, strlen(uin)); /* uin */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
797 byte_stream_putstr(&frame->data, uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
798
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
799 byte_stream_put16(&frame->data, 0x0005); /* rendez vous data */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
800 byte_stream_put16(&frame->data, 0x00b2);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
801 byte_stream_put16(&frame->data, 0x0000); /* request */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
802 byte_stream_putraw(&frame->data, cookie, 8); /* ICBM cookie */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
803 byte_stream_put32(&frame->data, 0x09461349); /* ICQ server relaying */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
804 byte_stream_put16(&frame->data, 0x4c7f);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
805 byte_stream_put16(&frame->data, 0x11d1);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
806 byte_stream_put32(&frame->data, 0x82224445);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
807 byte_stream_put32(&frame->data, 0x53540000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
808
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
809 byte_stream_put16(&frame->data, 0x000a); /* unknown TLV */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
810 byte_stream_put16(&frame->data, 0x0002);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
811 byte_stream_put16(&frame->data, 0x0001);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
812
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
813 byte_stream_put16(&frame->data, 0x000f); /* unknown TLV */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
814 byte_stream_put16(&frame->data, 0x0000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
815
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
816 byte_stream_put16(&frame->data, 0x2711); /* extended data */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
817 byte_stream_put16(&frame->data, 0x008a);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
818 byte_stream_putle16(&frame->data, 0x001b); /* length */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
819 byte_stream_putle16(&frame->data, 0x0009); /* version */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
820 byte_stream_putle32(&frame->data, 0x00000000); /* plugin: none */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
821 byte_stream_putle32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
822 byte_stream_putle32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
823 byte_stream_putle32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
824 byte_stream_putle16(&frame->data, 0x0000); /* unknown */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
825 byte_stream_putle32(&frame->data, 0x00000000); /* client capabilities flags */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
826 byte_stream_put8(&frame->data, 0x00); /* unknown */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
827 byte_stream_putle16(&frame->data, 0x0064); /* downcounter? */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
828 byte_stream_putle16(&frame->data, 0x000e); /* length */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
829 byte_stream_putle16(&frame->data, 0x0064); /* downcounter? */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
830 byte_stream_putle32(&frame->data, 0x00000000); /* unknown */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
831 byte_stream_putle32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
832 byte_stream_putle32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
833 byte_stream_put8(&frame->data, 0x1a); /* message type: plugin message descibed by text string */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
834 byte_stream_put8(&frame->data, 0x00); /* message flags */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
835 byte_stream_putle16(&frame->data, 0x0000); /* status code */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
836 byte_stream_putle16(&frame->data, 0x0001); /* priority code */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
837 byte_stream_putle16(&frame->data, 0x0000); /* text length */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
838
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
839 byte_stream_put8(&frame->data, 0x3a); /* message dump */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
840 byte_stream_put32(&frame->data, 0x00811a18);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
841 byte_stream_put32(&frame->data, 0xbc0e6c18);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
842 byte_stream_put32(&frame->data, 0x47a5916f);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
843 byte_stream_put32(&frame->data, 0x18dcc76f);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
844 byte_stream_put32(&frame->data, 0x1a010013);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
845 byte_stream_put32(&frame->data, 0x00000041);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
846 byte_stream_put32(&frame->data, 0x77617920);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
847 byte_stream_put32(&frame->data, 0x53746174);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
848 byte_stream_put32(&frame->data, 0x7573204d);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
849 byte_stream_put32(&frame->data, 0x65737361);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
850 byte_stream_put32(&frame->data, 0x67650100);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
851 byte_stream_put32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
852 byte_stream_put32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
853 byte_stream_put32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
854 byte_stream_put32(&frame->data, 0x00000015);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
855 byte_stream_put32(&frame->data, 0x00000000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
856 byte_stream_put32(&frame->data, 0x0000000d);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
857 byte_stream_put32(&frame->data, 0x00000074);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
858 byte_stream_put32(&frame->data, 0x6578742f);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
859 byte_stream_put32(&frame->data, 0x782d616f);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
860 byte_stream_put32(&frame->data, 0x6c727466);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
861
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
862 byte_stream_put16(&frame->data, 0x0003); /* server ACK requested */
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
863 byte_stream_put16(&frame->data, 0x0000);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
864
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
865 info->uin = atoi(uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
866 info->status_note_title = status_note_title;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
867
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
868 memcpy(&info->icbm_cookie, cookie, 8);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
869
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
870 info->next = od->icq_info;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
871 od->icq_info = info;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
872
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
873 flap_connection_send(conn, frame);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
874 }
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
875
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
876 g_free(uin);
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
877
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
878 } break;
57b7d398c30e Partial support for reading ICQ 6 status notes. The status note will
Mark Doliner <markdoliner@pidgin.im>
parents: 19859
diff changeset
879
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
880 } /* End switch statement */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
881
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
882 if (!(snac->flags & 0x0001)) {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
883 if (subtype != 0x0104)
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
884 if ((userfunc = aim_callhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_INFO)))
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
885 ret = userfunc(od, conn, frame, info);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
886
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
887 if (info->uin && info->nick)
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
888 if ((userfunc = aim_callhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_ALIAS)))
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
889 ret = userfunc(od, conn, frame, info);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
890
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
891 if (od->icq_info == info) {
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
892 od->icq_info = info->next;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
893 } else {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
894 struct aim_icq_info *cur;
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
895 for (cur=od->icq_info; (cur->next && (cur->next!=info)); cur=cur->next);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
896 if (cur->next)
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
897 cur->next = cur->next->next;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
898 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
899 aim_icq_freeinfo(info);
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
900 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
901 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
902
17443
bae8548d98b3 Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents: 17280
diff changeset
903 aim_tlvlist_free(tlvlist);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
904
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
905 return ret;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
906 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
907
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
908 static int
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
909 snachandler(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
910 {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
911 if (snac->subtype == 0x0003)
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
912 return icqresponse(od, conn, mod, frame, snac, bs);
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
913
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
914 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
915 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
916
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
917 static void
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
918 icq_shutdown(OscarData *od, aim_module_t *mod)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
919 {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
920 struct aim_icq_info *del;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
921
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
922 while (od->icq_info) {
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
923 del = od->icq_info;
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
924 od->icq_info = od->icq_info->next;
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
925 aim_icq_freeinfo(del);
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
926 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
927
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
928 return;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
929 }
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
930
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
931 int
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13254
diff changeset
932 icq_modfirst(OscarData *od, aim_module_t *mod)
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
933 {
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
934 mod->family = 0x0015;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
935 mod->version = 0x0001;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
936 mod->toolid = 0x0110;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
937 mod->toolversion = 0x047c;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
938 mod->flags = 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
939 strncpy(mod->name, "icq", sizeof(mod->name));
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
940 mod->snachandler = snachandler;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
941 mod->shutdown = icq_shutdown;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
942
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
943 return 0;
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
944 }

mercurial