Software /
code /
prosody
Annotate
plugins/muc/name.lib.lua @ 11590:5aafb832c91b
core.portmanager: Fix race condition in initialization of SNI cert map
Under some circumstances when hosts and modules are loaded in some
certain order, entries end up missing from the SNI map. This manifests
in e.g. `curl https://localhost:5281/` giving an error about
"unrecognized name".
The `service` argument is `nil` when invoked from the "host-activated"
event, leading it to iterating over every service. And then it would not
be fetching e.g. `http_host` from the config, which explains why https
would sometimes not work due to the missing name entry.
Because when `service` is included, this limits the iteration to
matching entries, while also returning the same value as the `name` loop
variable. Because `name == service when service != nil` we can use name
instead in the body of the loop.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 28 May 2021 17:09:22 +0200 |
parent | 11057:13eee48071c8 |
rev | line source |
---|---|
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
1 -- Prosody IM |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
4 -- Copyright (C) 2014 Daurnimator |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
5 -- |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
6 -- This project is MIT/X11 licensed. Please see the |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
7 -- COPYING file in the source package for more information. |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
8 -- |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
9 |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
10 local function get_name(room) |
11057
13eee48071c8
MUC: Don't default room name to JID localpart (API breaking change)
Kim Alvefur <zash@zash.se>
parents:
9034
diff
changeset
|
11 return room._data.name; |
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
12 end |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
13 |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
14 local function set_name(room, name) |
8986
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
15 if name == "" then name = nil; end |
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
16 if room._data.name == name then return false; end |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
17 room._data.name = name; |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
18 return true; |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
19 end |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
20 |
8988
d92b8bc6614c
MUC: Remove empty statement [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8986
diff
changeset
|
21 local function insert_name_into_form(event) |
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
22 table.insert(event.form, { |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
23 name = "muc#roomconfig_roomname"; |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
24 type = "text-single"; |
9034
1c709e3d2e5e
MUC: Improve labels of all config form items
Matthew Wild <mwild1@gmail.com>
parents:
8988
diff
changeset
|
25 label = "Title"; |
8986
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
26 value = event.room._data.name; |
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
27 }); |
8986
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
28 end |
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
29 |
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
30 module:hook("muc-disco#info", function(event) |
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
31 event.reply:tag("identity", {category="conference", type="text", name=get_name(event.room)}):up(); |
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
32 insert_name_into_form(event); |
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
33 end); |
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
34 |
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
35 module:hook("muc-config-form", insert_name_into_form, 100-1); |
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
36 |
6991
84e01dbb739e
MUC: Update all config form handlers to take advantage of the new per-option events
Matthew Wild <mwild1@gmail.com>
parents:
6209
diff
changeset
|
37 module:hook("muc-config-submitted/muc#roomconfig_roomname", function(event) |
84e01dbb739e
MUC: Update all config form handlers to take advantage of the new per-option events
Matthew Wild <mwild1@gmail.com>
parents:
6209
diff
changeset
|
38 if set_name(event.room, event.value) then |
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
39 event.status_codes["104"] = true; |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
40 end |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
41 end); |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
42 |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
43 return { |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
44 get = get_name; |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
45 set = set_name; |
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
46 }; |