libpurple/protocols/oscar/family_bos.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 25889
26d9ca30335c
child 30662
6ed7eb99af97
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * Purple's oscar protocol plugin
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
3 * This file is the legal property of its developers.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
4 * Please see the AUTHORS file distributed alongside this file.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
5 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
6 * This library is free software; you can redistribute it and/or
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
8 * License as published by the Free Software Foundation; either
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
9 * version 2 of the License, or (at your option) any later version.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
10 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
11 * This library is distributed in the hope that it will be useful,
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
14 * Lesser General Public License for more details.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
15 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
17 * License along with this library; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17443
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
19 */
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
20
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
21 /*
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
22 * Family 0x0009 - Basic Oscar Service.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
23 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
24 * The functionality of this family has been replaced by SSI.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
25 */
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
26
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
27 #include "oscar.h"
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
28
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
29 #include <string.h>
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
30
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
31 /* Subtype 0x0002 - Request BOS rights. */
13610
b2c15a312144 [gaim-migrate @ 15995]
Mark Doliner <markdoliner@pidgin.im>
parents: 13593
diff changeset
32 void
b2c15a312144 [gaim-migrate @ 15995]
Mark Doliner <markdoliner@pidgin.im>
parents: 13593
diff changeset
33 aim_bos_reqrights(OscarData *od, FlapConnection *conn)
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
34 {
23456
66ab07770438 Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents: 22860
diff changeset
35 aim_genericreq_n_snacid(od, conn, SNAC_FAMILY_BOS, 0x0002);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
36 }
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
37
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
38 /* Subtype 0x0003 - BOS Rights. */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
39 static int rights(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs)
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
40 {
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
41 aim_rxcallback_t userfunc;
17443
bae8548d98b3 Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents: 17280
diff changeset
42 GSList *tlvlist;
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
43 guint16 maxpermits = 0, maxdenies = 0;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
44 int ret = 0;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
45
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
46 /*
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
47 * TLVs follow
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
48 */
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
49 tlvlist = aim_tlvlist_read(bs);
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
50
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
51 /*
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
52 * TLV type 0x0001: Maximum number of buddies on permit list.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
53 */
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
54 if (aim_tlv_gettlv(tlvlist, 0x0001, 1))
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
55 maxpermits = aim_tlv_get16(tlvlist, 0x0001, 1);
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
56
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
57 /*
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
58 * TLV type 0x0002: Maximum number of buddies on deny list.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
59 */
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
60 if (aim_tlv_gettlv(tlvlist, 0x0002, 1))
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
61 maxdenies = aim_tlv_get16(tlvlist, 0x0002, 1);
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
62
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
63 if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
64 ret = userfunc(od, conn, frame, maxpermits, maxdenies);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
65
17443
bae8548d98b3 Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents: 17280
diff changeset
66 aim_tlvlist_free(tlvlist);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
67
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
68 return ret;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
69 }
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
70
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
71 /*
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
72 * Subtype 0x0004 - Set group permission mask.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
73 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
74 * Normally 0x1f (all classes).
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
75 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
76 * The group permission mask allows you to keep users of a certain
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
77 * class or classes from talking to you. The mask should be
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
78 * a bitwise OR of all the user classes you want to see you.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
79 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
80 */
15147
101192282f5d [gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
81 void
101192282f5d [gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
82 aim_bos_setgroupperm(OscarData *od, FlapConnection *conn, guint32 mask)
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
83 {
23456
66ab07770438 Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents: 22860
diff changeset
84 aim_genericreq_l(od, conn, SNAC_FAMILY_BOS, 0x0004, &mask);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
85 }
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
86
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
87 /*
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
88 * Stubtypes 0x0005, 0x0006, 0x0007, and 0x0008 - Modify permit/deny lists.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
89 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
90 * Changes your visibility depending on changetype:
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
91 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
92 * AIM_VISIBILITYCHANGE_PERMITADD: Lets provided list of names see you
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
93 * AIM_VISIBILITYCHANGE_PERMIDREMOVE: Removes listed names from permit list
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
94 * AIM_VISIBILITYCHANGE_DENYADD: Hides you from provided list of names
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
95 * AIM_VISIBILITYCHANGE_DENYREMOVE: Lets list see you again
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
96 *
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 23456
diff changeset
97 * list should be a list of "Buddy Name One&BuddyNameTwo&" etc.
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
98 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
99 * Equivelents to options in WinAIM:
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
100 * - Allow all users to contact me: Send an AIM_VISIBILITYCHANGE_DENYADD
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
101 * with only your name on it.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
102 * - Allow only users on my Buddy List: Send an
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
103 * AIM_VISIBILITYCHANGE_PERMITADD with the list the same as your
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
104 * buddy list
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
105 * - Allow only the uesrs below: Send an AIM_VISIBILITYCHANGE_PERMITADD
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
106 * with everyone listed that you want to see you.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
107 * - Block all users: Send an AIM_VISIBILITYCHANGE_PERMITADD with only
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
108 * yourself in the list
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
109 * - Block the users below: Send an AIM_VISIBILITYCHANGE_DENYADD with
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
110 * the list of users to be blocked
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
111 *
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
112 * XXX ye gods.
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
113 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
114 int aim_bos_changevisibility(OscarData *od, FlapConnection *conn, int changetype, const char *denylist)
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
115 {
22860
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
116 ByteStream bs;
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
117 int packlen = 0;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
118 guint16 subtype;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
119 char *localcpy = NULL, *tmpptr = NULL;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
120 int i;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
121 int listcount;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
122 aim_snacid_t snacid;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
123
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
124 if (!denylist)
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
125 return -EINVAL;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
126
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
127 if (changetype == AIM_VISIBILITYCHANGE_PERMITADD)
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
128 subtype = 0x05;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
129 else if (changetype == AIM_VISIBILITYCHANGE_PERMITREMOVE)
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
130 subtype = 0x06;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
131 else if (changetype == AIM_VISIBILITYCHANGE_DENYADD)
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
132 subtype = 0x07;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
133 else if (changetype == AIM_VISIBILITYCHANGE_DENYREMOVE)
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
134 subtype = 0x08;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
135 else
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
136 return -EINVAL;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
137
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
138 localcpy = g_strdup(denylist);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
139
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
140 listcount = aimutil_itemcnt(localcpy, '&');
22860
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
141 packlen = aimutil_tokslen(localcpy, 99, '&') + listcount-1;
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
142
22860
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
143 byte_stream_new(&bs, packlen);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
144
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
145 for (i = 0; (i < (listcount - 1)) && (i < 99); i++) {
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
146 tmpptr = aimutil_itemindex(localcpy, i, '&');
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
147
22860
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
148 byte_stream_put8(&bs, strlen(tmpptr));
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
149 byte_stream_putstr(&bs, tmpptr);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
150
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
151 g_free(tmpptr);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
152 }
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
153 g_free(localcpy);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
154
23456
66ab07770438 Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents: 22860
diff changeset
155 snacid = aim_cachesnac(od, SNAC_FAMILY_BOS, subtype, 0x0000, NULL, 0);
66ab07770438 Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents: 22860
diff changeset
156 flap_connection_send_snac(od, conn, SNAC_FAMILY_BOS, subtype, 0x0000, snacid, &bs);
22860
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
157
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
158 byte_stream_destroy(&bs);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
159
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
160 return 0;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
161 }
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
162
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
163 static int
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
164 snachandler(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs)
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
165 {
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
166 if (snac->subtype == 0x0003)
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
167 return rights(od, conn, mod, frame, snac, bs);
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
168
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
169 return 0;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
170 }
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
171
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
172 int
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13259
diff changeset
173 bos_modfirst(OscarData *od, aim_module_t *mod)
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
174 {
23456
66ab07770438 Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents: 22860
diff changeset
175 mod->family = SNAC_FAMILY_BOS;
13259
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
176 mod->version = 0x0001;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
177 mod->toolid = 0x0110;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
178 mod->toolversion = 0x0629;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
179 mod->flags = 0;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
180 strncpy(mod->name, "bos", sizeof(mod->name));
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
181 mod->snachandler = snachandler;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
182
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
183 return 0;
9c64f67cbc05 [gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents: 13255
diff changeset
184 }

mercurial