Wed, 26 Feb 2003 05:01:37 +0000
[gaim-migrate @ 4908]
Big Changes:
-Rewrote some of the perl stuff so perl scripts can change a few of their
parameters
-Receiving a file with AIM over oscar works pretty well
Now, the "nitty gritty":
Very minor change to prefs.c: In the plugins details tab, I changed "URL"
to "Web Site." I was just going to fix the tabbing, but silvestrij
suggested changing it to "Web site," and I thought that sounded good.
I think it fits better, too. I dunno, maybe that's just me.
"Get Capabilities" has stopped working for some reason. I'm just going to
blame AOL. It's really not important anyway, and some people wanted it
taken off. It is now #ifdef 0'ed out. I'll remove it completely if it
continues to no longer function.
I took out a few plugin_event calls from oscar.c and put them in core code.
"event_error" should be, uh, "evented" when there is an error signing on.
Hopefully no one was using this. It's really pretty useless. The parameter
is now the reason for not being able to connect rather than the archaic
toc error code.
I screwed around with how perl functions are called some. There was way the
hell too much malloc'ing going on here. I think all in all it's an
improvement, though I'm still not a big fan of how changes to parameters
propagate to the actual memory.
I really think it would be nice if the perl stuff was made into a C plugin.
It's just so much cleaner. Especially if someone wanted to write, say, a
python or tcl interpreter. That's how xchat2 does it. I just think that
would be really slick. Like butter. Or ice. Very unlike Velcro.
I added a "Change Password" Protocol Action for ICQ over oscar. This was
really pretty easy. I'd like to thank my housemate Andrew for complaining
a lot that having to use Windows ICQ to change his password was a pain.
I rewrote a lot of the oscar file transfer stuff to use Christian's new
xfer interface. This involved moving a few functions from ft.c to im.c,
where they belong. I also removed all the #if 0'ed getfile functions.
I'll be rewritting them soonish. Receiving a file should work perfectly,
aside from maybe a small memleak when stuff is canceled. Sending a file is
currently disabled. No ETA on when I'll have that working.
I renamed pretty much all of the functions in im.c so they have kind of a
scheme now. They should all be aim_im_bleh, since "im" is the family
name. There comes a time when you must break the crap out of any clients
that might be using libfaim in order to make stuff cleaner. Maybe.
I got rid of the snac destructor stuff for now. I'll probably add it back
later. I wasn't entirely comfortable with how it was done.
| 2086 | 1 | /* |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
2 | * Family 0x0002 - Information. |
| 2086 | 3 | * |
| 4 | * The functions here are responsible for requesting and parsing information- | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
5 | * gathering SNACs. Or something like that. |
| 2086 | 6 | * |
| 7 | */ | |
| 8 | ||
| 9 | #define FAIM_INTERNAL | |
| 10 | #include <aim.h> | |
|
4156
250bf7504ebf
[gaim-migrate @ 4384]
Herman Bloggs <herman@bluedigits.com>
parents:
4151
diff
changeset
|
11 | #ifdef _WIN32 |
|
250bf7504ebf
[gaim-migrate @ 4384]
Herman Bloggs <herman@bluedigits.com>
parents:
4151
diff
changeset
|
12 | #include "win32dep.h" |
|
250bf7504ebf
[gaim-migrate @ 4384]
Herman Bloggs <herman@bluedigits.com>
parents:
4151
diff
changeset
|
13 | #endif |
| 2086 | 14 | |
| 15 | struct aim_priv_inforeq { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
16 | char sn[MAXSNLEN+1]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
17 | fu16_t infotype; |
| 2086 | 18 | }; |
| 19 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
20 | /* |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
21 | * Subtype 0x0002 |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
22 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
23 | * Request Location services rights. |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
24 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
25 | */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
26 | faim_export int aim_bos_reqlocaterights(aim_session_t *sess, aim_conn_t *conn) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
27 | { |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
28 | return aim_genericreq_n(sess, conn, 0x0002, 0x0002); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
29 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
30 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
31 | /* |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
32 | * Subtype 0x0004 |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
33 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
34 | * Gives BOS your profile. |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
35 | * |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
36 | * profile_encoding and awaymsg_encoding MUST be set if profile or |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
37 | * away are set, respectively, and their value may or may not be |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
38 | * restricted to a few choices. I am currently aware of: |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
39 | * |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
40 | * us-ascii Just that |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
41 | * unicode-2-0 UCS2-BE |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
42 | * |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
43 | * profile_len and awaymsg_len MUST be set similarly, and they MUST |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
44 | * be the length of their respective strings in bytes. |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
45 | * |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
46 | * To get the previous behavior of awaymsg == "" un-setting the away |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
47 | * message, set awaymsg non-NULL and awaymsg_len to 0 (this is the |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
48 | * obvious equivalent). |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
49 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
50 | */ |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
51 | faim_export int aim_bos_setprofile(aim_session_t *sess, aim_conn_t *conn, |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
52 | const char *profile_encoding, const char *profile, const int profile_len, |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
53 | const char *awaymsg_encoding, const char *awaymsg, const int awaymsg_len, |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
54 | fu32_t caps) |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
55 | { |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
56 | static const char defencoding[] = {"text/aolrtf; charset=\"%s\""}; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
57 | aim_frame_t *fr; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
58 | aim_tlvlist_t *tl = NULL; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
59 | aim_snacid_t snacid; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
60 | char *encoding; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
61 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
62 | if ((profile && profile_encoding == NULL) || (awaymsg && awaymsg_len && awaymsg_encoding == NULL)) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
63 | return -EINVAL; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
64 | } |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
65 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
66 | /* Build to packet first to get real length */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
67 | if (profile) { |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
68 | /* no + 1 here because of %s */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
69 | encoding = malloc(strlen(defencoding) + strlen(profile_encoding)); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
70 | if (encoding == NULL) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
71 | return -ENOMEM; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
72 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
73 | snprintf(encoding, strlen(defencoding) + strlen(profile_encoding), defencoding, profile_encoding); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
74 | aim_addtlvtochain_raw(&tl, 0x0001, strlen(encoding), encoding); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
75 | aim_addtlvtochain_raw(&tl, 0x0002, profile_len, profile); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
76 | free(encoding); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
77 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
78 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
79 | /* |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
80 | * So here's how this works: |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
81 | * - You are away when you have a non-zero-length type 4 TLV stored. |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
82 | * - You become unaway when you clear the TLV with a zero-length |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
83 | * type 4 TLV. |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
84 | * - If you do not send the type 4 TLV, your status does not change |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
85 | * (that is, if you were away, you'll remain away). |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
86 | */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
87 | if (awaymsg) { |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
88 | if (awaymsg_len) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
89 | encoding = malloc(strlen(defencoding) + strlen(awaymsg_encoding)); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
90 | if (encoding == NULL) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
91 | return -ENOMEM; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
92 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
93 | snprintf(encoding, strlen(defencoding) + strlen(awaymsg_encoding), defencoding, awaymsg_encoding); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
94 | aim_addtlvtochain_raw(&tl, 0x0003, strlen(encoding), encoding); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
95 | aim_addtlvtochain_raw(&tl, 0x0004, awaymsg_len, awaymsg); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
96 | free(encoding); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
97 | } else |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
98 | aim_addtlvtochain_noval(&tl, 0x0004); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
99 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
100 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
101 | aim_addtlvtochain_caps(&tl, 0x0005, caps); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
102 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
103 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10 + aim_sizetlvchain(&tl)))) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
104 | return -ENOMEM; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
105 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
106 | snacid = aim_cachesnac(sess, 0x0002, 0x0004, 0x0000, NULL, 0); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
107 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
108 | aim_putsnac(&fr->data, 0x0002, 0x004, 0x0000, snacid); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
109 | aim_writetlvchain(&fr->data, &tl); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
110 | aim_freetlvchain(&tl); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
111 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
112 | aim_tx_enqueue(sess, fr); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
113 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
114 | return 0; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
115 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
116 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
117 | /* |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
118 | * Subtype 0x0005 - Request info of another AIM user. |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
119 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
120 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
121 | faim_export int aim_getinfo(aim_session_t *sess, aim_conn_t *conn, const char *sn, fu16_t infotype) |
| 2086 | 122 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
123 | struct aim_priv_inforeq privdata; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
124 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
125 | aim_snacid_t snacid; |
| 2086 | 126 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
127 | if (!sess || !conn || !sn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
128 | return -EINVAL; |
| 2086 | 129 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
130 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 12+1+strlen(sn)))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
131 | return -ENOMEM; |
| 2086 | 132 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
133 | strncpy(privdata.sn, sn, sizeof(privdata.sn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
134 | privdata.infotype = infotype; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
135 | snacid = aim_cachesnac(sess, 0x0002, 0x0005, 0x0000, &privdata, sizeof(struct aim_priv_inforeq)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
136 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
137 | aim_putsnac(&fr->data, 0x0002, 0x0005, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
138 | aimbs_put16(&fr->data, infotype); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
139 | aimbs_put8(&fr->data, strlen(sn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
140 | aimbs_putraw(&fr->data, sn, strlen(sn)); |
| 2086 | 141 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
142 | aim_tx_enqueue(sess, fr); |
| 2086 | 143 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
144 | return 0; |
| 2086 | 145 | } |
| 146 | ||
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
147 | faim_export const char *aim_userinfo_sn(aim_userinfo_t *ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
148 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
149 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
150 | if (!ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
151 | return NULL; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
152 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
153 | return ui->sn; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
154 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
155 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
156 | faim_export fu16_t aim_userinfo_flags(aim_userinfo_t *ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
157 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
158 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
159 | if (!ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
160 | return 0; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
161 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
162 | return ui->flags; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
163 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
164 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
165 | faim_export fu16_t aim_userinfo_idle(aim_userinfo_t *ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
166 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
167 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
168 | if (!ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
169 | return 0; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
170 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
171 | return ui->idletime; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
172 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
173 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
174 | faim_export float aim_userinfo_warnlevel(aim_userinfo_t *ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
175 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
176 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
177 | if (!ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
178 | return 0.00; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
179 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
180 | return (ui->warnlevel / 10); |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
181 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
182 | |
| 3459 | 183 | faim_export time_t aim_userinfo_createtime(aim_userinfo_t *ui) |
| 184 | { | |
| 185 | ||
| 186 | if (!ui) | |
| 187 | return 0; | |
| 188 | ||
| 189 | return (time_t)ui->createtime; | |
| 190 | } | |
| 191 | ||
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
192 | faim_export time_t aim_userinfo_membersince(aim_userinfo_t *ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
193 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
194 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
195 | if (!ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
196 | return 0; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
197 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
198 | return (time_t)ui->membersince; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
199 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
200 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
201 | faim_export time_t aim_userinfo_onlinesince(aim_userinfo_t *ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
202 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
203 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
204 | if (!ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
205 | return 0; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
206 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
207 | return (time_t)ui->onlinesince; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
208 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
209 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
210 | faim_export fu32_t aim_userinfo_sessionlen(aim_userinfo_t *ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
211 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
212 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
213 | if (!ui) |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
214 | return 0; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
215 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
216 | return ui->sessionlen; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
217 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
218 | |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
219 | faim_export int aim_userinfo_hascap(aim_userinfo_t *ui, fu32_t cap) |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
220 | { |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
221 | |
| 2993 | 222 | if (!ui || !(ui->present & AIM_USERINFO_PRESENT_CAPABILITIES)) |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
223 | return -1; |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
224 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
225 | return !!(ui->capabilities & cap); |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
226 | } |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
227 | |
|
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
228 | |
| 2086 | 229 | /* |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
230 | * Capability blocks. |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
231 | * |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
232 | * These are CLSIDs. They should actually be of the form: |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
233 | * |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
234 | * {0x0946134b, 0x4c7f, 0x11d1, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
235 | * {0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}}, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
236 | * |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
237 | * But, eh. |
| 2086 | 238 | */ |
| 239 | static const struct { | |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
240 | fu32_t flag; |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
241 | fu8_t data[16]; |
| 2086 | 242 | } aim_caps[] = { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
243 | |
| 2669 | 244 | /* |
| 245 | * Chat is oddball. | |
| 246 | */ | |
| 247 | {AIM_CAPS_CHAT, | |
| 248 | {0x74, 0x8f, 0x24, 0x20, 0x62, 0x87, 0x11, 0xd1, | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
249 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
250 | |
| 2669 | 251 | /* |
| 252 | * These are mostly in order. | |
| 253 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
254 | {AIM_CAPS_VOICE, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
255 | {0x09, 0x46, 0x13, 0x41, 0x4c, 0x7f, 0x11, 0xd1, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
256 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
| 2086 | 257 | |
| 2669 | 258 | {AIM_CAPS_SENDFILE, |
| 259 | {0x09, 0x46, 0x13, 0x43, 0x4c, 0x7f, 0x11, 0xd1, | |
| 260 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, | |
| 261 | ||
| 262 | /* | |
| 263 | * Advertised by the EveryBuddy client. | |
| 264 | */ | |
|
2734
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2672
diff
changeset
|
265 | {AIM_CAPS_ICQ, |
| 2669 | 266 | {0x09, 0x46, 0x13, 0x44, 0x4c, 0x7f, 0x11, 0xd1, |
| 267 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, | |
| 268 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
269 | {AIM_CAPS_IMIMAGE, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
270 | {0x09, 0x46, 0x13, 0x45, 0x4c, 0x7f, 0x11, 0xd1, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
271 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
272 | |
| 2669 | 273 | {AIM_CAPS_BUDDYICON, |
| 274 | {0x09, 0x46, 0x13, 0x46, 0x4c, 0x7f, 0x11, 0xd1, | |
| 275 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, | |
| 276 | ||
| 277 | {AIM_CAPS_SAVESTOCKS, | |
| 278 | {0x09, 0x46, 0x13, 0x47, 0x4c, 0x7f, 0x11, 0xd1, | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
279 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
280 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
281 | {AIM_CAPS_GETFILE, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
282 | {0x09, 0x46, 0x13, 0x48, 0x4c, 0x7f, 0x11, 0xd1, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
283 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
| 2086 | 284 | |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
285 | {AIM_CAPS_ICQSERVERRELAY, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
286 | {0x09, 0x46, 0x13, 0x49, 0x4c, 0x7f, 0x11, 0xd1, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
287 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
288 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
289 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
290 | * Indeed, there are two of these. The former appears to be correct, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
291 | * but in some versions of winaim, the second one is set. Either they |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
292 | * forgot to fix endianness, or they made a typo. It really doesn't |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
293 | * matter which. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
294 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
295 | {AIM_CAPS_GAMES, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
296 | {0x09, 0x46, 0x13, 0x4a, 0x4c, 0x7f, 0x11, 0xd1, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
297 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
298 | {AIM_CAPS_GAMES2, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
299 | {0x09, 0x46, 0x13, 0x4a, 0x4c, 0x7f, 0x11, 0xd1, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
300 | 0x22, 0x82, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
| 2086 | 301 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
302 | {AIM_CAPS_SENDBUDDYLIST, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
303 | {0x09, 0x46, 0x13, 0x4b, 0x4c, 0x7f, 0x11, 0xd1, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
304 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, |
| 2086 | 305 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
306 | /* from ICQ2002a |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
307 | {AIM_CAPS_ICQUNKNOWN2, |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
308 | {0x09, 0x46, 0x13, 0x4e, 0x4c, 0x7f, 0x11, 0xd1, |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
309 | 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
310 | |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
311 | {AIM_CAPS_ICQRTF, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
312 | {0x97, 0xb1, 0x27, 0x51, 0x24, 0x3c, 0x43, 0x34, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
313 | 0xad, 0x22, 0xd6, 0xab, 0xf7, 0x3f, 0x14, 0x92}}, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
314 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
315 | /* supposed to be ICQRTF? |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
316 | {AIM_CAPS_TRILLUNKNOWN, |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
317 | {0x97, 0xb1, 0x27, 0x51, 0x24, 0x3c, 0x43, 0x34, |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
318 | 0xad, 0x22, 0xd6, 0xab, 0xf7, 0x3f, 0x14, 0x09}}, */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
319 | |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
320 | {AIM_CAPS_ICQUNKNOWN, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
321 | {0x2e, 0x7a, 0x64, 0x75, 0xfa, 0xdf, 0x4d, 0xc8, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
322 | 0x88, 0x6f, 0xea, 0x35, 0x95, 0xfd, 0xb6, 0xdf}}, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
323 | |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
324 | {AIM_CAPS_EMPTY, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
325 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
326 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, |
|
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
327 | |
| 2920 | 328 | {AIM_CAPS_TRILLIANCRYPT, |
| 329 | {0xf2, 0xe7, 0xc7, 0xf4, 0xfe, 0xad, 0x4d, 0xfb, | |
| 330 | 0xb2, 0x35, 0x36, 0x79, 0x8b, 0xdf, 0x00, 0x00}}, | |
| 331 | ||
| 2979 | 332 | {AIM_CAPS_APINFO, |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
333 | {0xAA, 0x4A, 0x32, 0xB5, 0xF8, 0x84, 0x48, 0xc6, |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
334 | 0xA3, 0xD7, 0x8C, 0x50, 0x97, 0x19, 0xFD, 0x5B}}, |
| 2979 | 335 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
336 | {AIM_CAPS_LAST} |
| 2086 | 337 | }; |
| 338 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
339 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
340 | * This still takes a length parameter even with a bstream because capabilities |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
341 | * are not naturally bounded. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
342 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
343 | */ |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
344 | faim_internal fu32_t aim_getcap(aim_session_t *sess, aim_bstream_t *bs, int len) |
| 2086 | 345 | { |
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
346 | fu32_t flags = 0; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
347 | int offset; |
| 2086 | 348 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
349 | for (offset = 0; aim_bstream_empty(bs) && (offset < len); offset += 0x10) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
350 | fu8_t *cap; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
351 | int i, identified; |
| 2086 | 352 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
353 | cap = aimbs_getraw(bs, 0x10); |
| 2086 | 354 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
355 | for (i = 0, identified = 0; !(aim_caps[i].flag & AIM_CAPS_LAST); i++) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
356 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
357 | if (memcmp(&aim_caps[i].data, cap, 0x10) == 0) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
358 | flags |= aim_caps[i].flag; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
359 | identified++; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
360 | break; /* should only match once... */ |
| 2086 | 361 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
362 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
363 | } |
| 2086 | 364 | |
| 2920 | 365 | if (!identified) { |
| 366 | faimdprintf(sess, 0, "unknown capability: {%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}\n", | |
| 367 | cap[0], cap[1], cap[2], cap[3], | |
| 368 | cap[4], cap[5], | |
| 369 | cap[6], cap[7], | |
| 370 | cap[8], cap[9], | |
| 371 | cap[10], cap[11], cap[12], cap[13], | |
| 372 | cap[14], cap[15]); | |
| 373 | } | |
| 2086 | 374 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
375 | free(cap); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
376 | } |
| 2086 | 377 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
378 | return flags; |
| 2086 | 379 | } |
| 380 | ||
|
2866
159551b6db88
[gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
381 | faim_internal int aim_putcap(aim_bstream_t *bs, fu32_t caps) |
| 2086 | 382 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
383 | int i; |
| 2086 | 384 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
385 | if (!bs) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
386 | return -EINVAL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
387 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
388 | for (i = 0; aim_bstream_empty(bs); i++) { |
| 2086 | 389 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
390 | if (aim_caps[i].flag == AIM_CAPS_LAST) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
391 | break; |
| 2086 | 392 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
393 | if (caps & aim_caps[i].flag) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
394 | aimbs_putraw(bs, aim_caps[i].data, 0x10); |
| 2086 | 395 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
396 | } |
| 2086 | 397 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
398 | return 0; |
| 2086 | 399 | } |
| 400 | ||
| 3459 | 401 | static void dumptlv(aim_session_t *sess, fu16_t type, aim_bstream_t *bs, fu8_t len) |
| 402 | { | |
| 403 | int i; | |
| 404 | ||
| 405 | if (!sess || !bs || !len) | |
| 406 | return; | |
| 407 | ||
| 408 | faimdprintf(sess, 0, "userinfo: type =0x%04x\n", type); | |
| 409 | faimdprintf(sess, 0, "userinfo: length=0x%04x\n", len); | |
| 410 | ||
| 411 | faimdprintf(sess, 0, "userinfo: value:\n"); | |
| 412 | ||
| 413 | for (i = 0; i < len; i++) { | |
| 414 | if ((i % 8) == 0) | |
| 415 | faimdprintf(sess, 0, "\nuserinfo: "); | |
| 416 | ||
| 417 | faimdprintf(sess, 0, "0x%2x ", aimbs_get8(bs)); | |
| 418 | } | |
| 419 | ||
| 420 | faimdprintf(sess, 0, "\n"); | |
| 421 | ||
| 422 | return; | |
| 423 | } | |
| 424 | ||
| 2086 | 425 | /* |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
426 | * AIM is fairly regular about providing user info. This is a generic |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
427 | * routine to extract it in its standard form. |
| 2086 | 428 | */ |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
429 | faim_internal int aim_extractuserinfo(aim_session_t *sess, aim_bstream_t *bs, aim_userinfo_t *outinfo) |
| 2086 | 430 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
431 | int curtlv, tlvcnt; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
432 | fu8_t snlen; |
| 2086 | 433 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
434 | if (!bs || !outinfo) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
435 | return -EINVAL; |
| 2086 | 436 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
437 | /* Clear out old data first */ |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
438 | memset(outinfo, 0x00, sizeof(aim_userinfo_t)); |
| 2086 | 439 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
440 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
441 | * Screen name. Stored as an unterminated string prepended with a |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
442 | * byte containing its length. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
443 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
444 | snlen = aimbs_get8(bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
445 | aimbs_getrawbuf(bs, outinfo->sn, snlen); |
| 2086 | 446 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
447 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
448 | * Warning Level. Stored as an unsigned short. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
449 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
450 | outinfo->warnlevel = aimbs_get16(bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
451 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
452 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
453 | * TLV Count. Unsigned short representing the number of |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
454 | * Type-Length-Value triples that follow. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
455 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
456 | tlvcnt = aimbs_get16(bs); |
| 2086 | 457 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
458 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
459 | * Parse out the Type-Length-Value triples as they're found. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
460 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
461 | for (curtlv = 0; curtlv < tlvcnt; curtlv++) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
462 | int endpos; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
463 | fu16_t type, length; |
| 2086 | 464 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
465 | type = aimbs_get16(bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
466 | length = aimbs_get16(bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
467 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
468 | endpos = aim_bstream_curpos(bs) + length; |
| 2086 | 469 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
470 | if (type == 0x0001) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
471 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
472 | * Type = 0x0001: User flags |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
473 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
474 | * Specified as any of the following ORed together: |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
475 | * 0x0001 Trial (user less than 60days) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
476 | * 0x0002 Unknown bit 2 |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
477 | * 0x0004 AOL Main Service user |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
478 | * 0x0008 Unknown bit 4 |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
479 | * 0x0010 Free (AIM) user |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
480 | * 0x0020 Away |
|
2315
ddf565f13b41
[gaim-migrate @ 2325]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
481 | * 0x0400 ActiveBuddy |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
482 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
483 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
484 | outinfo->flags = aimbs_get16(bs); |
| 2993 | 485 | outinfo->present |= AIM_USERINFO_PRESENT_FLAGS; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
486 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
487 | } else if (type == 0x0002) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
488 | /* |
| 3459 | 489 | * Type = 0x0002: Account creation time. |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
490 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
491 | * The time/date that the user originally registered for |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
492 | * the service, stored in time_t format. |
| 3459 | 493 | * |
| 494 | * I'm not sure how this differs from type 5 ("member | |
| 495 | * since"). | |
| 496 | * | |
| 497 | * Note: This is the field formerly known as "member | |
| 498 | * since". All these years and I finally found out | |
| 499 | * that I got the name wrong. | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
500 | */ |
| 3459 | 501 | outinfo->createtime = aimbs_get32(bs); |
| 502 | outinfo->present |= AIM_USERINFO_PRESENT_CREATETIME; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
503 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
504 | } else if (type == 0x0003) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
505 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
506 | * Type = 0x0003: On-Since date. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
507 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
508 | * The time/date that the user started their current |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
509 | * session, stored in time_t format. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
510 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
511 | outinfo->onlinesince = aimbs_get32(bs); |
| 2993 | 512 | outinfo->present |= AIM_USERINFO_PRESENT_ONLINESINCE; |
| 2086 | 513 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
514 | } else if (type == 0x0004) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
515 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
516 | * Type = 0x0004: Idle time. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
517 | * |
| 4443 | 518 | * Number of minutes since the user actively used the |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
519 | * service. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
520 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
521 | * Note that the client tells the server when to start |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
522 | * counting idle times, so this may or may not be |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
523 | * related to reality. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
524 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
525 | outinfo->idletime = aimbs_get16(bs); |
| 2993 | 526 | outinfo->present |= AIM_USERINFO_PRESENT_IDLE; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
527 | |
| 3459 | 528 | } else if (type == 0x0005) { |
| 529 | /* | |
| 530 | * Type = 0x0005: Member since date. | |
| 531 | * | |
| 532 | * The time/date that the user originally registered for | |
| 533 | * the service, stored in time_t format. | |
| 534 | * | |
| 535 | * This is sometimes sent instead of type 2 ("account | |
| 536 | * creation time"), particularly in the self-info. | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
537 | * And particularly for ICQ? |
| 3459 | 538 | */ |
| 539 | outinfo->membersince = aimbs_get32(bs); | |
| 540 | outinfo->present |= AIM_USERINFO_PRESENT_MEMBERSINCE; | |
| 2086 | 541 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
542 | } else if (type == 0x0006) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
543 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
544 | * Type = 0x0006: ICQ Online Status |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
545 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
546 | * ICQ's Away/DND/etc "enriched" status. Some decoding |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
547 | * of values done by Scott <darkagl@pcnet.com> |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
548 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
549 | aimbs_get16(bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
550 | outinfo->icqinfo.status = aimbs_get16(bs); |
| 2993 | 551 | outinfo->present |= AIM_USERINFO_PRESENT_ICQEXTSTATUS; |
| 2086 | 552 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
553 | } else if (type == 0x000a) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
554 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
555 | * Type = 0x000a |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
556 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
557 | * ICQ User IP Address. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
558 | * Ahh, the joy of ICQ security. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
559 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
560 | outinfo->icqinfo.ipaddr = aimbs_get32(bs); |
| 2993 | 561 | outinfo->present |= AIM_USERINFO_PRESENT_ICQIPADDR; |
| 2086 | 562 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
563 | } else if (type == 0x000c) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
564 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
565 | * Type = 0x000c |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
566 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
567 | * random crap containing the IP address, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
568 | * apparently a port number, and some Other Stuff. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
569 | * |
| 4342 | 570 | * Format is: |
| 571 | * 4 bytes - Our IP address, 0xc0 a8 01 2b for 192.168.1.43 | |
| 572 | * | |
| 573 | * | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
574 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
575 | aimbs_getrawbuf(bs, outinfo->icqinfo.crap, 0x25); |
| 2993 | 576 | outinfo->present |= AIM_USERINFO_PRESENT_ICQDATA; |
| 2086 | 577 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
578 | } else if (type == 0x000d) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
579 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
580 | * Type = 0x000d |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
581 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
582 | * Capability information. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
583 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
584 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
585 | outinfo->capabilities = aim_getcap(sess, bs, length); |
| 2993 | 586 | outinfo->present |= AIM_USERINFO_PRESENT_CAPABILITIES; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
587 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
588 | } else if (type == 0x000e) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
589 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
590 | * Type = 0x000e |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
591 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
592 | * Unknown. Always of zero length, and always only |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
593 | * on AOL users. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
594 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
595 | * Ignore. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
596 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
597 | */ |
| 2086 | 598 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
599 | } else if ((type == 0x000f) || (type == 0x0010)) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
600 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
601 | * Type = 0x000f: Session Length. (AIM) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
602 | * Type = 0x0010: Session Length. (AOL) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
603 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
604 | * The duration, in seconds, of the user's current |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
605 | * session. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
606 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
607 | * Which TLV type this comes in depends on the |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
608 | * service the user is using (AIM or AOL). |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
609 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
610 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
611 | outinfo->sessionlen = aimbs_get32(bs); |
| 2993 | 612 | outinfo->present |= AIM_USERINFO_PRESENT_SESSIONLEN; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
613 | |
| 3459 | 614 | } else if (type == 0x001d) { |
| 615 | /* | |
| 616 | * Type 29: Unknown. | |
| 617 | * | |
| 618 | * Currently very rare. Always 18 bytes of mostly zero. | |
| 619 | */ | |
| 620 | ||
| 621 | } else if (type == 0x001e) { | |
| 622 | /* | |
| 623 | * Type 30: Unknown. | |
| 624 | * | |
| 625 | * Always four bytes, but it doesn't look like an int. | |
| 626 | */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
627 | } else { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
628 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
629 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
630 | * Reaching here indicates that either AOL has |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
631 | * added yet another TLV for us to deal with, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
632 | * or the parsing has gone Terribly Wrong. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
633 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
634 | * Either way, inform the owner and attempt |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
635 | * recovery. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
636 | * |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
637 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
638 | faimdprintf(sess, 0, "userinfo: **warning: unexpected TLV:\n"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
639 | faimdprintf(sess, 0, "userinfo: sn =%s\n", outinfo->sn); |
| 3459 | 640 | dumptlv(sess, type, bs, length); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
641 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
642 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
643 | /* Save ourselves. */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
644 | aim_bstream_setpos(bs, endpos); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
645 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
646 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
647 | return 0; |
| 2086 | 648 | } |
| 649 | ||
| 650 | /* | |
| 651 | * Inverse of aim_extractuserinfo() | |
| 652 | */ | |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
653 | faim_internal int aim_putuserinfo(aim_bstream_t *bs, aim_userinfo_t *info) |
| 2086 | 654 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
655 | aim_tlvlist_t *tlvlist = NULL; |
| 2086 | 656 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
657 | if (!bs || !info) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
658 | return -EINVAL; |
| 2086 | 659 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
660 | aimbs_put8(bs, strlen(info->sn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
661 | aimbs_putraw(bs, info->sn, strlen(info->sn)); |
| 2086 | 662 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
663 | aimbs_put16(bs, info->warnlevel); |
| 2086 | 664 | |
| 665 | ||
| 3459 | 666 | if (info->present & AIM_USERINFO_PRESENT_FLAGS) |
| 667 | aim_addtlvtochain16(&tlvlist, 0x0001, info->flags); | |
| 668 | if (info->present & AIM_USERINFO_PRESENT_MEMBERSINCE) | |
| 669 | aim_addtlvtochain32(&tlvlist, 0x0002, info->membersince); | |
| 670 | if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) | |
| 671 | aim_addtlvtochain32(&tlvlist, 0x0003, info->onlinesince); | |
| 672 | if (info->present & AIM_USERINFO_PRESENT_IDLE) | |
| 673 | aim_addtlvtochain16(&tlvlist, 0x0004, info->idletime); | |
| 2086 | 674 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
675 | /* XXX - So, ICQ_OSCAR_SUPPORT is never defined anywhere... */ |
| 2086 | 676 | #if ICQ_OSCAR_SUPPORT |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
677 | if (atoi(info->sn) != 0) { |
| 3459 | 678 | if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) |
| 679 | aim_addtlvtochain16(&tlvlist, 0x0006, info->icqinfo.status); | |
| 680 | if (info->present & AIM_USERINFO_PRESENT_ICQIPADDR) | |
| 681 | aim_addtlvtochain32(&tlvlist, 0x000a, info->icqinfo.ipaddr); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
682 | } |
| 2086 | 683 | #endif |
| 684 | ||
| 3459 | 685 | if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES) |
| 686 | aim_addtlvtochain_caps(&tlvlist, 0x000d, info->capabilities); | |
| 687 | ||
| 688 | if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) | |
| 689 | aim_addtlvtochain32(&tlvlist, (fu16_t)((info->flags & AIM_FLAG_AOL) ? 0x0010 : 0x000f), info->sessionlen); | |
| 2086 | 690 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
691 | aimbs_put16(bs, aim_counttlvchain(&tlvlist)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
692 | aim_writetlvchain(bs, &tlvlist); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
693 | aim_freetlvchain(&tlvlist); |
| 2086 | 694 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
695 | return 0; |
| 2086 | 696 | } |
| 697 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
698 | /* |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
699 | * Subtype 0x000b - Huh? What is this? |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
700 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
701 | faim_export int aim_0002_000b(aim_session_t *sess, aim_conn_t *conn, const char *sn) |
| 2086 | 702 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
703 | aim_frame_t *fr; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
704 | aim_snacid_t snacid; |
| 2086 | 705 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
706 | if (!sess || !conn || !sn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
707 | return -EINVAL; |
| 2086 | 708 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
709 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+1+strlen(sn)))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
710 | return -ENOMEM; |
| 2086 | 711 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
712 | snacid = aim_cachesnac(sess, 0x0002, 0x000b, 0x0000, NULL, 0); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
713 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
714 | aim_putsnac(&fr->data, 0x0002, 0x000b, 0x0000, snacid); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
715 | aimbs_put8(&fr->data, strlen(sn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
716 | aimbs_putraw(&fr->data, sn, strlen(sn)); |
| 2086 | 717 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
718 | aim_tx_enqueue(sess, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
719 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
720 | return 0; |
| 2086 | 721 | } |
| 722 | ||
| 2122 | 723 | /* |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
724 | * Subtype 0x0003 |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
725 | * |
| 2122 | 726 | * Normally contains: |
| 727 | * t(0001) - short containing max profile length (value = 1024) | |
| 728 | * t(0002) - short - unknown (value = 16) [max MIME type length?] | |
|
2315
ddf565f13b41
[gaim-migrate @ 2325]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
729 | * t(0003) - short - unknown (value = 10) |
|
3213
7e7765bc6078
[gaim-migrate @ 3230]
Mark Doliner <markdoliner@pidgin.im>
parents:
2993
diff
changeset
|
730 | * t(0004) - short - unknown (value = 2048) [ICQ only?] |
| 2122 | 731 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
732 | static int rights(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
| 2086 | 733 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
734 | aim_tlvlist_t *tlvlist; |
| 2122 | 735 | aim_rxcallback_t userfunc; |
| 736 | int ret = 0; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
737 | fu16_t maxsiglen = 0; |
| 2086 | 738 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
739 | tlvlist = aim_readtlvchain(bs); |
| 2086 | 740 | |
| 2122 | 741 | if (aim_gettlv(tlvlist, 0x0001, 1)) |
| 742 | maxsiglen = aim_gettlv16(tlvlist, 0x0001, 1); | |
| 2086 | 743 | |
| 2122 | 744 | if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
| 745 | ret = userfunc(sess, rx, maxsiglen); | |
| 2086 | 746 | |
| 2122 | 747 | aim_freetlvchain(&tlvlist); |
| 748 | ||
| 749 | return ret; | |
| 2086 | 750 | } |
| 751 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
752 | /* Subtype 0x0006 */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
753 | static int userinfo(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
| 2086 | 754 | { |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
755 | aim_userinfo_t userinfo; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
756 | char *text_encoding = NULL, *text = NULL; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
757 | int textlen = 0; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
758 | aim_rxcallback_t userfunc; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
759 | aim_tlvlist_t *tlvlist; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
760 | aim_tlv_t *text_tlv = NULL; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
761 | aim_snac_t *origsnac = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
762 | struct aim_priv_inforeq *inforeq; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
763 | int ret = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
764 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
765 | origsnac = aim_remsnac(sess, snac->id); |
| 2086 | 766 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
767 | if (!origsnac || !origsnac->data) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
768 | faimdprintf(sess, 0, "parse_userinfo_middle: major problem: no snac stored!\n"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
769 | return 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
770 | } |
| 2086 | 771 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
772 | inforeq = (struct aim_priv_inforeq *)origsnac->data; |
| 2086 | 773 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
774 | if ((inforeq->infotype != AIM_GETINFO_GENERALINFO) && |
| 2920 | 775 | (inforeq->infotype != AIM_GETINFO_AWAYMESSAGE) && |
| 776 | (inforeq->infotype != AIM_GETINFO_CAPABILITIES)) { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
777 | faimdprintf(sess, 0, "parse_userinfo_middle: unknown infotype in request! (0x%04x)\n", inforeq->infotype); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
778 | return 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
779 | } |
| 2086 | 780 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
781 | aim_extractuserinfo(sess, bs, &userinfo); |
| 2086 | 782 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
783 | tlvlist = aim_readtlvchain(bs); |
| 2086 | 784 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
785 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
786 | * Depending on what informational text was requested, different |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
787 | * TLVs will appear here. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
788 | * |
| 2920 | 789 | * Profile will be 1 and 2, away message will be 3 and 4, caps |
| 790 | * will be 5. | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
791 | */ |
| 2920 | 792 | if (inforeq->infotype == AIM_GETINFO_GENERALINFO) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
793 | text_encoding = aim_gettlv_str(tlvlist, 0x0001, 1); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
794 | text_tlv = aim_gettlv(tlvlist, 0x0002, 1); |
| 2920 | 795 | } else if (inforeq->infotype == AIM_GETINFO_AWAYMESSAGE) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
796 | text_encoding = aim_gettlv_str(tlvlist, 0x0003, 1); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
797 | text_tlv = aim_gettlv(tlvlist, 0x0004, 1); |
| 2920 | 798 | } else if (inforeq->infotype == AIM_GETINFO_CAPABILITIES) { |
| 799 | aim_tlv_t *ct; | |
| 800 | ||
| 801 | if ((ct = aim_gettlv(tlvlist, 0x0005, 1))) { | |
| 802 | aim_bstream_t cbs; | |
| 803 | ||
| 804 | aim_bstream_init(&cbs, ct->value, ct->length); | |
| 805 | ||
| 806 | userinfo.capabilities = aim_getcap(sess, &cbs, ct->length); | |
| 2993 | 807 | userinfo.present = AIM_USERINFO_PRESENT_CAPABILITIES; |
| 2920 | 808 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
809 | } |
| 2086 | 810 | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
811 | if (text_tlv) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
812 | text = text_tlv->value; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
813 | textlen = text_tlv->length; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
814 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
815 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
816 | if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4071
diff
changeset
|
817 | ret = userfunc(sess, rx, &userinfo, inforeq->infotype, text_encoding, text, textlen); |
| 2086 | 818 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
819 | free(text_encoding); |
| 2086 | 820 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
821 | aim_freetlvchain(&tlvlist); |
| 2086 | 822 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
823 | if (origsnac) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
824 | free(origsnac->data); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
825 | free(origsnac); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
826 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
827 | return ret; |
| 2086 | 828 | } |
| 829 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
830 | /* |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
831 | * Subtype 0x0009 - Set directory profile data. |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
832 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
833 | * This is not the same as aim_bos_setprofile! |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
834 | * privacy: 1 to allow searching, 0 to disallow. |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
835 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
836 | */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
837 | 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) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
838 | { |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
839 | aim_frame_t *fr; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
840 | aim_snacid_t snacid; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
841 | aim_tlvlist_t *tl = NULL; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
842 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
843 | aim_addtlvtochain16(&tl, 0x000a, privacy); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
844 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
845 | if (first) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
846 | aim_addtlvtochain_raw(&tl, 0x0001, strlen(first), first); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
847 | if (last) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
848 | aim_addtlvtochain_raw(&tl, 0x0002, strlen(last), last); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
849 | if (middle) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
850 | aim_addtlvtochain_raw(&tl, 0x0003, strlen(middle), middle); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
851 | if (maiden) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
852 | aim_addtlvtochain_raw(&tl, 0x0004, strlen(maiden), maiden); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
853 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
854 | if (state) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
855 | aim_addtlvtochain_raw(&tl, 0x0007, strlen(state), state); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
856 | if (city) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
857 | aim_addtlvtochain_raw(&tl, 0x0008, strlen(city), city); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
858 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
859 | if (nickname) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
860 | aim_addtlvtochain_raw(&tl, 0x000c, strlen(nickname), nickname); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
861 | if (zip) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
862 | aim_addtlvtochain_raw(&tl, 0x000d, strlen(zip), zip); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
863 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
864 | if (street) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
865 | aim_addtlvtochain_raw(&tl, 0x0021, strlen(street), street); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
866 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
867 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+aim_sizetlvchain(&tl)))) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
868 | return -ENOMEM; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
869 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
870 | snacid = aim_cachesnac(sess, 0x0002, 0x0009, 0x0000, NULL, 0); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
871 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
872 | aim_putsnac(&fr->data, 0x0002, 0x0009, 0x0000, snacid); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
873 | aim_writetlvchain(&fr->data, &tl); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
874 | aim_freetlvchain(&tl); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
875 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
876 | aim_tx_enqueue(sess, fr); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
877 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
878 | return 0; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
879 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
880 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
881 | /* |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
882 | * Subtype 0x000f |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
883 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
884 | * XXX pass these in better |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
885 | * |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
886 | */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
887 | 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) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
888 | { |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
889 | aim_frame_t *fr; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
890 | aim_snacid_t snacid; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
891 | aim_tlvlist_t *tl = NULL; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
892 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
893 | /* ?? privacy ?? */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
894 | aim_addtlvtochain16(&tl, 0x000a, privacy); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
895 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
896 | if (interest1) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
897 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest1), interest1); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
898 | if (interest2) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
899 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest2), interest2); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
900 | if (interest3) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
901 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest3), interest3); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
902 | if (interest4) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
903 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest4), interest4); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
904 | if (interest5) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
905 | aim_addtlvtochain_raw(&tl, 0x0000b, strlen(interest5), interest5); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
906 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
907 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+aim_sizetlvchain(&tl)))) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
908 | return -ENOMEM; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
909 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
910 | snacid = aim_cachesnac(sess, 0x0002, 0x000f, 0x0000, NULL, 0); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
911 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
912 | aim_putsnac(&fr->data, 0x0002, 0x000f, 0x0000, 0); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
913 | aim_writetlvchain(&fr->data, &tl); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
914 | aim_freetlvchain(&tl); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
915 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
916 | aim_tx_enqueue(sess, fr); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
917 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
918 | return 0; |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
919 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3459
diff
changeset
|
920 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
921 | static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
| 2086 | 922 | { |
| 923 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
924 | if (snac->subtype == 0x0003) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
925 | return rights(sess, mod, rx, snac, bs); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
926 | else if (snac->subtype == 0x0006) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
927 | return userinfo(sess, mod, rx, snac, bs); |
| 2086 | 928 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
929 | return 0; |
| 2086 | 930 | } |
| 931 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
932 | faim_internal int locate_modfirst(aim_session_t *sess, aim_module_t *mod) |
| 2086 | 933 | { |
| 934 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
935 | mod->family = 0x0002; |
| 2672 | 936 | mod->version = 0x0001; |
|
4071
f0c425b22b92
[gaim-migrate @ 4283]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
937 | mod->toolid = 0x0110; |
|
f0c425b22b92
[gaim-migrate @ 4283]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
938 | mod->toolversion = 0x0629; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
939 | mod->flags = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
940 | strncpy(mod->name, "locate", sizeof(mod->name)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
941 | mod->snachandler = snachandler; |
| 2086 | 942 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2122
diff
changeset
|
943 | return 0; |
| 2086 | 944 | } |