diff options
author | Kim Alvefur <zash@zash.se> | 2018-09-29 21:56:47 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2018-09-29 21:56:47 +0200 |
commit | ea072d7c3275099daf6de2a20d52e227f5ec14e7 (patch) | |
tree | 8a54939b4497f30d732755d22707de41a48213aa /net/resolvers | |
parent | db46752c37e6aeadc9bf32a478a2283794336375 (diff) | |
download | prosody-ea072d7c3275099daf6de2a20d52e227f5ec14e7.tar.gz prosody-ea072d7c3275099daf6de2a20d52e227f5ec14e7.zip |
net.resolvers.service: Understand when service is explicitly unavailable
RFC2782 states:
> A Target of "." means that the service is decidedly not available at
> this domain.
Diffstat (limited to 'net/resolvers')
-rw-r--r-- | net/resolvers/service.lua | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/resolvers/service.lua b/net/resolvers/service.lua index 736a838b..036317e5 100644 --- a/net/resolvers/service.lua +++ b/net/resolvers/service.lua @@ -34,6 +34,11 @@ function methods:next(cb) local dns_resolver = adns.resolver(); dns_resolver:lookup(function (answer) if answer then + if #answer == 1 and answer[1].srv.target == "." then -- No service here + ready(); + return; + end + table.sort(answer, function (a, b) return a.priority > b.priority end); for _, record in ipairs(answer) do table.insert(targets, { record.srv.target, record.srv.port, self.conn_type, self.extra }); |