Annotate

net/resolvers/chain.lua @ 13531:3a75472a3b9d

doap: Update XEP for mostly editorial changes XEP-0004: Changes <reported> which is not implemented XEP-0030: A note on some implementations not advertising disco#info XEP-0106: Now references PRECIS which we don't have access to XEP-0107: Editorial fixing of a typo XEP-0133: Removal of 'Get User Password' already done in 21a1b9fb08a1, editorial changes XEP-0153: Editorial changes XEP-0198: Editorial changes and clarifications XEP-0223: Updated security considerations XEP-0292: The difference is that the iq syntax implemented in mod_vcard4 is removed. To become compliant, simply unload this module. XEP-0313: Editorial and minor changes XEP-0398: Advanced to Stable, no other changes XEP-0398: Now mentions the implementation method used in mod_vcard_legacy XEP-0402: Changes only affecting clients XEP-0421: Added requirements we already satisfy XEP-0440: Editorial changes XEP-0478: Editorial changes Due to their size, review of changes to XEP-0045 and XEP-0060 has been left for later.
author Kim Alvefur <zash@zash.se>
date Sat, 26 Oct 2024 18:06:49 +0200
parent 12204:7c397a49d163
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12204
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local methods = {};
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local resolver_mt = { __index = methods };
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 -- Find the next target to connect to, and
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 -- pass it to cb()
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 function methods:next(cb)
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 if self.resolvers then
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 if not self.resolver then
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 if #self.resolvers == 0 then
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 cb(nil);
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 return;
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 end
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 local next_resolver = table.remove(self.resolvers, 1);
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 self.resolver = next_resolver;
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 end
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 self.resolver:next(function (...)
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 if self.resolver then
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 self.last_error = self.resolver.last_error;
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 if ... == nil then
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 self.resolver = nil;
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 self:next(cb);
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 else
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 cb(...);
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 end
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 end);
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 return;
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 end
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 end
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 local function new(resolvers)
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 return setmetatable({ resolvers = resolvers }, resolver_mt);
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 end
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 return {
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 new = new;
7c397a49d163 net.resolvers.chain: A resolver for combining other resolvers
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 };