diff options
author | Paul Aurich <paul@darkrain42.org> | 2009-10-06 11:15:55 +0100 |
---|---|---|
committer | Paul Aurich <paul@darkrain42.org> | 2009-10-06 11:15:55 +0100 |
commit | 1a9c9dd9363ac2af3ea097def64ded9f386f3e0d (patch) | |
tree | 974b72442d86ea69e76154bdc6e632682963dae3 /core | |
parent | d1c758cdfc27b9a57fdd79ff28dd68c9a435b568 (diff) | |
download | prosody-1a9c9dd9363ac2af3ea097def64ded9f386f3e0d.tar.gz prosody-1a9c9dd9363ac2af3ea097def64ded9f386f3e0d.zip |
sessionmanager: Mark client streams as opened sooner to avoid wrapping errors in unnecessary stream tags
Diffstat (limited to 'core')
-rw-r--r-- | core/sessionmanager.lua | 19 |
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) |