projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mod_s2s: Log certificate identity validation result
[prosody.git]
/
net
/
dns.lua
diff --git
a/net/dns.lua
b/net/dns.lua
index 7bf5653b99f20c339f4370d1366ad91021a89489..cdd949a22309fe2be2be70f64eee6e9ae3dc8622 100644
(file)
--- a/
net/dns.lua
+++ b/
net/dns.lua
@@
-223,7
+223,7
@@
end
function dns.random(...) -- - - - - - - - - - - - - - - - - - - dns.random
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
dns.random = math.random;
return dns.random(...);
end
@@
-358,6
+358,7
@@
function resolver:name() -- - - - - - - - - - - - - - - - - - - - - - name
local remember, pointers = nil, 0;
local len = self:byte();
local n = {};
local remember, pointers = nil, 0;
local len = self:byte();
local n = {};
+ if len == 0 then return "." end -- Root label
while len > 0 do
if len >= 0xc0 then -- name is "compressed"
pointers = pointers + 1;
while len > 0 do
if len >= 0xc0 then -- name is "compressed"
pointers = pointers + 1;
@@
-548,6
+549,7
@@
function resolver:decode(packet, force) -- - - - - - - - - - - - - - decode
if not force then
if not self.active[response.header.id] or not self.active[response.header.id][response.question.raw] then
if not force then
if not self.active[response.header.id] or not self.active[response.header.id][response.question.raw] then
+ self.active[response.header.id] = nil;
return nil;
end
end
return nil;
end
end
@@
-620,10
+622,10
@@
function resolver:getsocket(servernum) -- - - - - - - - - - - - - getsocket
local err;
sock, err = socket.udp();
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 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);
sock:settimeout(0);
-- todo: attempt to use a random port, fallback to 0
sock:setsockname('*', 0);
@@
-641,6
+643,7
@@
function resolver:voidsocket(sock)
self.socket[self.socketset[sock]] = nil;
self.socketset[sock] = nil;
end
self.socket[self.socketset[sock]] = nil;
self.socketset[sock] = nil;
end
+ sock:close();
end
function resolver:socket_wrapper_set(func) -- - - - - - - socket_wrapper_set
end
function resolver:socket_wrapper_set(func) -- - - - - - - socket_wrapper_set
@@
-705,7
+708,7
@@
function resolver:purge(soft) -- - - - - - - - - - - - - - - - - - - purge
end
end
end
end
end
end
- else self.cache =
{}
; end
+ else self.cache =
setmetatable({}, cache_metatable)
; end
end
end
@@
-795,6
+798,9
@@
function resolver:servfail(sock)
end
end
end
end
end
end
+ if next(queries) == nil then
+ self.active[id] = nil;
+ end
end
if num == self.best_server then
end
if num == self.best_server then
@@
-851,6
+857,7
@@
function resolver:receive(rset) -- - - - - - - - - - - - - - - - - receive
set(self.wanted, q.class, q.type, q.name, nil);
end
end
set(self.wanted, q.class, q.type, q.name, nil);
end
end
+
end
end
end
end
end
end
@@
-1065,6
+1072,10
@@
function dns.settimeout(...)
return _resolver:settimeout(...);
end
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
function dns.socket_wrapper_set(...) -- - - - - - - - - socket_wrapper_set
return _resolver:socket_wrapper_set(...);
end