Software /
code /
prosody
Comparison
plugins/s2s/s2sout.lib.lua @ 4569:34b1122126f6
s2sout.lib: import utils/functionality once in s2smanager.
author | Florian Zeitz <florob@babelmonkeys.de> |
---|---|
date | Fri, 24 Feb 2012 15:24:10 +0000 |
parent | 4555:3dce04129693 |
child | 4570:9612abc89dd1 |
comparison
equal
deleted
inserted
replaced
4568:aae7a62671de | 4569:34b1122126f6 |
---|---|
6 -- COPYING file in the source package for more information. | 6 -- COPYING file in the source package for more information. |
7 -- | 7 -- |
8 | 8 |
9 --- Module containing all the logic for connecting to a remote server | 9 --- Module containing all the logic for connecting to a remote server |
10 | 10 |
11 local t_insert = table.insert; | |
12 local t_sort = table.sort; | |
13 local ipairs = ipairs; | |
14 | |
15 local wrapclient = require "net.server".wrapclient; | |
11 local initialize_filters = require "util.filters".initialize; | 16 local initialize_filters = require "util.filters".initialize; |
12 local idna_to_ascii = require "util.encodings".idna.to_ascii; | 17 local idna_to_ascii = require "util.encodings".idna.to_ascii; |
13 local add_task = require "util.timer".add_task; | 18 local add_task = require "util.timer".add_task; |
19 local st = require "util.stanza"; | |
20 local new_ip = require "util.ip".new_ip; | |
21 local rfc3484_dest = require "util.rfc3484".destination; | |
14 local socket = require "socket"; | 22 local socket = require "socket"; |
15 | 23 |
24 local s2s_new_outgoing = require "core.s2smanager".new_outgoing; | |
16 local s2s_destroy_session = require "core.s2smanager".destroy_session; | 25 local s2s_destroy_session = require "core.s2smanager".destroy_session; |
26 | |
27 local cfg_sources = config.get("*", "core", "s2s_interfaces") or socket.local_addresses(); | |
17 | 28 |
18 local s2sout = {}; | 29 local s2sout = {}; |
19 | 30 |
20 local s2s_listener; | 31 local s2s_listener; |
21 | 32 |
34 from=from, to=to, version='1.0', ["xml:lang"]='en'}):top_tag()); | 45 from=from, to=to, version='1.0', ["xml:lang"]='en'}):top_tag()); |
35 end | 46 end |
36 | 47 |
37 function s2sout.initiate_connection(host_session) | 48 function s2sout.initiate_connection(host_session) |
38 initialize_filters(host_session); | 49 initialize_filters(host_session); |
39 session.open_stream = session_open_stream; | 50 host_session.open_stream = session_open_stream; |
40 | 51 |
41 -- Kick the connection attempting machine into life | 52 -- Kick the connection attempting machine into life |
42 if not s2sout.attempt_connection(host_session) then | 53 if not s2sout.attempt_connection(host_session) then |
43 -- Intentionally not returning here, the | 54 -- Intentionally not returning here, the |
44 -- session is needed, connected or not | 55 -- session is needed, connected or not |
145 end | 156 end |
146 end | 157 end |
147 end | 158 end |
148 | 159 |
149 function s2sout.try_connect(host_session, connect_host, connect_port, err) | 160 function s2sout.try_connect(host_session, connect_host, connect_port, err) |
161 local sources; | |
150 host_session.connecting = true; | 162 host_session.connecting = true; |
151 | 163 |
152 if not err then | 164 if not err then |
153 local IPs = {}; | 165 local IPs = {}; |
154 host_session.ip_hosts = IPs; | 166 host_session.ip_hosts = IPs; |
155 local handle4, handle6; | 167 local handle4, handle6; |
156 local has_other = false; | 168 local has_other = false; |
157 | 169 |
158 if not sources then | 170 if not sources then |
159 sources = {}; | 171 sources = {}; |
160 for i, source in ipairs(cfg_sources) do | 172 for i, source in ipairs(cfg_sources) do |
161 if source == "*" then | 173 if source == "*" then |
162 sources[i] = new_ip("0.0.0.0", "IPv4"); | 174 sources[i] = new_ip("0.0.0.0", "IPv4"); |
163 else | 175 else |
164 sources[i] = new_ip(source, (source:find(":") and "IPv6") or "IPv4"); | 176 sources[i] = new_ip(source, (source:find(":") and "IPv6") or "IPv4"); |