aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2018-05-30 21:55:09 +0100
committerMatthew Wild <mwild1@gmail.com>2018-05-30 21:55:09 +0100
commitb294f1695c9f638bfb17a97cf6fdae06bd5aed4b (patch)
treec11212fdc293b35e1989e38b7e51ded86d2ad267 /plugins
parent41e736bbb5e097bfde3d4b7590614912852cc445 (diff)
parent99869528ca582fe67a4d2cee06f0923292d93ac7 (diff)
downloadprosody-b294f1695c9f638bfb17a97cf6fdae06bd5aed4b.tar.gz
prosody-b294f1695c9f638bfb17a97cf6fdae06bd5aed4b.zip
Merge 0.9->0.100.10.2
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_c2s.lua11
1 files changed, 9 insertions, 2 deletions
diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua
index 8bcce6d8..7f0d1b01 100644
--- a/plugins/mod_c2s.lua
+++ b/plugins/mod_c2s.lua
@@ -49,12 +49,19 @@ local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'};
function stream_callbacks.streamopened(session, attr)
local send = session.send;
- session.host = nameprep(attr.to);
- if not session.host then
+ local host = nameprep(attr.to);
+ if not host then
session:close{ condition = "improper-addressing",
text = "A valid 'to' attribute is required on stream headers" };
return;
end
+ if not session.host then
+ session.host = host;
+ elseif session.host ~= host then
+ session:close{ condition = "not-authorized",
+ text = "The 'to' attribute must remain the same across stream restarts" };
+ return;
+ end
session.version = tonumber(attr.version) or 0;
session.streamid = uuid_generate();
(session.log or session)("debug", "Client sent opening <stream:stream> to %s", session.host);