Fri, 19 Jan 2001 09:11:16 +0000
[gaim-migrate @ 1425]
woo hoo
| 2 | 1 | /* |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
2 | * aim_info.c |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
3 | * |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
4 | * The functions here are responsible for requesting and parsing information- |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
5 | * gathering SNACs. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
6 | * |
| 2 | 7 | */ |
| 8 | ||
| 9 | ||
|
283
dbf3342692e9
[gaim-migrate @ 293]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
249
diff
changeset
|
10 | #include <faim/aim.h> |
| 2 | 11 | |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
12 | struct aim_priv_inforeq { |
|
1248
d98eb324cffe
[gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
13 | char sn[MAXSNLEN+1]; |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
14 | unsigned short infotype; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
15 | }; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
16 | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
17 | faim_export unsigned long aim_getinfo(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
18 | struct aim_conn_t *conn, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
19 | const char *sn, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
20 | unsigned short infotype) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
21 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
22 | struct command_tx_struct *newpacket; |
|
1248
d98eb324cffe
[gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
23 | struct aim_priv_inforeq privdata; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
24 | int i = 0; |
| 2 | 25 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
26 | if (!sess || !conn || !sn) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
27 | return 0; |
| 2 | 28 | |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
29 | if (!(newpacket = aim_tx_new(AIM_FRAMETYPE_OSCAR, 0x0002, conn, 12+1+strlen(sn)))) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
30 | return -1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
31 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
32 | newpacket->lock = 1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
33 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
34 | i = aim_putsnac(newpacket->data, 0x0002, 0x0005, 0x0000, sess->snac_nextid); |
| 2 | 35 | |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
36 | i += aimutil_put16(newpacket->data+i, infotype); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
37 | i += aimutil_put8(newpacket->data+i, strlen(sn)); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
38 | i += aimutil_putstr(newpacket->data+i, sn, strlen(sn)); |
| 2 | 39 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
40 | newpacket->lock = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
41 | aim_tx_enqueue(sess, newpacket); |
| 2 | 42 | |
|
1248
d98eb324cffe
[gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
43 | strncpy(privdata.sn, sn, sizeof(privdata.sn)); |
|
d98eb324cffe
[gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
44 | privdata.infotype = infotype; |
|
d98eb324cffe
[gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
45 | aim_cachesnac(sess, 0x0002, 0x0005, 0x0000, &privdata, sizeof(struct aim_priv_inforeq)); |
| 2 | 46 | |
|
1248
d98eb324cffe
[gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
47 | return sess->snac_nextid; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
48 | } |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
49 | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
50 | faim_internal int aim_parse_locateerr(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
51 | struct command_rx_struct *command) |
|
835
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
52 | { |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
53 | u_long snacid = 0x000000000; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
54 | struct aim_snac_t *snac = NULL; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
55 | int ret = 0; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
56 | rxcallback_t userfunc = NULL; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
57 | char *dest; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
58 | unsigned short reason = 0; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
59 | |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
60 | /* |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
61 | * Get SNAC from packet and look it up |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
62 | * the list of unrepliedto/outstanding |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
63 | * SNACs. |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
64 | * |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
65 | */ |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
66 | snacid = aimutil_get32(command->data+6); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
67 | snac = aim_remsnac(sess, snacid); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
68 | |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
69 | if (!snac) { |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
70 | printf("faim: locerr: got an locate-failed error on an unknown SNAC ID! (%08lx)\n", snacid); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
71 | dest = NULL; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
72 | } else |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
73 | dest = snac->data; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
74 | |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
75 | reason = aimutil_get16(command->data+10); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
76 | |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
77 | /* |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
78 | * Call client. |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
79 | */ |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
80 | userfunc = aim_callhandler(command->conn, 0x0002, 0x0001); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
81 | if (userfunc) |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
82 | ret = userfunc(sess, command, dest, reason); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
83 | else |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
84 | ret = 0; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
85 | |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
86 | if (snac) { |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
87 | free(snac->data); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
88 | free(snac); |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
89 | } |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
90 | |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
91 | return ret; |
|
ae8ae0549dd5
[gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
92 | } |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
93 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
94 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
95 | * Capability blocks. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
96 | */ |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
97 | u_char aim_caps[8][16] = { |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
98 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
99 | /* Buddy icon */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
100 | {0x09, 0x46, 0x13, 0x46, 0x4c, 0x7f, 0x11, 0xd1, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
101 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
102 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
103 | /* Voice */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
104 | {0x09, 0x46, 0x13, 0x41, 0x4c, 0x7f, 0x11, 0xd1, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
105 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
106 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
107 | /* IM image */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
108 | {0x09, 0x46, 0x13, 0x45, 0x4c, 0x7f, 0x11, 0xd1, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
109 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
110 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
111 | /* Chat */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
112 | {0x74, 0x8f, 0x24, 0x20, 0x62, 0x87, 0x11, 0xd1, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
113 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
114 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
115 | /* Get file */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
116 | {0x09, 0x46, 0x13, 0x48, 0x4c, 0x7f, 0x11, 0xd1, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
117 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
118 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
119 | /* Send file */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
120 | {0x09, 0x46, 0x13, 0x43, 0x4c, 0x7f, 0x11, 0xd1, |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
121 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
122 | |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
123 | /* Saves stock portfolios */ |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
124 | {0x09, 0x46, 0x13, 0x47, 0x4c, 0x7f, 0x11, 0xd1, |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
125 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
126 | |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
127 | /* Games */ |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
128 | {0x09, 0x46, 0x13, 0x4a, 0x4c, 0x7f, 0x11, 0xd1, |
|
1378
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1302
diff
changeset
|
129 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
130 | }; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
131 | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
132 | faim_internal unsigned short aim_getcap(unsigned char *capblock, int buflen) |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
133 | { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
134 | u_short ret = 0; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
135 | int y; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
136 | int offset = 0; |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
137 | int identified; |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
138 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
139 | while (offset < buflen) { |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
140 | identified = 0; |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
141 | for(y=0; y < (sizeof(aim_caps)/0x10); y++) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
142 | if (memcmp(&aim_caps[y], capblock+offset, 0x10) == 0) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
143 | switch(y) { |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
144 | case 0: ret |= AIM_CAPS_BUDDYICON; identified++; break; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
145 | case 1: ret |= AIM_CAPS_VOICE; identified++; break; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
146 | case 2: ret |= AIM_CAPS_IMIMAGE; identified++; break; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
147 | case 3: ret |= AIM_CAPS_CHAT; identified++; break; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
148 | case 4: ret |= AIM_CAPS_GETFILE; identified++; break; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
149 | case 5: ret |= AIM_CAPS_SENDFILE; identified++; break; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
150 | case 6: ret |= AIM_CAPS_GAMES; identified++; break; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
151 | case 7: ret |= AIM_CAPS_SAVESTOCKS; identified++; break; |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
152 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
153 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
154 | } |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
155 | if (!identified) { |
|
1383
1e20c8aed247
[gaim-migrate @ 1393]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1378
diff
changeset
|
156 | faimdprintf(1, "faim: unknown capability "); |
|
1378
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1302
diff
changeset
|
157 | for (y = 0; y < 0x10; y++) |
|
1383
1e20c8aed247
[gaim-migrate @ 1393]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1378
diff
changeset
|
158 | faimdprintf(2, "%02x ", capblock[offset+y]); |
|
1e20c8aed247
[gaim-migrate @ 1393]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1378
diff
changeset
|
159 | faimdprintf(1, "\n"); |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
160 | ret |= 0xff00; |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
161 | } |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
162 | |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
163 | offset += 0x10; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
164 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
165 | return ret; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
166 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
167 | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
168 | faim_internal int aim_putcap(unsigned char *capblock, int buflen, u_short caps) |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
169 | { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
170 | int offset = 0; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
171 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
172 | if (!capblock) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
173 | return -1; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
174 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
175 | if ((caps & AIM_CAPS_BUDDYICON) && (offset < buflen)) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
176 | memcpy(capblock+offset, aim_caps[0], sizeof(aim_caps[0])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
177 | offset += sizeof(aim_caps[1]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
178 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
179 | if ((caps & AIM_CAPS_VOICE) && (offset < buflen)) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
180 | memcpy(capblock+offset, aim_caps[1], sizeof(aim_caps[1])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
181 | offset += sizeof(aim_caps[1]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
182 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
183 | if ((caps & AIM_CAPS_IMIMAGE) && (offset < buflen)) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
184 | memcpy(capblock+offset, aim_caps[2], sizeof(aim_caps[2])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
185 | offset += sizeof(aim_caps[2]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
186 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
187 | if ((caps & AIM_CAPS_CHAT) && (offset < buflen)) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
188 | memcpy(capblock+offset, aim_caps[3], sizeof(aim_caps[3])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
189 | offset += sizeof(aim_caps[3]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
190 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
191 | if ((caps & AIM_CAPS_GETFILE) && (offset < buflen)) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
192 | memcpy(capblock+offset, aim_caps[4], sizeof(aim_caps[4])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
193 | offset += sizeof(aim_caps[4]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
194 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
195 | if ((caps & AIM_CAPS_SENDFILE) && (offset < buflen)) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
196 | memcpy(capblock+offset, aim_caps[5], sizeof(aim_caps[5])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
197 | offset += sizeof(aim_caps[5]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
198 | } |
|
1302
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
199 | if ((caps & AIM_CAPS_GAMES) && (offset < buflen)) { |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
200 | memcpy(capblock+offset, aim_caps[6], sizeof(aim_caps[6])); |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
201 | offset += sizeof(aim_caps[6]); |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
202 | } |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
203 | if ((caps & AIM_CAPS_SAVESTOCKS) && (offset < buflen)) { |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
204 | memcpy(capblock+offset, aim_caps[7], sizeof(aim_caps[7])); |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
205 | offset += sizeof(aim_caps[7]); |
|
c7214a694c60
[gaim-migrate @ 1312]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1248
diff
changeset
|
206 | } |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
207 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
208 | return offset; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
209 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
210 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
211 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
212 | * AIM is fairly regular about providing user info. This |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
213 | * is a generic routine to extract it in its standard form. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
214 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
215 | faim_internal int aim_extractuserinfo(u_char *buf, struct aim_userinfo_s *outinfo) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
216 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
217 | int i = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
218 | int tlvcnt = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
219 | int curtlv = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
220 | int tlv1 = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
221 | u_short curtype; |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
222 | int lastvalid; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
223 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
224 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
225 | if (!buf || !outinfo) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
226 | return -1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
227 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
228 | /* Clear out old data first */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
229 | memset(outinfo, 0x00, sizeof(struct aim_userinfo_s)); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
230 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
231 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
232 | * Screen name. Stored as an unterminated string prepended |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
233 | * with an unsigned byte containing its length. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
234 | */ |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
235 | if (buf[i] < MAXSNLEN) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
236 | memcpy(outinfo->sn, &(buf[i+1]), buf[i]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
237 | outinfo->sn[(int)buf[i]] = '\0'; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
238 | } else { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
239 | memcpy(outinfo->sn, &(buf[i+1]), MAXSNLEN-1); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
240 | outinfo->sn[MAXSNLEN] = '\0'; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
241 | } |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
242 | i = 1 + (int)buf[i]; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
243 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
244 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
245 | * Warning Level. Stored as an unsigned short. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
246 | */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
247 | outinfo->warnlevel = aimutil_get16(&buf[i]); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
248 | i += 2; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
249 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
250 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
251 | * TLV Count. Unsigned short representing the number of |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
252 | * Type-Length-Value triples that follow. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
253 | */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
254 | tlvcnt = aimutil_get16(&buf[i]); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
255 | i += 2; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
256 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
257 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
258 | * Parse out the Type-Length-Value triples as they're found. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
259 | */ |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
260 | while (curtlv < tlvcnt) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
261 | lastvalid = 1; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
262 | curtype = aimutil_get16(&buf[i]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
263 | switch (curtype) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
264 | /* |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
265 | * Type = 0x0000: Invalid |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
266 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
267 | * AOL has been trying to throw these in just to break us. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
268 | * They're real nice guys over there at AOL. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
269 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
270 | * Just skip the two zero bytes and continue on. (This doesn't |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
271 | * count towards tlvcnt!) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
272 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
273 | case 0x0000: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
274 | lastvalid = 0; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
275 | i += 2; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
276 | break; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
277 | |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
278 | /* |
|
900
c560f793f30c
[gaim-migrate @ 910]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
889
diff
changeset
|
279 | * Type = 0x0001: User flags |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
280 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
281 | * Specified as any of the following bitwise ORed together: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
282 | * 0x0001 Trial (user less than 60days) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
283 | * 0x0002 Unknown bit 2 |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
284 | * 0x0004 AOL Main Service user |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
285 | * 0x0008 Unknown bit 4 |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
286 | * 0x0010 Free (AIM) user |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
287 | * 0x0020 Away |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
288 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
289 | * In some odd cases, we can end up with more |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
290 | * than one of these. We only want the first, |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
291 | * as the others may not be something we want. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
292 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
293 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
294 | case 0x0001: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
295 | if (tlv1) /* use only the first */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
296 | break; |
|
900
c560f793f30c
[gaim-migrate @ 910]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
889
diff
changeset
|
297 | outinfo->flags = aimutil_get16(&buf[i+4]); |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
298 | tlv1++; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
299 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
300 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
301 | /* |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
302 | * Type = 0x0002: Member-Since date. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
303 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
304 | * The time/date that the user originally |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
305 | * registered for the service, stored in |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
306 | * time_t format |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
307 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
308 | case 0x0002: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
309 | outinfo->membersince = aimutil_get32(&buf[i+4]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
310 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
311 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
312 | /* |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
313 | * Type = 0x0003: On-Since date. |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
314 | * |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
315 | * The time/date that the user started |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
316 | * their current session, stored in time_t |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
317 | * format. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
318 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
319 | case 0x0003: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
320 | outinfo->onlinesince = aimutil_get32(&buf[i+4]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
321 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
322 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
323 | /* |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
324 | * Type = 0x0004: Idle time. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
325 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
326 | * Number of seconds since the user |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
327 | * actively used the service. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
328 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
329 | case 0x0004: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
330 | outinfo->idletime = aimutil_get16(&buf[i+4]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
331 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
332 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
333 | /* |
|
931
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
334 | * Type = 0x0006: ICQ Online Status |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
335 | * |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
336 | * ICQ's Away/DND/etc "enriched" status |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
337 | * Some decoding of values done by Scott <darkagl@pcnet.com> |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
338 | */ |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
339 | case 0x0006: |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
340 | outinfo->icqinfo.status = aimutil_get16(buf+i+2+2+2); |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
341 | break; |
|
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
342 | |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
343 | |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
344 | /* |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
345 | * Type = 0x000a |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
346 | * |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
347 | * ICQ User IP Address. |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
348 | * Ahh, the joy of ICQ security. |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
349 | */ |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
350 | case 0x000a: |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
351 | outinfo->icqinfo.ipaddr = aimutil_get32(&buf[i+4]); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
352 | break; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
353 | |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
354 | /* Type = 0x000c |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
355 | * |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
356 | * random crap containing the IP address, |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
357 | * apparently a port number, and some Other Stuff. |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
358 | * |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
359 | */ |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
360 | case 0x000c: |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
361 | memcpy(outinfo->icqinfo.crap, &buf[i+4], 0x25); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
362 | break; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
363 | |
|
931
82f5541d6d2a
[gaim-migrate @ 941]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
900
diff
changeset
|
364 | /* |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
365 | * Type = 0x000d |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
366 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
367 | * Capability information. Not real sure of |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
368 | * actual decoding. See comment on aim_bos_setprofile() |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
369 | * in aim_misc.c about the capability block, its the same. |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
370 | * |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
371 | */ |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
372 | case 0x000d: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
373 | { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
374 | int len; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
375 | len = aimutil_get16(buf+i+2); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
376 | if (!len) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
377 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
378 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
379 | outinfo->capabilities = aim_getcap(buf+i+4, len); |
|
1378
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1302
diff
changeset
|
380 | if (outinfo->capabilities & 0xff00) |
|
1383
1e20c8aed247
[gaim-migrate @ 1393]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1378
diff
changeset
|
381 | faimdprintf(2, "%s\n", outinfo->sn); |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
382 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
383 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
384 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
385 | /* |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
386 | * Type = 0x000e |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
387 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
388 | * Unknown. Always of zero length, and always only |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
389 | * on AOL users. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
390 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
391 | * Ignore. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
392 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
393 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
394 | case 0x000e: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
395 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
396 | |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
397 | /* |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
398 | * Type = 0x000f: Session Length. (AIM) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
399 | * Type = 0x0010: Session Length. (AOL) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
400 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
401 | * The duration, in seconds, of the user's |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
402 | * current session. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
403 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
404 | * Which TLV type this comes in depends |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
405 | * on the service the user is using (AIM or AOL). |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
406 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
407 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
408 | case 0x000f: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
409 | case 0x0010: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
410 | outinfo->sessionlen = aimutil_get32(&buf[i+4]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
411 | break; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
412 | |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
413 | /* |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
414 | * Reaching here indicates that either AOL has |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
415 | * added yet another TLV for us to deal with, |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
416 | * or the parsing has gone Terribly Wrong. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
417 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
418 | * Either way, inform the owner and attempt |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
419 | * recovery. |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
420 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
421 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
422 | default: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
423 | { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
424 | int len,z = 0, y = 0, x = 0; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
425 | char tmpstr[80]; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
426 | printf("faim: userinfo: **warning: unexpected TLV:\n"); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
427 | printf("faim: userinfo: sn =%s\n", outinfo->sn); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
428 | printf("faim: userinfo: curtlv=0x%04x\n", curtlv); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
429 | printf("faim: userinfo: type =0x%04x\n",aimutil_get16(&buf[i])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
430 | printf("faim: userinfo: length=0x%04x\n", len = aimutil_get16(&buf[i+2])); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
431 | printf("faim: userinfo: data: \n"); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
432 | while (z<len) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
433 | { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
434 | x = sprintf(tmpstr, "faim: userinfo: "); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
435 | for (y = 0; y < 8; y++) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
436 | { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
437 | if (z<len) |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
438 | { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
439 | sprintf(tmpstr+x, "%02x ", buf[i+4+z]); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
440 | z++; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
441 | x += 3; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
442 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
443 | else |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
444 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
445 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
446 | printf("%s\n", tmpstr); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
447 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
448 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
449 | break; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
450 | } |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
451 | /* |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
452 | * No matter what, TLV triplets should always look like this: |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
453 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
454 | * u_short type; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
455 | * u_short length; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
456 | * u_char data[length]; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
457 | * |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
458 | */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
459 | if (lastvalid) { |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
460 | i += (2 + 2 + aimutil_get16(&buf[i+2])); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
461 | curtlv++; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
462 | } |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
463 | } |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
464 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
465 | return i; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
466 | } |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
467 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
468 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
469 | * Oncoming Buddy notifications contain a subset of the |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
470 | * user information structure. Its close enough to run |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
471 | * through aim_extractuserinfo() however. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
472 | * |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
473 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
474 | faim_internal int aim_parse_oncoming_middle(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
475 | struct command_rx_struct *command) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
476 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
477 | struct aim_userinfo_s userinfo; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
478 | u_int i = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
479 | rxcallback_t userfunc=NULL; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
480 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
481 | i = 10; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
482 | i += aim_extractuserinfo(command->data+i, &userinfo); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
483 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
484 | userfunc = aim_callhandler(command->conn, AIM_CB_FAM_BUD, AIM_CB_BUD_ONCOMING); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
485 | if (userfunc) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
486 | i = userfunc(sess, command, &userinfo); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
487 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
488 | return 1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
489 | } |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
490 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
491 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
492 | * Offgoing Buddy notifications contain no useful |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
493 | * information other than the name it applies to. |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
494 | * |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
495 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
496 | faim_internal int aim_parse_offgoing_middle(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
497 | struct command_rx_struct *command) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
498 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
499 | char sn[MAXSNLEN+1]; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
500 | u_int i = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
501 | rxcallback_t userfunc=NULL; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
502 | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
503 | strncpy(sn, (char *)command->data+11, (int)command->data[10]); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
504 | sn[(int)command->data[10]] = '\0'; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
505 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
506 | userfunc = aim_callhandler(command->conn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
507 | if (userfunc) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
508 | i = userfunc(sess, command, sn); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
509 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
510 | return 1; |
| 2 | 511 | } |
| 512 | ||
| 513 | /* | |
| 514 | * This parses the user info stuff out all nice and pretty then calls | |
| 515 | * the higher-level callback (in the user app). | |
| 516 | * | |
| 517 | */ | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
518 | faim_internal int aim_parse_userinfo_middle(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
519 | struct command_rx_struct *command) |
| 2 | 520 | { |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
521 | struct aim_userinfo_s userinfo; |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
522 | char *text_encoding = NULL; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
523 | char *text = NULL; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
524 | u_int i = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
525 | rxcallback_t userfunc=NULL; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
526 | struct aim_tlvlist_t *tlvlist; |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
527 | struct aim_snac_t *origsnac = NULL; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
528 | u_long snacid; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
529 | struct aim_priv_inforeq *inforeq; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
530 | |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
531 | snacid = aimutil_get32(&command->data[6]); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
532 | origsnac = aim_remsnac(sess, snacid); |
| 2 | 533 | |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
534 | if (!origsnac || !origsnac->data) { |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
535 | printf("faim: parse_userinfo_middle: major problem: no snac stored!\n"); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
536 | return 1; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
537 | } |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
538 | |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
539 | inforeq = (struct aim_priv_inforeq *)origsnac->data; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
540 | |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
541 | switch (inforeq->infotype) { |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
542 | case AIM_GETINFO_GENERALINFO: |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
543 | case AIM_GETINFO_AWAYMESSAGE: |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
544 | i = 10; |
| 2 | 545 | |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
546 | /* |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
547 | * extractuserinfo will give us the basic metaTLV information |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
548 | */ |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
549 | i += aim_extractuserinfo(command->data+i, &userinfo); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
550 | |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
551 | /* |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
552 | * However, in this command, there's usually more TLVs following... |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
553 | */ |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
554 | tlvlist = aim_readtlvchain(command->data+i, command->commandlen-i); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
555 | |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
556 | /* |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
557 | * Depending on what informational text was requested, different |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
558 | * TLVs will appear here. |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
559 | * |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
560 | * Profile will be 1 and 2, away message will be 3 and 4. |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
561 | */ |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
562 | if (aim_gettlv(tlvlist, 0x0001, 1)) { |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
563 | text_encoding = aim_gettlv_str(tlvlist, 0x0001, 1); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
564 | text = aim_gettlv_str(tlvlist, 0x0002, 1); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
565 | } else if (aim_gettlv(tlvlist, 0x0003, 1)) { |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
566 | text_encoding = aim_gettlv_str(tlvlist, 0x0003, 1); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
567 | text = aim_gettlv_str(tlvlist, 0x0004, 1); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
568 | } |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
569 | |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
570 | userfunc = aim_callhandler(command->conn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
571 | if (userfunc) { |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
572 | i = userfunc(sess, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
573 | command, |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
574 | &userinfo, |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
575 | text_encoding, |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
576 | text, |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
577 | inforeq->infotype); |
| 2 | 578 | } |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
579 | |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
580 | free(text_encoding); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
581 | free(text); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
582 | aim_freetlvchain(&tlvlist); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
583 | break; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
584 | default: |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
585 | printf("faim: parse_userinfo_middle: unknown infotype in request! (0x%04x)\n", inforeq->infotype); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
586 | break; |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
587 | } |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
588 | |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
589 | if (origsnac) { |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
590 | if (origsnac->data) |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
591 | free(origsnac->data); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
592 | free(origsnac); |
|
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
593 | } |
| 2 | 594 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
595 | return 1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
596 | } |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
597 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
598 | /* |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
599 | * Inverse of aim_extractuserinfo() |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
600 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
601 | faim_internal int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s *info) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
602 | { |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
603 | int i = 0, numtlv = 0; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
604 | struct aim_tlvlist_t *tlvlist = NULL; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
605 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
606 | if (!buf || !info) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
607 | return 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
608 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
609 | i += aimutil_put8(buf+i, strlen(info->sn)); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
610 | i += aimutil_putstr(buf+i, info->sn, strlen(info->sn)); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
611 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
612 | i += aimutil_put16(buf+i, info->warnlevel); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
613 | |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
614 | |
|
900
c560f793f30c
[gaim-migrate @ 910]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
889
diff
changeset
|
615 | aim_addtlvtochain16(&tlvlist, 0x0001, info->flags); |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
616 | numtlv++; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
617 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
618 | aim_addtlvtochain32(&tlvlist, 0x0002, info->membersince); |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
619 | numtlv++; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
620 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
621 | aim_addtlvtochain32(&tlvlist, 0x0003, info->onlinesince); |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
622 | numtlv++; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
623 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
624 | aim_addtlvtochain16(&tlvlist, 0x0004, info->idletime); |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
625 | numtlv++; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
626 | |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
627 | #if ICQ_OSCAR_SUPPORT |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
628 | if(atoi(info->sn) != 0) { |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
629 | aim_addtlvtochain16(&tlvlist, 0x0006, info->icqinfo.status); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
630 | aim_addtlvtochain32(&tlvlist, 0x000a, info->icqinfo.ipaddr); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
631 | } |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
632 | #endif |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
633 | |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
634 | aim_addtlvtochain_caps(&tlvlist, 0x000d, info->capabilities); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
635 | numtlv++; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
636 | |
|
900
c560f793f30c
[gaim-migrate @ 910]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
889
diff
changeset
|
637 | aim_addtlvtochain32(&tlvlist, (unsigned short)((info->flags)&AIM_FLAG_AOL?0x0010:0x000f), info->sessionlen); |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
638 | numtlv++; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
639 | |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
640 | i += aimutil_put16(buf+i, numtlv); /* tlvcount */ |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
641 | i += aim_writetlvchain(buf+i, buflen-i, &tlvlist); /* tlvs */ |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
642 | aim_freetlvchain(&tlvlist); |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
931
diff
changeset
|
643 | |
| 2 | 644 | return i; |
| 645 | } | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
646 | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
647 | faim_export int aim_sendbuddyoncoming(struct aim_session_t *sess, struct aim_conn_t *conn, struct aim_userinfo_s *info) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
648 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
649 | struct command_tx_struct *tx; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
650 | int i = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
651 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
652 | if (!sess || !conn || !info) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
653 | return 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
654 | |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
655 | if (!(tx = aim_tx_new(AIM_FRAMETYPE_OSCAR, 0x0002, conn, 1152))) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
656 | return -1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
657 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
658 | tx->lock = 1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
659 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
660 | i += aimutil_put16(tx->data+i, 0x0003); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
661 | i += aimutil_put16(tx->data+i, 0x000b); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
662 | i += aimutil_put16(tx->data+i, 0x0000); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
663 | i += aimutil_put16(tx->data+i, 0x0000); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
664 | i += aimutil_put16(tx->data+i, 0x0000); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
665 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
666 | i += aim_putuserinfo(tx->data+i, tx->commandlen-i, info); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
667 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
668 | tx->commandlen = i; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
669 | tx->lock = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
670 | aim_tx_enqueue(sess, tx); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
671 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
672 | return 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
673 | } |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
674 | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
835
diff
changeset
|
675 | faim_export int aim_sendbuddyoffgoing(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
676 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
677 | struct command_tx_struct *tx; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
678 | int i = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
679 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
680 | if (!sess || !conn || !sn) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
681 | return 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
682 | |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
683 | if (!(tx = aim_tx_new(AIM_FRAMETYPE_OSCAR, 0x0002, conn, 10+1+strlen(sn)))) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
684 | return -1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
685 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
686 | tx->lock = 1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
687 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
688 | i += aimutil_put16(tx->data+i, 0x0003); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
689 | i += aimutil_put16(tx->data+i, 0x000c); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
690 | i += aimutil_put16(tx->data+i, 0x0000); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
691 | i += aimutil_put16(tx->data+i, 0x0000); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
692 | i += aimutil_put16(tx->data+i, 0x0000); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
693 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
694 | i += aimutil_put8(tx->data+i, strlen(sn)); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
695 | i += aimutil_putstr(tx->data+i, sn, strlen(sn)); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
696 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
697 | tx->lock = 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
698 | aim_tx_enqueue(sess, tx); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
699 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
700 | return 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
701 | } |
|
249
14b7e4f943ff
[gaim-migrate @ 259]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
702 |