comparison plugins/s2s/s2sout.lib.lua @ 4573:09255a10fdfa

Merge Zash with Florob and Maranda
author Matthew Wild <mwild1@gmail.com>
date Fri, 24 Feb 2012 16:23:46 +0000
parents a11b4cbac3c5 9612abc89dd1
children f9f5230d7a9c
comparison
equal deleted inserted replaced
4564:a11b4cbac3c5 4573:09255a10fdfa
13 local idna_to_ascii = require "util.encodings".idna.to_ascii; 13 local idna_to_ascii = require "util.encodings".idna.to_ascii;
14 local add_task = require "util.timer".add_task; 14 local add_task = require "util.timer".add_task;
15 local new_ip = require "util.ip".new_ip; 15 local new_ip = require "util.ip".new_ip;
16 local rfc3484_dest = require "util.rfc3484".destination; 16 local rfc3484_dest = require "util.rfc3484".destination;
17 local socket = require "socket"; 17 local socket = require "socket";
18 local t_insert, t_sort = table.insert, table.sort; 18 local t_insert, t_sort, ipairs = table.insert, table.sort, ipairs;
19 local st = require "util.stanza"; 19 local st = require "util.stanza";
20 20
21 local s2s_new_outgoing = require "core.s2smanager".new_outgoing;
21 local s2s_destroy_session = require "core.s2smanager".destroy_session; 22 local s2s_destroy_session = require "core.s2smanager".destroy_session;
22 local s2s_new_outgoing = require "core.s2smanager".new_outgoing; 23
24 local cfg_sources = config.get("*", "core", "s2s_interfaces") or socket.local_addresses and socket.local_addresses() or { "*" };
23 25
24 local s2sout = {}; 26 local s2sout = {};
25 27
26 local s2s_listener; 28 local s2s_listener;
27 29
28 local cfg_sources = config.get("*", "core", "s2s_interfaces") or {"*"};
29 local sources
30 30
31 function s2sout.set_listener(listener) 31 function s2sout.set_listener(listener)
32 s2s_listener = listener; 32 s2s_listener = listener;
33 end 33 end
34 34
154 end 154 end
155 end 155 end
156 end 156 end
157 157
158 function s2sout.try_connect(host_session, connect_host, connect_port, err) 158 function s2sout.try_connect(host_session, connect_host, connect_port, err)
159 local sources;
159 host_session.connecting = true; 160 host_session.connecting = true;
160 161
161 if not err then 162 if not err then
162 local IPs = {}; 163 local IPs = {};
163 host_session.ip_hosts = IPs; 164 host_session.ip_hosts = IPs;
164 local handle4, handle6; 165 local handle4, handle6;
165 local has_other = false; 166 local has_other = false;
166 167
167 if not sources then 168 if not sources then
168 sources = {}; 169 sources = {};
169 for i, source in ipairs(cfg_sources) do 170 for i, source in ipairs(cfg_sources) do
170 if source == "*" then 171 if source == "*" then
171 sources[i] = new_ip("0.0.0.0", "IPv4"); 172 sources[i] = new_ip("0.0.0.0", "IPv4");
172 else 173 else
173 sources[i] = new_ip(source, (source:find(":") and "IPv6") or "IPv4"); 174 sources[i] = new_ip(source, (source:find(":") and "IPv6") or "IPv4");