Mon, 05 Nov 2001 12:25:22 +0000
[gaim-migrate @ 2688]
This source code was developed using Microsoft Visual Studio 6.0.
| 2086 | 1 | |
| 2 | /* | |
| 3 | * aim_misc.c | |
| 4 | * | |
| 5 | * TODO: Seperate a lot of this into an aim_bos.c. | |
| 6 | * | |
| 7 | * Other things... | |
| 8 | * | |
| 9 | * - Idle setting | |
| 10 | * | |
| 11 | * | |
| 12 | */ | |
| 13 | ||
| 14 | #define FAIM_INTERNAL | |
| 15 | #include <aim.h> | |
| 16 | ||
| 17 | /* | |
| 18 | * aim_bos_setidle() | |
| 19 | * | |
| 20 | * Should set your current idle time in seconds. Idealy, OSCAR should | |
| 21 | * do this for us. But, it doesn't. The client must call this to set idle | |
| 22 | * time. | |
| 23 | * | |
| 24 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
25 | faim_export int aim_bos_setidle(aim_session_t *sess, aim_conn_t *conn, fu32_t idletime) |
| 2086 | 26 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
27 | return aim_genericreq_l(sess, conn, 0x0001, 0x0011, &idletime); |
| 2086 | 28 | } |
| 29 | ||
| 30 | ||
| 31 | /* | |
| 32 | * aim_bos_changevisibility(conn, changtype, namelist) | |
| 33 | * | |
| 34 | * Changes your visibility depending on changetype: | |
| 35 | * | |
| 36 | * AIM_VISIBILITYCHANGE_PERMITADD: Lets provided list of names see you | |
| 37 | * AIM_VISIBILITYCHANGE_PERMIDREMOVE: Removes listed names from permit list | |
| 38 | * AIM_VISIBILITYCHANGE_DENYADD: Hides you from provided list of names | |
| 39 | * AIM_VISIBILITYCHANGE_DENYREMOVE: Lets list see you again | |
| 40 | * | |
| 41 | * list should be a list of | |
| 42 | * screen names in the form "Screen Name One&ScreenNameTwo&" etc. | |
| 43 | * | |
| 44 | * Equivelents to options in WinAIM: | |
| 45 | * - Allow all users to contact me: Send an AIM_VISIBILITYCHANGE_DENYADD | |
| 46 | * with only your name on it. | |
| 47 | * - Allow only users on my Buddy List: Send an | |
| 48 | * AIM_VISIBILITYCHANGE_PERMITADD with the list the same as your | |
| 49 | * buddy list | |
| 50 | * - Allow only the uesrs below: Send an AIM_VISIBILITYCHANGE_PERMITADD | |
| 51 | * with everyone listed that you want to see you. | |
| 52 | * - Block all users: Send an AIM_VISIBILITYCHANGE_PERMITADD with only | |
| 53 | * yourself in the list | |
| 54 | * - Block the users below: Send an AIM_VISIBILITYCHANGE_DENYADD with | |
| 55 | * the list of users to be blocked | |
| 56 | * | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
57 | * XXX ye gods. |
| 2086 | 58 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
59 | faim_export int aim_bos_changevisibility(aim_session_t *sess, aim_conn_t *conn, int changetype, const char *denylist) |
| 2086 | 60 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
61 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
62 | int packlen = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
63 | fu16_t subtype; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
64 | char *localcpy = NULL, *tmpptr = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
65 | int i; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
66 | int listcount; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
67 | aim_snacid_t snacid; |
| 2086 | 68 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
69 | if (!denylist) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
70 | return -EINVAL; |
| 2086 | 71 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
72 | if (changetype == AIM_VISIBILITYCHANGE_PERMITADD) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
73 | subtype = 0x05; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
74 | else if (changetype == AIM_VISIBILITYCHANGE_PERMITREMOVE) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
75 | subtype = 0x06; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
76 | else if (changetype == AIM_VISIBILITYCHANGE_DENYADD) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
77 | subtype = 0x07; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
78 | else if (changetype == AIM_VISIBILITYCHANGE_DENYREMOVE) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
79 | subtype = 0x08; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
80 | else |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
81 | return -EINVAL; |
| 2086 | 82 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
83 | localcpy = strdup(denylist); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
84 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
85 | listcount = aimutil_itemcnt(localcpy, '&'); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
86 | packlen = aimutil_tokslen(localcpy, 99, '&') + listcount + 9; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
87 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
88 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, packlen))) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
89 | free(localcpy); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
90 | return -ENOMEM; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
91 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
92 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
93 | snacid = aim_cachesnac(sess, 0x0009, subtype, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
94 | aim_putsnac(&fr->data, 0x0009, subtype, 0x00, snacid); |
| 2086 | 95 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
96 | for (i = 0; (i < (listcount - 1)) && (i < 99); i++) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
97 | tmpptr = aimutil_itemidx(localcpy, i, '&'); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
98 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
99 | aimbs_put8(&fr->data, strlen(tmpptr)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
100 | aimbs_putraw(&fr->data, tmpptr, strlen(tmpptr)); |
| 2086 | 101 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
102 | free(tmpptr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
103 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
104 | free(localcpy); |
| 2086 | 105 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
106 | aim_tx_enqueue(sess, fr); |
| 2086 | 107 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
108 | return 0; |
| 2086 | 109 | } |
| 110 | ||
| 111 | ||
| 112 | ||
| 113 | /* | |
| 114 | * aim_bos_setbuddylist(buddylist) | |
| 115 | * | |
| 116 | * This just builds the "set buddy list" command then queues it. | |
| 117 | * | |
| 118 | * buddy_list = "Screen Name One&ScreenNameTwo&"; | |
| 119 | * | |
| 120 | * TODO: Clean this up. | |
| 121 | * | |
| 122 | * XXX: I can't stress the TODO enough. | |
| 123 | * | |
| 124 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
125 | faim_export int aim_bos_setbuddylist(aim_session_t *sess, aim_conn_t *conn, const char *buddy_list) |
| 2086 | 126 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
127 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
128 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
129 | int i, len = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
130 | char *localcpy = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
131 | char *tmpptr = NULL; |
| 2086 | 132 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
133 | if (!buddy_list || !(localcpy = strdup(buddy_list))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
134 | return -EINVAL; |
| 2086 | 135 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
136 | i = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
137 | tmpptr = strtok(localcpy, "&"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
138 | while ((tmpptr != NULL) && (i < 150)) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
139 | faimdprintf(sess, 2, "---adding %d: %s (%d)\n", i, tmpptr, strlen(tmpptr)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
140 | len += 1+strlen(tmpptr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
141 | i++; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
142 | tmpptr = strtok(NULL, "&"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
143 | } |
| 2086 | 144 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
145 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+len))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
146 | return -ENOMEM; |
| 2086 | 147 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
148 | snacid = aim_cachesnac(sess, 0x0003, 0x0004, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
149 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
150 | aim_putsnac(&fr->data, 0x0003, 0x0004, 0x0000, snacid); |
| 2086 | 151 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
152 | strncpy(localcpy, buddy_list, strlen(buddy_list)+1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
153 | i = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
154 | tmpptr = strtok(localcpy, "&"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
155 | while ((tmpptr != NULL) & (i < 150)) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
156 | faimdprintf(sess, 2, "---adding %d: %s (%d)\n", i, tmpptr, strlen(tmpptr)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
157 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
158 | aimbs_put8(&fr->data, strlen(tmpptr)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
159 | aimbs_putraw(&fr->data, tmpptr, strlen(tmpptr)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
160 | i++; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
161 | tmpptr = strtok(NULL, "&"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
162 | } |
| 2086 | 163 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
164 | aim_tx_enqueue(sess, fr); |
| 2086 | 165 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
166 | free(localcpy); |
| 2086 | 167 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
168 | return 0; |
| 2086 | 169 | } |
| 170 | ||
| 171 | /* | |
| 172 | * aim_bos_setprofile(profile) | |
| 173 | * | |
| 174 | * Gives BOS your profile. | |
| 175 | * | |
| 176 | * | |
| 177 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
178 | faim_export int aim_bos_setprofile(aim_session_t *sess, aim_conn_t *conn, const char *profile, const char *awaymsg, fu16_t caps) |
| 2086 | 179 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
180 | static const char defencoding[] = {"text/aolrtf; charset=\"us-ascii\""}; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
181 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
182 | aim_tlvlist_t *tl = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
183 | aim_snacid_t snacid; |
| 2086 | 184 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
185 | /* Build to packet first to get real length */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
186 | if (profile) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
187 | aim_addtlvtochain_raw(&tl, 0x0001, strlen(defencoding), defencoding); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
188 | aim_addtlvtochain_raw(&tl, 0x0002, strlen(profile), profile); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
189 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
190 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
191 | if (awaymsg) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
192 | aim_addtlvtochain_raw(&tl, 0x0003, strlen(defencoding), defencoding); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
193 | aim_addtlvtochain_raw(&tl, 0x0004, strlen(awaymsg), awaymsg); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
194 | } |
| 2086 | 195 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
196 | aim_addtlvtochain_caps(&tl, 0x0005, caps); |
| 2086 | 197 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
198 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10 + aim_sizetlvchain(&tl)))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
199 | return -ENOMEM; |
| 2086 | 200 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
201 | snacid = aim_cachesnac(sess, 0x0002, 0x0004, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
202 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
203 | aim_putsnac(&fr->data, 0x0002, 0x004, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
204 | aim_writetlvchain(&fr->data, &tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
205 | aim_freetlvchain(&tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
206 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
207 | aim_tx_enqueue(sess, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
208 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
209 | return 0; |
| 2086 | 210 | } |
| 211 | ||
| 212 | /* | |
| 213 | * aim_bos_clientready() | |
| 214 | * | |
| 215 | * Send Client Ready. | |
| 216 | * | |
| 217 | */ | |
| 2672 | 218 | faim_export int aim_clientready(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 219 | { |
| 2672 | 220 | aim_conn_inside_t *ins = (aim_conn_inside_t *)conn->inside; |
| 221 | struct snacgroup *sg; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
222 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
223 | aim_snacid_t snacid; |
| 2672 | 224 | |
| 225 | if (!ins) | |
| 226 | return -EINVAL; | |
| 2086 | 227 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
228 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 1152))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
229 | return -ENOMEM; |
| 2086 | 230 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
231 | snacid = aim_cachesnac(sess, 0x0001, 0x0002, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
232 | aim_putsnac(&fr->data, 0x0001, 0x0002, 0x0000, snacid); |
| 2086 | 233 | |
| 2672 | 234 | /* |
| 235 | * Send only the tool versions that the server cares about (that it | |
| 236 | * marked as supporting in the server ready SNAC). | |
| 237 | */ | |
| 238 | for (sg = ins->groups; sg; sg = sg->next) { | |
| 239 | aim_module_t *mod; | |
| 240 | ||
| 241 | if ((mod = aim__findmodulebygroup(sess, sg->group))) { | |
| 242 | aimbs_put16(&fr->data, mod->family); | |
| 243 | aimbs_put16(&fr->data, mod->version); | |
| 244 | aimbs_put16(&fr->data, mod->toolid); | |
| 245 | aimbs_put16(&fr->data, mod->toolversion); | |
| 246 | } else | |
| 247 | faimdprintf(sess, 1, "aim_clientready: server supports group 0x%04x but we don't!\n", sg->group); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
248 | } |
| 2086 | 249 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
250 | aim_tx_enqueue(sess, fr); |
| 2086 | 251 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
252 | return 0; |
| 2086 | 253 | } |
| 254 | ||
| 255 | /* | |
| 256 | * aim_bos_setprivacyflags() | |
| 257 | * | |
| 258 | * Sets privacy flags. Normally 0x03. | |
| 259 | * | |
| 260 | * Bit 1: Allows other AIM users to see how long you've been idle. | |
| 261 | * Bit 2: Allows other AIM users to see how long you've been a member. | |
| 262 | * | |
| 263 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
264 | faim_export int aim_bos_setprivacyflags(aim_session_t *sess, aim_conn_t *conn, fu32_t flags) |
| 2086 | 265 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
266 | return aim_genericreq_l(sess, conn, 0x0001, 0x0014, &flags); |
| 2086 | 267 | } |
| 268 | ||
| 269 | /* | |
| 270 | * aim_bos_reqpersonalinfo() | |
| 271 | * | |
| 272 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
273 | faim_export int aim_bos_reqpersonalinfo(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 274 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
275 | return aim_genericreq_n(sess, conn, 0x0001, 0x000e); |
| 2086 | 276 | } |
| 277 | ||
| 278 | /* | |
| 279 | * aim_bos_reqservice(serviceid) | |
| 280 | * | |
| 281 | * Service request. | |
| 282 | * | |
| 283 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
284 | faim_export int aim_bos_reqservice(aim_session_t *sess, aim_conn_t *conn, fu16_t serviceid) |
| 2086 | 285 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
286 | return aim_genericreq_s(sess, conn, 0x0001, 0x0004, &serviceid); |
| 2086 | 287 | } |
| 288 | ||
| 289 | /* | |
| 290 | * aim_bos_nop() | |
| 291 | * | |
| 292 | * No-op. WinAIM sends these every 4min or so to keep | |
| 293 | * the connection alive. Its not real necessary. | |
| 294 | * | |
| 295 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
296 | faim_export int aim_bos_nop(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 297 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
298 | return aim_genericreq_n(sess, conn, 0x0001, 0x0016); |
| 2086 | 299 | } |
| 300 | ||
| 301 | /* | |
| 302 | * aim_flap_nop() | |
| 303 | * | |
| 304 | * No-op. WinAIM 4.x sends these _every minute_ to keep | |
| 305 | * the connection alive. | |
| 306 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
307 | faim_export int aim_flap_nop(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 308 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
309 | aim_frame_t *fr; |
| 2086 | 310 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
311 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x05, 0))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
312 | return -ENOMEM; |
| 2086 | 313 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
314 | aim_tx_enqueue(sess, fr); |
| 2086 | 315 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
316 | return 0; |
| 2086 | 317 | } |
| 318 | ||
| 319 | /* | |
| 320 | * aim_bos_reqrights() | |
| 321 | * | |
| 322 | * Request BOS rights. | |
| 323 | * | |
| 324 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
325 | faim_export int aim_bos_reqrights(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 326 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
327 | return aim_genericreq_n(sess, conn, 0x0009, 0x0002); |
| 2086 | 328 | } |
| 329 | ||
| 330 | /* | |
| 331 | * aim_bos_reqbuddyrights() | |
| 332 | * | |
| 333 | * Request Buddy List rights. | |
| 334 | * | |
| 335 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
336 | faim_export int aim_bos_reqbuddyrights(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 337 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
338 | return aim_genericreq_n(sess, conn, 0x0003, 0x0002); |
| 2086 | 339 | } |
| 340 | ||
| 341 | /* | |
| 2113 | 342 | * Send a warning to destsn. |
| 343 | * | |
| 344 | * Flags: | |
| 345 | * AIM_WARN_ANON Send as an anonymous (doesn't count as much) | |
| 2086 | 346 | * |
| 2113 | 347 | * returns -1 on error (couldn't alloc packet), 0 on success. |
| 2086 | 348 | * |
| 349 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
350 | faim_export int aim_send_warning(aim_session_t *sess, aim_conn_t *conn, const char *destsn, fu32_t flags) |
| 2086 | 351 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
352 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
353 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
354 | fu16_t outflags = 0x0000; |
| 2086 | 355 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
356 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, strlen(destsn)+13))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
357 | return -ENOMEM; |
| 2086 | 358 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
359 | snacid = aim_cachesnac(sess, 0x0004, 0x0008, 0x0000, destsn, strlen(destsn)+1); |
| 2113 | 360 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
361 | aim_putsnac(&fr->data, 0x0004, 0x0008, 0x0000, snacid); |
| 2086 | 362 | |
| 2113 | 363 | if (flags & AIM_WARN_ANON) |
| 364 | outflags |= 0x0001; | |
| 2086 | 365 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
366 | aimbs_put16(&fr->data, outflags); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
367 | aimbs_put8(&fr->data, strlen(destsn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
368 | aimbs_putraw(&fr->data, destsn, strlen(destsn)); |
| 2086 | 369 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
370 | aim_tx_enqueue(sess, fr); |
| 2086 | 371 | |
| 2113 | 372 | return 0; |
| 2086 | 373 | } |
| 374 | ||
| 375 | /* | |
| 376 | * aim_debugconn_sendconnect() | |
| 377 | * | |
| 378 | * For aimdebugd. If you don't know what it is, you don't want to. | |
| 379 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
380 | faim_export int aim_debugconn_sendconnect(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 381 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
382 | return aim_genericreq_n(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_DEBUGCONN_CONNECT); |
| 2086 | 383 | } |
| 384 | ||
| 385 | /* | |
| 386 | * Generic routine for sending commands. | |
| 387 | * | |
| 388 | * | |
| 389 | * I know I can do this in a smarter way...but I'm not thinking straight | |
| 390 | * right now... | |
| 391 | * | |
| 392 | * I had one big function that handled all three cases, but then it broke | |
| 393 | * and I split it up into three. But then I fixed it. I just never went | |
| 394 | * back to the single. I don't see any advantage to doing it either way. | |
| 395 | * | |
| 396 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
397 | faim_internal int aim_genericreq_n(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype) |
| 2086 | 398 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
399 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
400 | aim_snacid_t snacid = 0x00000000; |
| 2086 | 401 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
402 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
403 | return -ENOMEM; |
| 2086 | 404 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
405 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
| 2086 | 406 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
407 | aim_tx_enqueue(sess, fr); |
| 2086 | 408 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
409 | return 0; |
| 2086 | 410 | } |
| 411 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
412 | faim_internal int aim_genericreq_n_snacid(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype) |
| 2086 | 413 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
414 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
415 | aim_snacid_t snacid; |
| 2086 | 416 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
417 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
418 | return -ENOMEM; |
| 2086 | 419 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
420 | snacid = aim_cachesnac(sess, family, subtype, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
421 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
| 2086 | 422 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
423 | aim_tx_enqueue(sess, fr); |
| 2086 | 424 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
425 | return 0; |
| 2086 | 426 | } |
| 427 | ||
| 428 | /* | |
| 429 | * | |
| 430 | * | |
| 431 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
432 | faim_internal int aim_genericreq_l(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype, fu32_t *longdata) |
| 2086 | 433 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
434 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
435 | aim_snacid_t snacid; |
| 2086 | 436 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
437 | if (!longdata) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
438 | return aim_genericreq_n(sess, conn, family, subtype); |
| 2086 | 439 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
440 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+4))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
441 | return -ENOMEM; |
| 2086 | 442 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
443 | snacid = aim_cachesnac(sess, family, subtype, 0x0000, NULL, 0); |
| 2086 | 444 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
445 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
446 | aimbs_put32(&fr->data, *longdata); |
| 2086 | 447 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
448 | aim_tx_enqueue(sess, fr); |
| 2086 | 449 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
450 | return 0; |
| 2086 | 451 | } |
| 452 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
453 | faim_internal int aim_genericreq_s(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype, fu16_t *shortdata) |
| 2086 | 454 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
455 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
456 | aim_snacid_t snacid; |
| 2086 | 457 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
458 | if (!shortdata) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
459 | return aim_genericreq_n(sess, conn, family, subtype); |
| 2086 | 460 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
461 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+2))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
462 | return -ENOMEM; |
| 2086 | 463 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
464 | snacid = aim_cachesnac(sess, family, subtype, 0x0000, NULL, 0); |
| 2086 | 465 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
466 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
467 | aimbs_put16(&fr->data, *shortdata); |
| 2086 | 468 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
469 | aim_tx_enqueue(sess, fr); |
| 2086 | 470 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
471 | return 0; |
| 2086 | 472 | } |
| 473 | ||
| 474 | /* | |
| 475 | * aim_bos_reqlocaterights() | |
| 476 | * | |
| 477 | * Request Location services rights. | |
| 478 | * | |
| 479 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
480 | faim_export int aim_bos_reqlocaterights(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 481 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
482 | return aim_genericreq_n(sess, conn, 0x0002, 0x0002); |
| 2086 | 483 | } |
| 484 | ||
| 485 | /* | |
| 486 | * Set directory profile data (not the same as aim_bos_setprofile!) | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
487 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
488 | * privacy: 1 to allow searching, 0 to disallow. |
| 2086 | 489 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
490 | faim_export int aim_setdirectoryinfo(aim_session_t *sess, aim_conn_t *conn, const char *first, const char *middle, const char *last, const char *maiden, const char *nickname, const char *street, const char *city, const char *state, const char *zip, int country, fu16_t privacy) |
| 2086 | 491 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
492 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
493 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
494 | aim_tlvlist_t *tl = NULL; |
| 2086 | 495 | |
| 496 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
497 | aim_addtlvtochain16(&tl, 0x000a, privacy); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
498 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
499 | if (first) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
500 | aim_addtlvtochain_raw(&tl, 0x0001, strlen(first), first); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
501 | if (last) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
502 | aim_addtlvtochain_raw(&tl, 0x0002, strlen(last), last); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
503 | if (middle) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
504 | aim_addtlvtochain_raw(&tl, 0x0003, strlen(middle), middle); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
505 | if (maiden) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
506 | aim_addtlvtochain_raw(&tl, 0x0004, strlen(maiden), maiden); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
507 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
508 | if (state) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
509 | aim_addtlvtochain_raw(&tl, 0x0007, strlen(state), state); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
510 | if (city) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
511 | aim_addtlvtochain_raw(&tl, 0x0008, strlen(city), city); |
| 2086 | 512 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
513 | if (nickname) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
514 | aim_addtlvtochain_raw(&tl, 0x000c, strlen(nickname), nickname); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
515 | if (zip) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
516 | aim_addtlvtochain_raw(&tl, 0x000d, strlen(zip), zip); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
517 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
518 | if (street) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
519 | aim_addtlvtochain_raw(&tl, 0x0021, strlen(street), street); |
| 2086 | 520 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
521 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+aim_sizetlvchain(&tl)))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
522 | return -ENOMEM; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
523 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
524 | snacid = aim_cachesnac(sess, 0x0002, 0x0009, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
525 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
526 | aim_putsnac(&fr->data, 0x0002, 0x0009, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
527 | aim_writetlvchain(&fr->data, &tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
528 | aim_freetlvchain(&tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
529 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
530 | aim_tx_enqueue(sess, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
531 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
532 | return 0; |
| 2086 | 533 | } |
| 534 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
535 | /* XXX pass these in better */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
536 | faim_export int aim_setuserinterests(aim_session_t *sess, aim_conn_t *conn, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, fu16_t privacy) |
| 2086 | 537 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
538 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
539 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
540 | aim_tlvlist_t *tl = NULL; |
| 2086 | 541 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
542 | /* ?? privacy ?? */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
543 | aim_addtlvtochain16(&tl, 0x000a, privacy); |
| 2086 | 544 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
545 | if (interest1) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
546 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest1), interest1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
547 | if (interest2) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
548 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest2), interest2); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
549 | if (interest3) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
550 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest3), interest3); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
551 | if (interest4) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
552 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest4), interest4); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
553 | if (interest5) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
554 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest5), interest5); |
| 2086 | 555 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
556 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+aim_sizetlvchain(&tl)))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
557 | return -ENOMEM; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
558 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
559 | snacid = aim_cachesnac(sess, 0x0002, 0x000f, 0x0000, NULL, 0); |
| 2086 | 560 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
561 | aim_putsnac(&fr->data, 0x0002, 0x000f, 0x0000, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
562 | aim_writetlvchain(&fr->data, &tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
563 | aim_freetlvchain(&tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
564 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
565 | aim_tx_enqueue(sess, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
566 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
567 | return 0; |
| 2086 | 568 | } |
| 569 | ||
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
570 | faim_export int aim_icq_setstatus(aim_session_t *sess, aim_conn_t *conn, fu16_t status) |
| 2086 | 571 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
572 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
573 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
574 | aim_tlvlist_t *tl = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
575 | fu32_t data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
576 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
577 | data = 0x00030000 | status; /* yay for error checking ;^) */ |
| 2086 | 578 | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
579 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10 + 8))) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
580 | return -ENOMEM; |
| 2086 | 581 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
582 | snacid = aim_cachesnac(sess, 0x0001, 0x001e, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
583 | aim_putsnac(&fr->data, 0x0001, 0x001e, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
584 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
585 | aim_addtlvtochain32(&tl, 0x0006, data); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
586 | aim_writetlvchain(&fr->data, &tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
587 | aim_freetlvchain(&tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
588 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
589 | aim_tx_enqueue(sess, fr); |
| 2086 | 590 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
591 | return 0; |
| 2086 | 592 | } |
| 593 | ||
| 594 | /* | |
| 595 | * Should be generic enough to handle the errors for all families... | |
| 596 | * | |
| 597 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
598 | static int generror(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
| 2086 | 599 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
600 | int ret = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
601 | int error = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
602 | aim_rxcallback_t userfunc; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
603 | aim_snac_t *snac2; |
| 2086 | 604 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
605 | snac2 = aim_remsnac(sess, snac->id); |
| 2086 | 606 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
607 | if (aim_bstream_empty(bs)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
608 | error = aimbs_get16(bs); |
| 2086 | 609 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
610 | if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
611 | ret = userfunc(sess, rx, error, snac2 ? snac2->data : NULL); |
| 2086 | 612 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
613 | if (snac2) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
614 | free(snac2->data); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
615 | free(snac2); |
| 2086 | 616 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
617 | return ret; |
| 2086 | 618 | } |
| 619 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
620 | static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
| 2086 | 621 | { |
| 622 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
623 | if (snac->subtype == 0x0001) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
624 | return generror(sess, mod, rx, snac, bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
625 | else if ((snac->family == 0xffff) && (snac->subtype == 0xffff)) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
626 | aim_rxcallback_t userfunc; |
| 2086 | 627 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
628 | if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
629 | return userfunc(sess, rx); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
630 | } |
| 2086 | 631 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
632 | return 0; |
| 2086 | 633 | } |
| 634 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
635 | faim_internal int misc_modfirst(aim_session_t *sess, aim_module_t *mod) |
| 2086 | 636 | { |
| 637 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
638 | mod->family = 0xffff; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
639 | mod->version = 0x0000; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
640 | mod->flags = AIM_MODFLAG_MULTIFAMILY; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
641 | strncpy(mod->name, "misc", sizeof(mod->name)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
642 | mod->snachandler = snachandler; |
| 2086 | 643 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
644 | return 0; |
| 2086 | 645 | } |