Software /
code /
prosody
Diff
net/resolvers/service.lua @ 10650:324a0c7d1c6a
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.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 16 Feb 2020 23:48:31 +0100 |
parent | 10484:b13a31cea7d9 |
child | 10970:4603697aee50 |
line wrap: on
line diff
--- 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(...);