diff options
author | Matthew Wild <mwild1@gmail.com> | 2020-01-24 13:48:49 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2020-01-24 13:48:49 +0000 |
commit | d3a6636c1c070199a5d70a8db4959a78b8d85f1e (patch) | |
tree | d349cdedb6353f81c1ffabc710af4f03ebc42b43 /net | |
parent | f0b1353582c393ce12ce1fcf1c875539c8325966 (diff) | |
download | prosody-d3a6636c1c070199a5d70a8db4959a78b8d85f1e.tar.gz prosody-d3a6636c1c070199a5d70a8db4959a78b8d85f1e.zip |
net.connect: Add API to create custom connect()s with options, incl. use_ipv[46]
Diffstat (limited to 'net')
-rw-r--r-- | net/connect.lua | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/net/connect.lua b/net/connect.lua index 6d399dda..2d929087 100644 --- a/net/connect.lua +++ b/net/connect.lua @@ -2,13 +2,17 @@ local server = require "net.server"; local log = require "util.logger".init("net.connect"); local new_id = require "util.id".short; --- TODO Respect use_ipv4, use_ipv6 -- TODO #1246 Happy Eyeballs -- FIXME RFC 6724 -- FIXME Error propagation from resolvers doesn't work -- FIXME #1428 Reuse DNS resolver object between service and basic resolver -- FIXME #1429 Close DNS resolver object when done +local default_connector_options = { + use_ipv4 = true; + use_ipv6 = true; +}; + local pending_connection_methods = {}; local pending_connection_mt = { __name = "pending_connection"; @@ -78,19 +82,24 @@ function pending_connection_listeners.ondisconnect(conn, reason) attempt_connection(p); end -local function connect(target_resolver, listeners, options, data) - local p = setmetatable({ - id = new_id(); - target_resolver = target_resolver; - listeners = assert(listeners); - options = options or {}; - data = data; - }, pending_connection_mt); +local function new_connector(connector_options) + local function connect(target_resolver, listeners, options, data) + local p = setmetatable({ + id = new_id(); + target_resolver = target_resolver; + listeners = assert(listeners); + options = options or {}; + data = data; + connector_options = connector_options or default_connector_options; + }, pending_connection_mt); - p:log("debug", "Starting connection process"); - attempt_connection(p); + p:log("debug", "Starting connection process"); + attempt_connection(p); + end + return connect; end return { - connect = connect; + connect = new_connector(default_connector_options); + new_connector = new_connector; }; |