diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-05-05 17:22:43 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-05-05 17:22:43 +0100 |
commit | 28942eed12a9d77431cf4b78814deb63356c751a (patch) | |
tree | 5fb75594be09f8b1842028d282e90a0ed19a669c | |
parent | 1dce4a3033300f40a4b74b286162bab34337f9bb (diff) | |
parent | 4af6813db9ffa6dcacd2eb20417ca4667159f9af (diff) | |
download | prosody-28942eed12a9d77431cf4b78814deb63356c751a.tar.gz prosody-28942eed12a9d77431cf4b78814deb63356c751a.zip |
Merge 0.7->trunk
-rw-r--r-- | net/server_select.lua | 2 | ||||
-rw-r--r-- | plugins/mod_console.lua | 124 |
2 files changed, 63 insertions, 63 deletions
diff --git a/net/server_select.lua b/net/server_select.lua index 8a4d917d..e66f105b 100644 --- a/net/server_select.lua +++ b/net/server_select.lua @@ -632,7 +632,7 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport listeners.onconnect(handler); handler.sendbuffer = _sendbuffer; if bufferqueuelen > 0 then - return _senddbuffer(); + return _sendbuffer(); end end end diff --git a/plugins/mod_console.lua b/plugins/mod_console.lua index 8f574704..4457a2f3 100644 --- a/plugins/mod_console.lua +++ b/plugins/mod_console.lua @@ -53,76 +53,76 @@ end local sessions = {}; +function console_listener.onconnect(conn) + -- Handle new connection + local session = console:new_session(conn); + sessions[conn] = session; + printbanner(session); +end + function console_listener.onincoming(conn, data) local session = sessions[conn]; - - if not session then - -- Handle new connection - session = console:new_session(conn); - sessions[conn] = session; - printbanner(session); - end - if data then - -- Handle data - (function(session, data) - local useglobalenv; - - if data:match("^>") then - data = data:gsub("^>", ""); - useglobalenv = true; - elseif data == "\004" then - commands["bye"](session, data); + + -- Handle data + (function(session, data) + local useglobalenv; + + if data:match("^>") then + data = data:gsub("^>", ""); + useglobalenv = true; + elseif data == "\004" then + commands["bye"](session, data); + return; + else + local command = data:lower(); + command = data:match("^%w+") or data:match("%p"); + if commands[command] then + commands[command](session, data); return; - else - local command = data:lower(); - command = data:match("^%w+") or data:match("%p"); - if commands[command] then - commands[command](session, data); - return; - end end + end - session.env._ = data; - - local chunk, err = loadstring("return "..data); + session.env._ = data; + + local chunk, err = loadstring("return "..data); + if not chunk then + chunk, err = loadstring(data); if not chunk then - chunk, err = loadstring(data); - if not chunk then - err = err:gsub("^%[string .-%]:%d+: ", ""); - err = err:gsub("^:%d+: ", ""); - err = err:gsub("'<eof>'", "the end of the line"); - session.print("Sorry, I couldn't understand that... "..err); - return; - end - end - - setfenv(chunk, (useglobalenv and redirect_output(_G, session)) or session.env or nil); - - local ranok, taskok, message = pcall(chunk); - - if not (ranok or message or useglobalenv) and commands[data:lower()] then - commands[data:lower()](session, data); + err = err:gsub("^%[string .-%]:%d+: ", ""); + err = err:gsub("^:%d+: ", ""); + err = err:gsub("'<eof>'", "the end of the line"); + session.print("Sorry, I couldn't understand that... "..err); return; end - - if not ranok then - session.print("Fatal error while running command, it did not complete"); - session.print("Error: "..taskok); - return; - end - - if not message then - session.print("Result: "..tostring(taskok)); - return; - elseif (not taskok) and message then - session.print("Command completed with a problem"); - session.print("Message: "..tostring(message)); - return; - end - - session.print("OK: "..tostring(message)); - end)(session, data); - end + end + + setfenv(chunk, (useglobalenv and redirect_output(_G, session)) or session.env or nil); + + local ranok, taskok, message = pcall(chunk); + + if not (ranok or message or useglobalenv) and commands[data:lower()] then + commands[data:lower()](session, data); + return; + end + + if not ranok then + session.print("Fatal error while running command, it did not complete"); + session.print("Error: "..taskok); + return; + end + + if not message then + session.print("Result: "..tostring(taskok)); + return; + elseif (not taskok) and message then + session.print("Command completed with a problem"); + session.print("Message: "..tostring(message)); + return; + end + + session.print("OK: "..tostring(message)); + end)(session, data); + session.send(string.char(0)); end |