# HG changeset patch # User Kim Alvefur # Date 1581893311 -3600 # Node ID 324a0c7d1c6a77ba3220e86a3f919dc00a325093 # Parent 228277be4a28dfc7763bdadbf347e03c9ffb1149 net.resolvers.service: Fix resolving of targets with multiple IPs Each basic resolver was only used once and not kept around to try any IP addresses but the first one found. diff -r 228277be4a28 -r 324a0c7d1c6a net/resolvers/service.lua --- a/net/resolvers/service.lua Sat Feb 15 16:43:18 2020 +0100 +++ b/net/resolvers/service.lua Sun Feb 16 23:48:31 2020 +0100 @@ -14,14 +14,17 @@ -- pass it to cb() function methods:next(cb) if self.targets then - if #self.targets == 0 then - cb(nil); - return; + if not self.resolver then + if #self.targets == 0 then + cb(nil); + return; + end + local next_target = table.remove(self.targets, 1); + self.resolver = basic.new(unpack(next_target, 1, 4)); end - local next_target = table.remove(self.targets, 1); - self.resolver = basic.new(unpack(next_target, 1, 4)); self.resolver:next(function (...) if ... == nil then + self.resolver = nil; self:next(cb); else cb(...);