# HG changeset patch # User Kim Alvefur <zash@zash.se> # Date 1578187771 -3600 # Node ID f86ed818a7f89c2cecb3df19e7c1279cd559f498 # Parent 2d853533809982421bc242cb487fb9564b81e370 net.server_epoll: Collect full traceback from errors in listeners diff -r 2d8535338099 -r f86ed818a7f8 net/server_epoll.lua --- a/net/server_epoll.lua Sat Jan 04 14:05:10 2020 +0100 +++ b/net/server_epoll.lua Sun Jan 05 02:29:31 2020 +0100 @@ -13,6 +13,7 @@ local type = type; local next = next; local pairs = pairs; +local traceback = debug.traceback; local logger = require "util.logger"; local log = logger.init("server_epoll"); local socket = require "socket"; @@ -25,6 +26,7 @@ local inet_pton = inet.pton; local _SOCKETINVALID = socket._SOCKETINVALID or -1; local new_id = require "util.id".medium; +local xpcall = require "util.xpcall".xpcall; local poller = require "util.poll" local EEXIST = poller.EEXIST; @@ -175,7 +177,7 @@ -- self:debug("Missing listener 'on%s'", what); -- uncomment for development and debugging return; end - local ok, err = pcall(listener, self, ...); + local ok, err = xpcall(listener, traceback, self, ...); if not ok then if cfg.fatal_errors then self:debug("Closing due to error calling on%s: %s", what, err);