From 99e99bdbdae1e1588375ecbebdf81390a2fa75b2 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Fri, 10 Apr 2009 10:30:50 +0100 Subject: net.adns: Catch errors in DNS response callbacks --- net/adns.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'net') diff --git a/net/adns.lua b/net/adns.lua index cb784d40..fb68ea71 100644 --- a/net/adns.lua +++ b/net/adns.lua @@ -3,7 +3,7 @@ local dns = require "net.dns"; local log = require "util.logger".init("adns"); -local coroutine, tostring = coroutine, tostring; +local coroutine, tostring, pcall = coroutine, tostring, pcall; module "adns" @@ -14,7 +14,10 @@ function lookup(handler, qname, qtype, qclass) dns.query(qname, qtype, qclass); coroutine.yield(nil); -- Wait for reply log("debug", "Reply for "..qname.." (%s)", tostring(coroutine.running())); - handler(dns.peek(qname, qtype, qclass)); + local ok, err = pcall(handler, dns.peek(qname, qtype, qclass)); + if not ok then + log("debug", "Error in DNS response handler: %s", tostring(err)); + end end)(); end -- cgit v1.2.3