Changeset

1929:b8e6764ffefd

sessionmanager: Mark client streams as opened sooner to avoid wrapping errors in unnecessary stream tags
author Paul Aurich <paul@darkrain42.org>
date Tue, 06 Oct 2009 11:15:55 +0100
parents 1928:d11f07ca0b75
children 1930:92b78dd346ca
files core/sessionmanager.lua
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/core/sessionmanager.lua	Tue Oct 06 11:02:33 2009 +0100
+++ b/core/sessionmanager.lua	Tue Oct 06 11:15:55 2009 +0100
@@ -169,29 +169,30 @@
 	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)