Thu, 17 Oct 2002 05:06:15 +0000
[gaim-migrate @ 3861]
This is better because Duffman says so, oh yeah!
No, but seriously... before these changes, if you got new email on an
account, but didn't read it, gaim would pop up a little "read yo email,
sucka!" notice every once in a while, because AIM sends you a little
email status thing every once in a while. This should alleviate that
problem (by attempting to keep track of the number of unread emails in
your account).
committer: Mark Doliner <markdoliner@pidgin.im>
| 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_setbuddylist(buddylist) | |
| 19 | * | |
| 20 | * This just builds the "set buddy list" command then queues it. | |
| 21 | * | |
| 22 | * buddy_list = "Screen Name One&ScreenNameTwo&"; | |
| 23 | * | |
| 24 | * TODO: Clean this up. | |
| 25 | * | |
| 26 | * XXX: I can't stress the TODO enough. | |
| 27 | * | |
| 28 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
29 | faim_export int aim_bos_setbuddylist(aim_session_t *sess, aim_conn_t *conn, const char *buddy_list) |
| 2086 | 30 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
31 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
32 | aim_snacid_t snacid; |
| 2931 | 33 | int len = 0; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
34 | char *localcpy = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
35 | char *tmpptr = NULL; |
| 2086 | 36 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
37 | if (!buddy_list || !(localcpy = strdup(buddy_list))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
38 | return -EINVAL; |
| 2086 | 39 | |
| 2931 | 40 | for (tmpptr = strtok(localcpy, "&"); tmpptr; ) { |
| 41 | faimdprintf(sess, 2, "---adding: %s (%d)\n", tmpptr, strlen(tmpptr)); | |
| 42 | len += 1 + strlen(tmpptr); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
43 | tmpptr = strtok(NULL, "&"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
44 | } |
| 2086 | 45 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
46 | 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
|
47 | return -ENOMEM; |
| 2086 | 48 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
49 | snacid = aim_cachesnac(sess, 0x0003, 0x0004, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
50 | aim_putsnac(&fr->data, 0x0003, 0x0004, 0x0000, snacid); |
| 2086 | 51 | |
| 2931 | 52 | strncpy(localcpy, buddy_list, strlen(buddy_list) + 1); |
| 53 | ||
| 54 | for (tmpptr = strtok(localcpy, "&"); tmpptr; ) { | |
| 55 | ||
| 56 | faimdprintf(sess, 2, "---adding: %s (%d)\n", tmpptr, strlen(tmpptr)); | |
| 57 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
58 | aimbs_put8(&fr->data, strlen(tmpptr)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
59 | aimbs_putraw(&fr->data, tmpptr, strlen(tmpptr)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
60 | tmpptr = strtok(NULL, "&"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
61 | } |
| 2086 | 62 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
63 | aim_tx_enqueue(sess, fr); |
| 2086 | 64 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
65 | free(localcpy); |
| 2086 | 66 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
67 | return 0; |
| 2086 | 68 | } |
| 69 | ||
| 70 | /* | |
| 71 | * aim_bos_setprofile(profile) | |
| 72 | * | |
| 73 | * Gives BOS your profile. | |
| 74 | * | |
| 75 | */ | |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
76 | faim_export int aim_bos_setprofile(aim_session_t *sess, aim_conn_t *conn, const char *profile, const char *awaymsg, fu32_t caps) |
| 2086 | 77 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
78 | static const char defencoding[] = {"text/aolrtf; charset=\"us-ascii\""}; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
79 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
80 | aim_tlvlist_t *tl = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
81 | aim_snacid_t snacid; |
| 2086 | 82 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
83 | /* Build to packet first to get real length */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
84 | if (profile) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
85 | aim_addtlvtochain_raw(&tl, 0x0001, strlen(defencoding), defencoding); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
86 | aim_addtlvtochain_raw(&tl, 0x0002, strlen(profile), profile); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
87 | } |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
88 | |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
89 | /* |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
90 | * So here's how this works: |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
91 | * - You are away when you have a non-zero-length type 4 TLV stored. |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
92 | * - You become unaway when you clear the TLV with a zero-length |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
93 | * type 4 TLV. |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
94 | * - If you do not send the type 4 TLV, your status does not change |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
95 | * (that is, if you were away, you'll remain away). |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
96 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
97 | if (awaymsg) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
98 | if (strlen(awaymsg)) { |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
99 | aim_addtlvtochain_raw(&tl, 0x0003, strlen(defencoding), defencoding); |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
100 | aim_addtlvtochain_raw(&tl, 0x0004, strlen(awaymsg), awaymsg); |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
101 | } else |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
102 | aim_addtlvtochain_noval(&tl, 0x0004); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
103 | } |
| 2086 | 104 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
105 | aim_addtlvtochain_caps(&tl, 0x0005, caps); |
| 2086 | 106 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
107 | 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
|
108 | return -ENOMEM; |
| 2086 | 109 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
110 | snacid = aim_cachesnac(sess, 0x0002, 0x0004, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
111 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
112 | aim_putsnac(&fr->data, 0x0002, 0x004, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
113 | aim_writetlvchain(&fr->data, &tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
114 | aim_freetlvchain(&tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
115 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
116 | aim_tx_enqueue(sess, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
117 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
118 | return 0; |
| 2086 | 119 | } |
| 120 | ||
| 121 | /* | |
| 122 | * aim_bos_reqbuddyrights() | |
| 123 | * | |
| 124 | * Request Buddy List rights. | |
| 125 | * | |
| 126 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
127 | faim_export int aim_bos_reqbuddyrights(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 128 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
129 | return aim_genericreq_n(sess, conn, 0x0003, 0x0002); |
| 2086 | 130 | } |
| 131 | ||
| 132 | /* | |
| 2113 | 133 | * Send a warning to destsn. |
| 134 | * | |
| 135 | * Flags: | |
| 136 | * AIM_WARN_ANON Send as an anonymous (doesn't count as much) | |
| 2086 | 137 | * |
| 2113 | 138 | * returns -1 on error (couldn't alloc packet), 0 on success. |
| 2086 | 139 | * |
| 140 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
141 | faim_export int aim_send_warning(aim_session_t *sess, aim_conn_t *conn, const char *destsn, fu32_t flags) |
| 2086 | 142 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
143 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
144 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
145 | fu16_t outflags = 0x0000; |
| 2086 | 146 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
147 | 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
|
148 | return -ENOMEM; |
| 2086 | 149 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
150 | snacid = aim_cachesnac(sess, 0x0004, 0x0008, 0x0000, destsn, strlen(destsn)+1); |
| 2113 | 151 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
152 | aim_putsnac(&fr->data, 0x0004, 0x0008, 0x0000, snacid); |
| 2086 | 153 | |
| 2113 | 154 | if (flags & AIM_WARN_ANON) |
| 155 | outflags |= 0x0001; | |
| 2086 | 156 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
157 | aimbs_put16(&fr->data, outflags); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
158 | aimbs_put8(&fr->data, strlen(destsn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
159 | aimbs_putraw(&fr->data, destsn, strlen(destsn)); |
| 2086 | 160 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
161 | aim_tx_enqueue(sess, fr); |
| 2086 | 162 | |
| 2113 | 163 | return 0; |
| 2086 | 164 | } |
| 165 | ||
| 166 | /* | |
| 167 | * Generic routine for sending commands. | |
| 168 | * | |
| 169 | * | |
| 170 | * I know I can do this in a smarter way...but I'm not thinking straight | |
| 171 | * right now... | |
| 172 | * | |
| 173 | * I had one big function that handled all three cases, but then it broke | |
| 174 | * and I split it up into three. But then I fixed it. I just never went | |
| 175 | * back to the single. I don't see any advantage to doing it either way. | |
| 176 | * | |
| 177 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
178 | faim_internal int aim_genericreq_n(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype) |
| 2086 | 179 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
180 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
181 | aim_snacid_t snacid = 0x00000000; |
| 2086 | 182 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
183 | 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
|
184 | return -ENOMEM; |
| 2086 | 185 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
186 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
| 2086 | 187 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
188 | aim_tx_enqueue(sess, fr); |
| 2086 | 189 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
190 | return 0; |
| 2086 | 191 | } |
| 192 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
193 | faim_internal int aim_genericreq_n_snacid(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype) |
| 2086 | 194 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
195 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
196 | aim_snacid_t snacid; |
| 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))) |
|
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, family, subtype, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
202 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
| 2086 | 203 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
204 | aim_tx_enqueue(sess, fr); |
| 2086 | 205 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
206 | return 0; |
| 2086 | 207 | } |
| 208 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
209 | faim_internal int aim_genericreq_l(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype, fu32_t *longdata) |
| 2086 | 210 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
211 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
212 | aim_snacid_t snacid; |
| 2086 | 213 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
214 | if (!longdata) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
215 | return aim_genericreq_n(sess, conn, family, subtype); |
| 2086 | 216 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
217 | 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
|
218 | return -ENOMEM; |
| 2086 | 219 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
220 | snacid = aim_cachesnac(sess, family, subtype, 0x0000, NULL, 0); |
| 2086 | 221 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
222 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
223 | aimbs_put32(&fr->data, *longdata); |
| 2086 | 224 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
225 | aim_tx_enqueue(sess, fr); |
| 2086 | 226 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
227 | return 0; |
| 2086 | 228 | } |
| 229 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
230 | faim_internal int aim_genericreq_s(aim_session_t *sess, aim_conn_t *conn, fu16_t family, fu16_t subtype, fu16_t *shortdata) |
| 2086 | 231 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
232 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
233 | aim_snacid_t snacid; |
| 2086 | 234 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
235 | if (!shortdata) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
236 | return aim_genericreq_n(sess, conn, family, subtype); |
| 2086 | 237 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
238 | 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
|
239 | return -ENOMEM; |
| 2086 | 240 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
241 | snacid = aim_cachesnac(sess, family, subtype, 0x0000, NULL, 0); |
| 2086 | 242 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
243 | aim_putsnac(&fr->data, family, subtype, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
244 | aimbs_put16(&fr->data, *shortdata); |
| 2086 | 245 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
246 | aim_tx_enqueue(sess, fr); |
| 2086 | 247 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
248 | return 0; |
| 2086 | 249 | } |
| 250 | ||
| 251 | /* | |
| 252 | * aim_bos_reqlocaterights() | |
| 253 | * | |
| 254 | * Request Location services rights. | |
| 255 | * | |
| 256 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
257 | faim_export int aim_bos_reqlocaterights(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 258 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
259 | return aim_genericreq_n(sess, conn, 0x0002, 0x0002); |
| 2086 | 260 | } |
| 261 | ||
| 262 | /* | |
| 263 | * 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
|
264 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
265 | * privacy: 1 to allow searching, 0 to disallow. |
| 2086 | 266 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
267 | 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 | 268 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
269 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
270 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
271 | aim_tlvlist_t *tl = NULL; |
| 2086 | 272 | |
| 273 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
274 | aim_addtlvtochain16(&tl, 0x000a, privacy); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
275 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
276 | if (first) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
277 | aim_addtlvtochain_raw(&tl, 0x0001, strlen(first), first); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
278 | if (last) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
279 | aim_addtlvtochain_raw(&tl, 0x0002, strlen(last), last); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
280 | if (middle) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
281 | aim_addtlvtochain_raw(&tl, 0x0003, strlen(middle), middle); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
282 | if (maiden) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
283 | aim_addtlvtochain_raw(&tl, 0x0004, strlen(maiden), maiden); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
284 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
285 | if (state) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
286 | aim_addtlvtochain_raw(&tl, 0x0007, strlen(state), state); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
287 | if (city) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
288 | aim_addtlvtochain_raw(&tl, 0x0008, strlen(city), city); |
| 2086 | 289 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
290 | if (nickname) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
291 | aim_addtlvtochain_raw(&tl, 0x000c, strlen(nickname), nickname); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
292 | if (zip) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
293 | aim_addtlvtochain_raw(&tl, 0x000d, strlen(zip), zip); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
294 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
295 | if (street) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
296 | aim_addtlvtochain_raw(&tl, 0x0021, strlen(street), street); |
| 2086 | 297 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
298 | 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
|
299 | return -ENOMEM; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
300 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
301 | snacid = aim_cachesnac(sess, 0x0002, 0x0009, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
302 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
303 | aim_putsnac(&fr->data, 0x0002, 0x0009, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
304 | aim_writetlvchain(&fr->data, &tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
305 | aim_freetlvchain(&tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
306 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
307 | aim_tx_enqueue(sess, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
308 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
309 | return 0; |
| 2086 | 310 | } |
| 311 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
312 | /* XXX pass these in better */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
313 | 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 | 314 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
315 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
316 | aim_snacid_t snacid; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
317 | aim_tlvlist_t *tl = NULL; |
| 2086 | 318 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
319 | /* ?? privacy ?? */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
320 | aim_addtlvtochain16(&tl, 0x000a, privacy); |
| 2086 | 321 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
322 | if (interest1) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
323 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest1), interest1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
324 | if (interest2) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
325 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest2), interest2); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
326 | if (interest3) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
327 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest3), interest3); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
328 | if (interest4) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
329 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest4), interest4); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
330 | if (interest5) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
331 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest5), interest5); |
| 2086 | 332 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
333 | 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
|
334 | return -ENOMEM; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
335 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
336 | snacid = aim_cachesnac(sess, 0x0002, 0x000f, 0x0000, NULL, 0); |
| 2086 | 337 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
338 | aim_putsnac(&fr->data, 0x0002, 0x000f, 0x0000, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
339 | aim_writetlvchain(&fr->data, &tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
340 | aim_freetlvchain(&tl); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
341 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
342 | aim_tx_enqueue(sess, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
343 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
344 | return 0; |
| 2086 | 345 | } |
| 346 | ||
| 347 | /* | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
348 | * Should be generic enough to handle the errors for all groups. |
| 2086 | 349 | * |
| 350 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
351 | static int generror(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
| 2086 | 352 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
353 | int ret = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
354 | int error = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
355 | aim_rxcallback_t userfunc; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
356 | aim_snac_t *snac2; |
| 2086 | 357 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
358 | snac2 = aim_remsnac(sess, snac->id); |
| 2086 | 359 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
360 | if (aim_bstream_empty(bs)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
361 | error = aimbs_get16(bs); |
| 2086 | 362 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
363 | if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
364 | ret = userfunc(sess, rx, error, snac2 ? snac2->data : NULL); |
| 2086 | 365 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
366 | if (snac2) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
367 | free(snac2->data); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
368 | free(snac2); |
| 2086 | 369 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
370 | return ret; |
| 2086 | 371 | } |
| 372 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
373 | static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
| 2086 | 374 | { |
| 375 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
376 | if (snac->subtype == 0x0001) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
377 | return generror(sess, mod, rx, snac, bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
378 | else if ((snac->family == 0xffff) && (snac->subtype == 0xffff)) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
379 | aim_rxcallback_t userfunc; |
| 2086 | 380 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
381 | if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
382 | return userfunc(sess, rx); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
383 | } |
| 2086 | 384 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
385 | return 0; |
| 2086 | 386 | } |
| 387 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
388 | faim_internal int misc_modfirst(aim_session_t *sess, aim_module_t *mod) |
| 2086 | 389 | { |
| 390 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
391 | mod->family = 0xffff; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
392 | mod->version = 0x0000; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
393 | mod->flags = AIM_MODFLAG_MULTIFAMILY; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
394 | strncpy(mod->name, "misc", sizeof(mod->name)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
395 | mod->snachandler = snachandler; |
| 2086 | 396 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
397 | return 0; |
| 2086 | 398 | } |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
399 | |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
400 |