patch_prosody-0.9.diff
author Mikael Berthe <mikael@lilotux.net>
Tue, 31 Jul 2012 18:52:47 +0200
changeset 3 de3dceee742e
permissions -rw-r--r--
Add patch for Prosody (dev. tree)

# 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