Annotate

plugins/muc/hidden.lib.lua @ 8528:67311cda0625

net.server_select: Better detection of errors for outgoing connections On connection failure, a socket is marked readable and writable. So to detect initial connection failures (connection refused, etc.) we now watch for sockets becoming readable during initial connection, and also read from readable sockets before writing to writable sockets. This should fix 'onconnect' being called for outgoing connections that actually failed.
author Matthew Wild <mwild1@gmail.com>
date Fri, 23 Feb 2018 15:30:00 +0000
parent 7401:e16b3fd0bd80
child 9034:1c709e3d2e5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6225
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
1 -- Prosody IM
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
4 -- Copyright (C) 2014 Daurnimator
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
5 --
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
6 -- This project is MIT/X11 licensed. Please see the
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
7 -- COPYING file in the source package for more information.
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
8 --
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
9
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
10 local function get_hidden(room)
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
11 return room._data.hidden;
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
12 end
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
13
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
14 local function set_hidden(room, hidden)
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
15 hidden = hidden and true or nil;
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
16 if get_hidden(room) == hidden then return false; end
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
17 room._data.hidden = hidden;
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
18 return true;
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
19 end
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
20
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
21 module:hook("muc-config-form", function(event)
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
22 table.insert(event.form, {
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
23 name = "muc#roomconfig_publicroom";
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
24 type = "boolean";
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
25 label = "Make Room Publicly Searchable?";
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
26 value = not get_hidden(event.room);
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
27 });
7401
e16b3fd0bd80 MUC: Assign priorities to config form hooks so they have a consistent order on each start
Kim Alvefur <zash@zash.se>
parents: 7353
diff changeset
28 end, 100-5);
6225
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
29
6991
84e01dbb739e MUC: Update all config form handlers to take advantage of the new per-option events
Matthew Wild <mwild1@gmail.com>
parents: 6225
diff changeset
30 module:hook("muc-config-submitted/muc#roomconfig_publicroom", function(event)
84e01dbb739e MUC: Update all config form handlers to take advantage of the new per-option events
Matthew Wild <mwild1@gmail.com>
parents: 6225
diff changeset
31 if set_hidden(event.room, not event.value) then
6225
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
32 event.status_codes["104"] = true;
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
33 end
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
34 end);
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
35
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
36 module:hook("muc-disco#info", function(event)
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
37 event.reply:tag("feature", {var = get_hidden(event.room) and "muc_hidden" or "muc_public"}):up();
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
38 end);
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
39
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
40 return {
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
41 get = get_hidden;
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
42 set = set_hidden;
12537f1c1fec plugins/muc: Move 'hidden' ('public') code to own file
daurnimator <quae@daurnimator.com>
parents:
diff changeset
43 };