aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Aurich <paul@darkrain42.org>2009-10-06 11:15:55 +0100
committerPaul Aurich <paul@darkrain42.org>2009-10-06 11:15:55 +0100
commit1a9c9dd9363ac2af3ea097def64ded9f386f3e0d (patch)
tree974b72442d86ea69e76154bdc6e632682963dae3
parentd1c758cdfc27b9a57fdd79ff28dd68c9a435b568 (diff)
downloadprosody-1a9c9dd9363ac2af3ea097def64ded9f386f3e0d.tar.gz
prosody-1a9c9dd9363ac2af3ea097def64ded9f386f3e0d.zip
sessionmanager: Mark client streams as opened sooner to avoid wrapping errors in unnecessary stream tags
-rw-r--r--core/sessionmanager.lua19
1 files changed, 10 insertions, 9 deletions
diff --git a/core/sessionmanager.lua b/core/sessionmanager.lua
index bc45d104..08e70d44 100644
--- a/core/sessionmanager.lua
+++ b/core/sessionmanager.lua
@@ -169,29 +169,30 @@ function streamopened(session, attr)
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);
-
- send("<?xml version='1.0'?>");
- send(format("<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='%s' from='%s' version='1.0' xml:lang='en'>", session.streamid, session.host));
if not hosts[session.host] then
-- We don't serve this host...
session:close{ condition = "host-unknown", text = "This server does not serve "..tostring(session.host)};
return;
end
-
+
+ send("<?xml version='1.0'?>");
+ send(format("<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='%s' from='%s' version='1.0' xml:lang='en'>", session.streamid, session.host));
+
+ (session.log or log)("debug", "Sent reply <stream:stream> to client");
+ session.notopen = nil;
+
-- If session.secure is *false* (not nil) then it means we /were/ encrypting
-- since we now have a new stream header, session is secured
if session.secure == false then
session.secure = true;
end
-
+
local features = st.stanza("stream:features");
fire_event("stream-features", session, features);
-
+
send(features);
-
- (session.log or log)("debug", "Sent reply <stream:stream> to client");
- session.notopen = nil;
+
end
function streamclosed(session)