Sun, 16 Mar 2008 20:36:52 +0000
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
to our debug functions (I really thought we had added that in a while ago?)
I didn't fix all of them... just most of them.
Oh, see these pages for a little info:
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
http://library.gnome.org/devel/glib/unstable/glib-Miscellaneous-Macros.html#G-GNUC-PRINTF:CAPS
| 13235 | 1 | /* |
| 15884 | 2 | * Purple's oscar protocol plugin |
| 13235 | 3 | * This file is the legal property of its developers. |
| 4 | * Please see the AUTHORS file distributed alongside this file. | |
| 5 | * | |
| 6 | * This library is free software; you can redistribute it and/or | |
| 7 | * modify it under the terms of the GNU Lesser General Public | |
| 8 | * License as published by the Free Software Foundation; either | |
| 9 | * version 2 of the License, or (at your option) any later version. | |
| 10 | * | |
| 11 | * This library is distributed in the hope that it will be useful, | |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 14 | * Lesser General Public License for more details. | |
| 15 | * | |
| 16 | * You should have received a copy of the GNU Lesser General Public | |
| 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 | 19 | */ |
| 20 | ||
| 21 | /* | |
| 22 | * Family 0x0015 - Encapsulated ICQ. | |
| 23 | * | |
| 24 | */ | |
| 25 | ||
| 26 | #include "oscar.h" | |
| 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 | 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 | 33 | aim_snacid_t snacid; |
| 34 | int bslen; | |
| 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 | 37 | return -EINVAL; |
| 38 | ||
| 39 | bslen = 2 + 4 + 2 + 2; | |
| 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 | 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 | 45 | |
| 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 | 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 | 54 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
55 | flap_connection_send(conn, frame); |
| 13235 | 56 | |
| 57 | return 0; | |
| 58 | } | |
| 59 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
60 | int aim_icq_ackofflinemsgs(OscarData *od) |
| 13235 | 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 | 64 | aim_snacid_t snacid; |
| 65 | int bslen; | |
| 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 | 68 | return -EINVAL; |
| 69 | ||
| 70 | bslen = 2 + 4 + 2 + 2; | |
| 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 | 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 | 76 | |
| 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 | 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 | 85 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
86 | flap_connection_send(conn, frame); |
| 13235 | 87 | |
| 88 | return 0; | |
| 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 | 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 | 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 | 97 | aim_snacid_t snacid; |
| 98 | int bslen; | |
| 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 | 101 | return -EINVAL; |
| 102 | ||
| 103 | bslen = 2+4+2+2+2+2+2+1+1+1+1+1+1; | |
| 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 | 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 | 109 | |
| 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 | 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 | 127 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
128 | flap_connection_send(conn, frame); |
| 13235 | 129 | |
| 130 | return 0; | |
| 131 | } | |
| 132 | ||
| 133 | /** | |
| 134 | * Change your ICQ password. | |
| 135 | * | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
136 | * @param od The oscar session |
| 13235 | 137 | * @param passwd The new password. If this is longer than 8 characters it |
| 138 | * will be truncated. | |
| 139 | * @return Return 0 if no errors, otherwise return the error number. | |
| 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 | 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 | 145 | aim_snacid_t snacid; |
| 146 | int bslen, passwdlen; | |
| 147 | ||
| 148 | if (!passwd) | |
| 149 | return -EINVAL; | |
| 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 | 152 | return -EINVAL; |
| 153 | ||
| 154 | passwdlen = strlen(passwd); | |
| 155 | if (passwdlen > MAXICQPASSLEN) | |
| 156 | passwdlen = MAXICQPASSLEN; | |
| 157 | bslen = 2+4+2+2+2+2+passwdlen+1; | |
| 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 | 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 | 163 | |
| 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 | 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 | 176 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
177 | flap_connection_send(conn, frame); |
| 13235 | 178 | |
| 179 | return 0; | |
| 180 | } | |
| 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 | 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 | 186 | aim_snacid_t snacid; |
| 187 | int bslen; | |
| 188 | struct aim_icq_info *info; | |
| 189 | ||
| 190 | if (!uin || uin[0] < '0' || uin[0] > '9') | |
| 191 | return -EINVAL; | |
| 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 | 194 | return -EINVAL; |
| 195 | ||
| 196 | bslen = 2 + 4 + 2 + 2 + 2 + 4; | |
| 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 | 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 | 202 | |
| 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 | 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 | 213 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
214 | flap_connection_send(conn, frame); |
| 13235 | 215 | |
| 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 | 218 | info->reqid = snacid; |
| 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 | 222 | |
| 223 | return 0; | |
| 224 | } | |
| 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 | 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 | 230 | aim_snacid_t snacid; |
| 231 | int bslen; | |
| 232 | struct aim_icq_info *info; | |
| 233 | ||
| 234 | if (!uin || uin[0] < '0' || uin[0] > '9') | |
| 235 | return -EINVAL; | |
| 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 | 238 | return -EINVAL; |
| 239 | ||
| 240 | bslen = 2 + 4 + 2 + 2 + 2 + 4; | |
| 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 | 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 | 246 | |
| 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 | 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 | 257 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
258 | flap_connection_send(conn, frame); |
| 13235 | 259 | |
| 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 | 262 | info->reqid = snacid; |
| 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 | 266 | |
| 267 | return 0; | |
| 268 | } | |
| 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 | 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 | 274 | aim_snacid_t snacid; |
| 275 | int bslen; | |
| 276 | ||
| 277 | if (!uin || uin[0] < '0' || uin[0] > '9') | |
| 278 | return -EINVAL; | |
| 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 | 281 | return -EINVAL; |
| 282 | ||
| 283 | bslen = 2 + 4 + 2 + 2 + 2 + 4; | |
| 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 | 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 | 289 | |
| 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 | 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 | 300 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
301 | flap_connection_send(conn, frame); |
| 13235 | 302 | |
| 303 | return 0; | |
| 304 | } | |
| 305 | ||
| 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 | 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 | 311 | aim_snacid_t snacid; |
| 312 | int bslen; | |
| 313 | ||
| 314 | if (!xml || !strlen(xml)) | |
| 315 | return -EINVAL; | |
| 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 | 318 | return -EINVAL; |
| 319 | ||
| 320 | bslen = 2 + 10 + 2 + strlen(xml) + 1; | |
| 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 | 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 | 326 | |
| 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 | 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 | 338 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
339 | flap_connection_send(conn, frame); |
| 13235 | 340 | |
| 341 | return 0; | |
| 342 | } | |
| 343 | #endif | |
| 344 | ||
| 345 | /* | |
| 346 | * Send an SMS message. This is the non-US way. The US-way is to IM | |
| 347 | * their cell phone number (+19195551234). | |
| 348 | * | |
| 349 | * We basically construct and send an XML message. The format is: | |
| 350 | * <icq_sms_message> | |
| 351 | * <destination>full_phone_without_leading_+</destination> | |
| 352 | * <text>message</text> | |
| 353 | * <codepage>1252</codepage> | |
| 354 | * <senders_UIN>self_uin</senders_UIN> | |
| 355 | * <senders_name>self_name</senders_name> | |
| 356 | * <delivery_receipt>Yes|No</delivery_receipt> | |
| 357 | * <time>Wkd, DD Mmm YYYY HH:MM:SS TMZ</time> | |
| 358 | * </icq_sms_message> | |
| 359 | * | |
| 360 | * Yeah hi Peter, whaaaat's happening. If there's any way to use | |
| 361 | * a codepage other than 1252 that would be great. Thaaaanks. | |
| 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 | 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 | 367 | aim_snacid_t snacid; |
| 368 | int bslen, xmllen; | |
| 369 | char *xml; | |
| 370 | const char *timestr; | |
| 371 | time_t t; | |
| 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 | 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 | 376 | return -EINVAL; |
| 377 | ||
| 378 | if (!name || !msg || !alias) | |
| 379 | return -EINVAL; | |
| 380 | ||
| 381 | time(&t); | |
| 382 | tm = gmtime(&t); | |
| 15884 | 383 | timestr = purple_utf8_strftime("%a, %d %b %Y %T %Z", tm); |
| 13235 | 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 | 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 | 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 | 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 | 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 | 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 | 408 | |
| 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 | 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 | 417 | |
| 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 | 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 | 431 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13254
diff
changeset
|
432 | flap_connection_send(conn, frame); |
| 13235 | 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 | 436 | |
| 437 | return 0; | |
| 438 | } | |
| 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 | 499 | static void aim_icq_freeinfo(struct aim_icq_info *info) { |
| 500 | int i; | |
| 501 | ||
| 502 | if (!info) | |
| 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 | 516 | if (info->email2) |
| 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 | 533 | } |
| 534 | ||
| 535 | /** | |
| 536 | * Subtype 0x0003 - Response to 0x0015/0x002, contains an ICQesque packet. | |
| 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 | 540 | { |
| 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 | 543 | aim_tlv_t *datatlv; |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
544 | ByteStream qbs; |
| 13235 | 545 | guint32 ouruin; |
| 546 | guint16 cmdlen, cmd, reqid; | |
| 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 | 550 | purple_debug_misc("oscar", "corrupt ICQ response\n"); |
| 13235 | 551 | return 0; |
| 552 | } | |
| 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 | 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 | 560 | |
|
22622
1ecb840b5101
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents:
22479
diff
changeset
|
561 | purple_debug_misc("oscar", "icq response: %d bytes, %u, 0x%04x, 0x%04x\n", cmdlen, ouruin, cmd, reqid); |
| 13235 | 562 | |
| 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 | 565 | struct aim_icq_offlinemsg msg; |
| 566 | aim_rxcallback_t userfunc; | |
| 567 | ||
| 568 | memset(&msg, 0, sizeof(msg)); | |
| 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 | 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 | 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 | 585 | |
| 586 | } else if (cmd == 0x0042) { | |
| 587 | aim_rxcallback_t userfunc; | |
| 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 | 592 | |
| 593 | } else if (cmd == 0x07da) { /* information */ | |
| 594 | guint16 subtype; | |
| 595 | struct aim_icq_info *info; | |
| 596 | aim_rxcallback_t userfunc; | |
| 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 | 600 | |
| 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 | 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 | 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 | 608 | } |
| 609 | ||
| 610 | switch (subtype) { | |
| 611 | case 0x00a0: { /* hide ip status */ | |
| 612 | /* nothing */ | |
| 613 | } break; | |
| 614 | ||
| 615 | case 0x00aa: { /* password change status */ | |
| 616 | /* nothing */ | |
| 617 | } break; | |
| 618 | ||
| 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 | 632 | /* 0x0a 00 02 00 */ |
| 633 | /* 1 byte timezone? */ | |
| 634 | /* 1 byte hide email flag? */ | |
| 635 | } break; | |
| 636 | ||
| 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 | 648 | /* 0x00 00 01 00 00 01 00 00 00 00 00 */ |
| 649 | } break; | |
| 650 | ||
| 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 | 664 | } break; |
| 665 | ||
| 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 | 668 | } break; |
| 669 | ||
| 670 | case 0x00eb: { /* email address(es) */ | |
| 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 | 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 | 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 | 678 | } |
| 679 | } break; | |
| 680 | ||
| 681 | case 0x00f0: { /* personal interests */ | |
| 682 | } break; | |
| 683 | ||
| 684 | case 0x00fa: { /* past background and current organizations */ | |
| 685 | } break; | |
| 686 | ||
| 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 | 692 | /* Then 0x00 02 00 */ |
| 693 | } break; | |
| 694 | ||
| 695 | case 0x010e: { /* unknown */ | |
| 696 | /* 0x00 00 */ | |
| 697 | } break; | |
| 698 | ||
| 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 | 706 | /* Then 0x00 02 00 00 00 00 00 */ |
| 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 | 880 | } /* End switch statement */ |
| 881 | ||
| 882 | if (!(snac->flags & 0x0001)) { | |
| 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 | 886 | |
| 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 | 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 | 893 | } else { |
| 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 | 896 | if (cur->next) |
| 897 | cur->next = cur->next->next; | |
| 898 | } | |
| 899 | aim_icq_freeinfo(info); | |
| 900 | } | |
| 901 | } | |
| 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 | 904 | |
| 905 | return ret; | |
| 906 | } | |
| 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 | 910 | { |
| 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 | 913 | |
| 914 | return 0; | |
| 915 | } | |
| 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 | 919 | { |
| 920 | struct aim_icq_info *del; | |
| 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 | 925 | aim_icq_freeinfo(del); |
| 926 | } | |
| 927 | ||
| 928 | return; | |
| 929 | } | |
| 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 | 933 | { |
| 934 | mod->family = 0x0015; | |
| 935 | mod->version = 0x0001; | |
| 936 | mod->toolid = 0x0110; | |
| 937 | mod->toolversion = 0x047c; | |
| 938 | mod->flags = 0; | |
| 939 | strncpy(mod->name, "icq", sizeof(mod->name)); | |
| 940 | mod->snachandler = snachandler; | |
| 941 | mod->shutdown = icq_shutdown; | |
| 942 | ||
| 943 | return 0; | |
| 944 | } |