net.xmppcomponent_listener: Move session creation from listener.onincoming to listener.onconnect.

Wed, 15 Dec 2010 03:33:00 +0500

author
Waqas Hussain <waqas20@gmail.com>
date
Wed, 15 Dec 2010 03:33:00 +0500
changeset 3872
cbfa3ab250f7
parent 3871
2305d3139fb9
child 3873
9bc569083226

net.xmppcomponent_listener: Move session creation from listener.onincoming to listener.onconnect.

net/xmppcomponent_listener.lua file | annotate | diff | comparison | revisions
--- a/net/xmppcomponent_listener.lua	Wed Dec 15 03:14:15 2010 +0500
+++ b/net/xmppcomponent_listener.lua	Wed Dec 15 03:33:00 2010 +0500
@@ -165,46 +165,42 @@
 end
 
 --- Component connlistener
+function component_listener.onconnect(conn)
+	local _send = conn.write;
+	local session = { type = "component", conn = conn, send = function (data) return _send(conn, tostring(data)); end };
+
+	-- Logging functions --
+	local conn_name = "jcp"..tostring(conn):match("[a-f0-9]+$");
+	session.log = logger.init(conn_name);
+	session.close = session_close;
+	
+	session.log("info", "Incoming Jabber component connection");
+	
+	local stream = new_xmpp_stream(session, stream_callbacks);
+	session.stream = stream;
+	
+	session.notopen = true;
+	
+	function session.reset_stream()
+		session.notopen = true;
+		session.stream:reset();
+	end
+
+	function session.data(conn, data)
+		local ok, err = stream:feed(data);
+		if ok then return; end
+		log("debug", "Received invalid XML (%s) %d bytes: %s", tostring(err), #data, data:sub(1, 300):gsub("[\r\n]+", " "):gsub("[%z\1-\31]", "_"));
+		session:close("not-well-formed");
+	end
+	
+	session.dispatch_stanza = stream_callbacks.handlestanza;
+
+	sessions[conn] = session;
+end
 function component_listener.onincoming(conn, data)
 	local session = sessions[conn];
-	if not session then
-		local _send = conn.write;
-		session = { type = "component", conn = conn, send = function (data) return _send(conn, tostring(data)); end };
-		sessions[conn] = session;
-
-		-- Logging functions --
-		
-		local conn_name = "jcp"..tostring(conn):match("[a-f0-9]+$");
-		session.log = logger.init(conn_name);
-		session.close = session_close;
-		
-		session.log("info", "Incoming Jabber component connection");
-		
-		local stream = new_xmpp_stream(session, stream_callbacks);
-		session.stream = stream;
-		
-		session.notopen = true;
-		
-		function session.reset_stream()
-			session.notopen = true;
-			session.stream:reset();
-		end
-	
-		function session.data(conn, data)
-			local ok, err = stream:feed(data);
-			if ok then return; end
-			log("debug", "Received invalid XML (%s) %d bytes: %s", tostring(err), #data, data:sub(1, 300):gsub("[\r\n]+", " "):gsub("[%z\1-\31]", "_"));
-			session:close("not-well-formed");
-		end
-		
-		session.dispatch_stanza = stream_callbacks.handlestanza;
-		
-	end
-	if data then
-		session.data(conn, data);
-	end
+	session.data(conn, data);
 end
-	
 function component_listener.ondisconnect(conn, err)
 	local session = sessions[conn];
 	if session then

mercurial