net.dns, net.adns: Make sure errors from net.server are propagated (thanks asterix)
authorKim Alvefur <zash@zash.se>
Wed, 10 Jul 2013 05:45:10 +0000 (07:45 +0200)
committerKim Alvefur <zash@zash.se>
Wed, 10 Jul 2013 05:45:10 +0000 (07:45 +0200)
net/adns.lua
net/dns.lua

index cd69a627e044f69182ee59d5f0586ba1d6e6a17a..158747c68746d3312fe48876391a35a319b9b06c 100644 (file)
@@ -68,9 +68,9 @@ function new_async_socket(sock, resolver)
                        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
index 89b50255811b606af3ff2a53e0a91312bbe5e974..cdd949a22309fe2be2be70f64eee6e9ae3dc8622 100644 (file)
@@ -622,10 +622,10 @@ function resolver:getsocket(servernum)    -- - - - - - - - - - - - - getsocket
 
        local err;
        sock, err = socket.udp();
+       if sock and self.socket_wrapper then sock, err = self.socket_wrapper(sock, self); end
        if not sock then
                return nil, err;
        end
-       if self.socket_wrapper then sock = self.socket_wrapper(sock, self); end
        sock:settimeout(0);
        -- todo: attempt to use a random port, fallback to 0
        sock:setsockname('*', 0);