patch_prosody-0.9.diff
changeset 3 de3dceee742e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patch_prosody-0.9.diff	Tue Jul 31 18:52:47 2012 +0200
@@ -0,0 +1,97 @@
+# HG changeset patch
+# User Mikael Berthe <mikael@lilotux.net>
+mod_admin_telnet: introduce a global function console_incoming_message()
+This patch moves code from console_listener.onincoming() into a new global
+function so that it can be used in other modules.
+
+diff -r 9962fc19f9e9 plugins/mod_admin_telnet.lua
+--- a/plugins/mod_admin_telnet.lua	Sat Jul 28 01:28:14 2012 +0100
++++ b/plugins/mod_admin_telnet.lua	Sat Jul 28 18:14:31 2012 +0200
+@@ -72,19 +72,7 @@ function console:new_session(conn)
+ 	return session;
+ end
+ 
+-local sessions = {};
+-
+-function console_listener.onconnect(conn)
+-	-- Handle new connection
+-	local session = console:new_session(conn);
+-	sessions[conn] = session;
+-	printbanner(session);
+-	session.send(string.char(0));
+-end
+-
+-function console_listener.onincoming(conn, data)
+-	local session = sessions[conn];
+-
++function console_incoming_message(session, data)
+ 	local partial = session.partial_data;
+ 	if partial then
+ 		data = partial..data;
+@@ -110,7 +98,7 @@ function console_listener.onincoming(con
+ 			end
+ 
+ 			session.env._ = line;
+-			
++
+ 			local chunkname = "=console";
+ 			local env = (useglobalenv and redirect_output(_G, session)) or session.env or nil
+ 			local chunk, err = envload("return "..line, chunkname, env);
+@@ -124,20 +112,20 @@ function console_listener.onincoming(con
+ 					break;
+ 				end
+ 			end
+-		
++
+ 			local ranok, taskok, message = pcall(chunk);
+-			
++
+ 			if not (ranok or message or useglobalenv) and commands[line:lower()] then
+ 				commands[line:lower()](session, line);
+ 				break;
+ 			end
+-			
++
+ 			if not ranok then
+ 				session.print("Fatal error while running command, it did not complete");
+ 				session.print("Error: "..taskok);
+ 				break;
+ 			end
+-			
++
+ 			if not message then
+ 				session.print("Result: "..tostring(taskok));
+ 				break;
+@@ -146,15 +134,30 @@ function console_listener.onincoming(con
+ 				session.print("Message: "..tostring(message));
+ 				break;
+ 			end
+-			
++
+ 			session.print("OK: "..tostring(message));
+ 		until true
+-		
++
+ 		session.send(string.char(0));
+ 	end
+ 	session.partial_data = data:match("[^\n]+$");
+ end
+ 
++local sessions = {};
++
++function console_listener.onconnect(conn)
++	-- Handle new connection
++	local session = console:new_session(conn);
++	sessions[conn] = session;
++	printbanner(session);
++	session.send(string.char(0));
++end
++
++function console_listener.onincoming(conn, data)
++	local session = sessions[conn];
++	console_incoming_message(session, data);
++end
++
+ function console_listener.ondisconnect(conn, err)
+ 	local session = sessions[conn];
+ 	if session then