Diff

core/s2smanager.lua @ 2426:4cef9808662a

s2smanager: Split sending of stream header into a :open_stream() method
author Matthew Wild <mwild1@gmail.com>
date Sat, 09 Jan 2010 06:53:23 +0000
parent 2422:affeb565b050
child 2469:9e0c0b08f219
line wrap: on
line diff
--- a/core/s2smanager.lua	Thu Jan 07 01:26:01 2010 +0000
+++ b/core/s2smanager.lua	Sat Jan 09 06:53:23 2010 +0000
@@ -150,7 +150,8 @@
 
 function new_outgoing(from_host, to_host, connect)
 		local host_session = { to_host = to_host, from_host = from_host, host = from_host,
-		                       notopen = true, type = "s2sout_unauthed", direction = "outgoing" };
+		                       notopen = true, type = "s2sout_unauthed", direction = "outgoing",
+		                       open_stream = session_open_stream };
 		
 		hosts[from_host].s2sout[to_host] = host_session;
 		
@@ -326,7 +327,8 @@
 	local w, log = conn.write, host_session.log;
 	host_session.sends2s = function (t) log("debug", "sending: %s", (t.top_tag and t:top_tag()) or t:match("^[^>]*>?")); w(conn, tostring(t)); end
 	
-	conn:write(format([[<stream:stream xmlns='jabber:server' xmlns:db='jabber:server:dialback' xmlns:stream='http://etherx.jabber.org/streams' from='%s' to='%s' version='1.0' xml:lang='en'>]], from_host, to_host));
+	host_session:open_stream();
+	
 	log("debug", "Connection attempt in progress...");
 	add_task(connect_timeout, function ()
 		if host_session.conn ~= conn or
@@ -342,6 +344,13 @@
 	return true;
 end
 
+function session_open_stream(session, from, to)
+	session.sends2s(st.stanza("stream:stream", {
+		xmlns='jabber:server', ["xmlns:db"]='jabber:server:dialback',
+		["xmlns:stream"]='http://etherx.jabber.org/streams',
+		from=from, to=to, version='1.0', ["xml:lang"]='en'}):top_tag());
+end
+
 function streamopened(session, attr)
 	local send = session.sends2s;