Software /
code /
prosody
Comparison
core/s2smanager.lua @ 1792:407f282f559e
Merge with 0.5
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 19 Sep 2009 17:42:16 +0100 |
parent | 1686:232c2bf155c7 |
parent | 1791:42d0b68a1efd |
child | 1794:218f720af304 |
comparison
equal
deleted
inserted
replaced
1790:f06688f9b6c6 | 1792:407f282f559e |
---|---|
172 local connect_host, connect_port = idna_to_ascii(to_host), 5269; | 172 local connect_host, connect_port = idna_to_ascii(to_host), 5269; |
173 | 173 |
174 if not err then -- This is our first attempt | 174 if not err then -- This is our first attempt |
175 log("debug", "First attempt to connect to %s, starting with SRV lookup...", to_host); | 175 log("debug", "First attempt to connect to %s, starting with SRV lookup...", to_host); |
176 host_session.connecting = true; | 176 host_session.connecting = true; |
177 local answer, handle; | 177 local handle; |
178 handle = adns.lookup(function (answer) | 178 handle = adns.lookup(function (answer) |
179 handle = nil; | 179 handle = nil; |
180 host_session.connecting = nil; | 180 host_session.connecting = nil; |
181 if answer then | 181 if answer then |
182 log("debug", to_host.." has SRV records, handling..."); | 182 log("debug", to_host.." has SRV records, handling..."); |
234 | 234 |
235 return try_connect(host_session, connect_host, connect_port); | 235 return try_connect(host_session, connect_host, connect_port); |
236 end | 236 end |
237 | 237 |
238 function try_connect(host_session, connect_host, connect_port) | 238 function try_connect(host_session, connect_host, connect_port) |
239 host_session.connecting = true; | |
240 local handle; | |
241 handle = adns.lookup(function (reply) | |
242 handle = nil; | |
243 host_session.connecting = nil; | |
244 if reply and reply[1] and reply[1].a then | |
245 log("debug", "DNS reply for %s gives us %s", connect_host, reply[1].a); | |
246 return make_connect(host_session, reply[1].a, connect_port); | |
247 else | |
248 log("debug", "DNS lookup failed to get a response for %s", connect_host); | |
249 if not attempt_connection(host_session, "name resolution failed") then -- Retry if we can | |
250 log("debug", "No other records to try for %s - destroying", host_session.to_host); | |
251 destroy_session(host_session); -- End of the line, we can't | |
252 end | |
253 end | |
254 end, connect_host, "A", "IN"); | |
255 | |
256 -- Set handler for DNS timeout | |
257 add_task(dns_timeout, function () | |
258 if handle then | |
259 adns.cancel(handle, true); | |
260 end | |
261 end); | |
262 | |
263 return true; | |
264 end | |
265 | |
266 function make_connect(host_session, connect_host, connect_port) | |
239 host_session.log("info", "Beginning new connection attempt to %s (%s:%d)", host_session.to_host, connect_host, connect_port); | 267 host_session.log("info", "Beginning new connection attempt to %s (%s:%d)", host_session.to_host, connect_host, connect_port); |
240 -- Ok, we're going to try to connect | 268 -- Ok, we're going to try to connect |
241 | 269 |
242 local from_host, to_host = host_session.from_host, host_session.to_host; | 270 local from_host, to_host = host_session.from_host, host_session.to_host; |
243 | 271 |