Software /
code /
prosody
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 |
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 }; |