X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=net%2Fdns.lua;h=cdd949a22309fe2be2be70f64eee6e9ae3dc8622;hb=84c934632367eac822fb6af2663032b67fd0a596;hp=1950ba73e35180f1645c91f8beec7668f75e5ef2;hpb=4c2a62545eb8d81b55be576a92356afe22de4c71;p=prosody.git diff --git a/net/dns.lua b/net/dns.lua index 1950ba73..cdd949a2 100644 --- a/net/dns.lua +++ b/net/dns.lua @@ -223,7 +223,7 @@ end function dns.random(...) -- - - - - - - - - - - - - - - - - - - dns.random - math.randomseed(math.floor(10000*socket.gettime())); + math.randomseed(math.floor(10000*socket.gettime()) % 0x100000000); dns.random = math.random; return dns.random(...); end @@ -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); @@ -643,6 +643,7 @@ function resolver:voidsocket(sock) self.socket[self.socketset[sock]] = nil; self.socketset[sock] = nil; end + sock:close(); end function resolver:socket_wrapper_set(func) -- - - - - - - socket_wrapper_set @@ -1071,6 +1072,10 @@ function dns.settimeout(...) return _resolver:settimeout(...); end +function dns.cache() + return _resolver.cache; +end + function dns.socket_wrapper_set(...) -- - - - - - - - - socket_wrapper_set return _resolver:socket_wrapper_set(...); end