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