Software /
code /
prosody
Comparison
net/connlisteners.lua @ 4220:05f4db0459b1
net.connlisteners: Log traceback on errors in listener loading.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Wed, 02 Mar 2011 05:11:42 +0500 |
parent | 3540:bc139431830b |
child | 4322:aff627b1ce95 |
comparison
equal
deleted
inserted
replaced
4218:8a271b3fcaa7 | 4220:05f4db0459b1 |
---|---|
11 local listeners_dir = (CFG_SOURCEDIR or ".").."/net/"; | 11 local listeners_dir = (CFG_SOURCEDIR or ".").."/net/"; |
12 local server = require "net.server"; | 12 local server = require "net.server"; |
13 local log = require "util.logger".init("connlisteners"); | 13 local log = require "util.logger".init("connlisteners"); |
14 local tostring = tostring; | 14 local tostring = tostring; |
15 | 15 |
16 local dofile, pcall, error = | 16 local dofile, xpcall, error = |
17 dofile, pcall, error | 17 dofile, xpcall, error |
18 | |
19 local debug_traceback = debug.traceback; | |
18 | 20 |
19 module "connlisteners" | 21 module "connlisteners" |
20 | 22 |
21 local listeners = {}; | 23 local listeners = {}; |
22 | 24 |
35 end | 37 end |
36 | 38 |
37 function get(name) | 39 function get(name) |
38 local h = listeners[name]; | 40 local h = listeners[name]; |
39 if not h then | 41 if not h then |
40 local ok, ret = pcall(dofile, listeners_dir..name:gsub("[^%w%-]", "_").."_listener.lua"); | 42 local ok, ret = xpcall(function() dofile(listeners_dir..name:gsub("[^%w%-]", "_").."_listener.lua") end, debug_traceback); |
41 if not ok then | 43 if not ok then |
42 log("error", "Error while loading listener '%s': %s", tostring(name), tostring(ret)); | 44 log("error", "Error while loading listener '%s': %s", tostring(name), tostring(ret)); |
43 return nil, ret; | 45 return nil, ret; |
44 end | 46 end |
45 h = listeners[name]; | 47 h = listeners[name]; |