aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2008-11-08 20:42:23 +0000
committerMatthew Wild <mwild1@gmail.com>2008-11-08 20:42:23 +0000
commit8b42a2b8d80bcc227274d133067ac58c6a197ca2 (patch)
treeef029b2f8331b03877762a4e207671891b87fc67
parent63808314ef8eb9942afe35fc2e82baf96c94bc92 (diff)
downloadprosody-8b42a2b8d80bcc227274d133067ac58c6a197ca2.tar.gz
prosody-8b42a2b8d80bcc227274d133067ac58c6a197ca2.zip
Committing code to get nicer tracebacks for errors, also we no longer consider such errors fatal (probably a bad thing, I know...)
-rw-r--r--net/xmppclient_listener.lua7
-rw-r--r--net/xmppserver_listener.lua9
2 files changed, 13 insertions, 3 deletions
diff --git a/net/xmppclient_listener.lua b/net/xmppclient_listener.lua
index 068557c8..64747bc5 100644
--- a/net/xmppclient_listener.lua
+++ b/net/xmppclient_listener.lua
@@ -60,7 +60,12 @@ function xmppclient.listener(conn, data)
-- TODO: Below function should be session,stanza - and xmlhandlers should use :method() notation to call,
-- this will avoid the useless indirection we have atm
-- (I'm on a mission, no time to fix now)
- session.stanza_dispatch = function (stanza) return core_process_stanza(session, stanza); end
+
+ -- Debug version --
+ local function handleerr() print("Traceback:", debug.traceback()); end
+ session.stanza_dispatch = function (stanza) return select(2, xpcall(function () return core_process_stanza(session, stanza); end, handleerr)); end
+
+-- session.stanza_dispatch = function (stanza) return core_process_stanza(session, stanza); end
end
if data then
diff --git a/net/xmppserver_listener.lua b/net/xmppserver_listener.lua
index 111633d8..f8b5d1c8 100644
--- a/net/xmppserver_listener.lua
+++ b/net/xmppserver_listener.lua
@@ -62,7 +62,12 @@ function xmppserver.listener(conn, data)
-- FIXME: Below function should be session,stanza - and xmlhandlers should use :method() notation to call,
-- this will avoid the useless indirection we have atm
-- (I'm on a mission, no time to fix now)
- session.stanza_dispatch = function (stanza) return core_process_stanza(session, stanza); end
+
+ -- Debug version --
+ local function handleerr() print("Traceback:", debug.traceback()); end
+ session.stanza_dispatch = function (stanza) return select(2, xpcall(function () return core_process_stanza(session, stanza); end, handleerr)); end
+
+-- session.stanza_dispatch = function (stanza) return core_process_stanza(session, stanza); end
end
if data then
@@ -100,4 +105,4 @@ connlisteners_register("xmppserver", xmppserver);
-- We also need to perform that same initialisation at other points (SASL, TLS, ...)
-- ...and we need to handle data
--- ...and record all sessions associated with connections \ No newline at end of file
+-- ...and record all sessions associated with connections