diff -r 7265595dbc3b -r de3dceee742e patch_prosody-0.9.diff --- /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 +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