Changeset

973:b091a1a7273b

net.adns: Catch errors in DNS response callbacks
author Matthew Wild <mwild1@gmail.com>
date Fri, 10 Apr 2009 10:30:50 +0100
parents 971:dd736391bd41
children 974:82f7261c0482
files net/adns.lua
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/net/adns.lua	Wed Apr 08 23:20:45 2009 +0100
+++ b/net/adns.lua	Fri Apr 10 10:30:50 2009 +0100
@@ -3,7 +3,7 @@
 
 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 @@
 				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