mod_compression: Only iterate over correctly named and namespaced child tags of compr...
[prosody.git] / net / adns.lua
index a3b07b09dc9b7ca4e87a5a4b495c3767f458c42c..08421f77c579dd8f3e51253ad3fe96194cc33d63 100644 (file)
@@ -1,7 +1,7 @@
 -- Prosody IM
 -- Copyright (C) 2008-2010 Matthew Wild
 -- Copyright (C) 2008-2010 Waqas Hussain
--- 
+--
 -- This project is MIT/X11 licensed. Please see the
 -- COPYING file in the source package for more information.
 --
@@ -64,22 +64,23 @@ function new_async_socket(sock, resolver)
                        if resolver.socketset[conn] == resolver.best_server and resolver.best_server == #servers then
                                log("error", "Exhausted all %d configured DNS servers, next lookup will try %s again", #servers, servers[1]);
                        end
-               
+
                        resolver:servfail(conn); -- Let the magic commence
                end
        end
-       handler = server.wrapclient(sock, "dns", 53, listener);
+       handler, err = server.wrapclient(sock, "dns", 53, listener);
        if not handler then
-               log("warn", "handler is nil");
+               return nil, err;
        end
-       
+
        handler.settimeout = function () end
        handler.setsockname = function (_, ...) return sock:setsockname(...); end
        handler.setpeername = function (_, ...) peername = (...); local ret = sock:setpeername(...); _:set_send(dummy_send); return ret; end
        handler.connect = function (_, ...) return sock:connect(...) end
        --handler.send = function (_, data) _:write(data);  return _.sendbuffer and _.sendbuffer(); end
        handler.send = function (_, data)
-               log("debug", "Sending DNS query to %s", sock:getpeername());
+               local getpeername = sock.getpeername;
+               log("debug", "Sending DNS query to %s", (getpeername and getpeername(sock)) or "<unconnected>");
                return sock:send(data);
        end
        return handler;