# HG changeset patch
# User Matthew Wild <mwild1@gmail.com>
# Date 1275478344 -3600
# Node ID 9630cb97cd3e125254381fca2fd8ef3d27e56440
# Parent  f29a297471e306cd48c7128b5376c41caa688d6a
xmppclient_listener: Port to onconnect handler

diff -r f29a297471e3 -r 9630cb97cd3e net/xmppclient_listener.lua
--- a/net/xmppclient_listener.lua	Wed Jun 02 12:24:07 2010 +0100
+++ b/net/xmppclient_listener.lua	Wed Jun 02 12:32:24 2010 +0100
@@ -111,45 +111,46 @@
 
 -- End of session methods --
 
+function xmppclient.onconnect(conn)
+	local session = sm_new_session(conn);
+	sessions[conn] = session;
+	
+	session.log("info", "Client connected");
+	
+	-- Client is using legacy SSL (otherwise mod_tls sets this flag)
+	if conn:ssl() then
+		session.secure = true;
+	end
+	
+	if opt_keepalives ~= nil then
+		conn:setoption("keepalive", opt_keepalives);
+	end
+	
+	session.close = session_close;
+	
+	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(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("xml-not-well-formed");
+	end
+	
+	session.dispatch_stanza = stream_callbacks.handlestanza;
+end
+
 function xmppclient.onincoming(conn, data)
 	local session = sessions[conn];
-	if not session then
-		session = sm_new_session(conn);
-		sessions[conn] = session;
-
-		session.log("info", "Client connected");
-		
-		-- Client is using legacy SSL (otherwise mod_tls sets this flag)
-		if conn:ssl() then
-			session.secure = true;
-		end
-		
-		if opt_keepalives ~= nil then
-			conn:setoption("keepalive", opt_keepalives);
-		end
-		
-		session.close = session_close;
-		
-		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(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("xml-not-well-formed");
-		end
-		
-		session.dispatch_stanza = stream_callbacks.handlestanza;
-	end
-	if data then
+	if session then
 		session.data(data);
 	end
 end