1385 return nil, "Both hosts are local"; |
1385 return nil, "Both hosts are local"; |
1386 end |
1386 end |
1387 local iq = st.iq{ from=localhost, to=remotehost, type="get", id=new_id()} |
1387 local iq = st.iq{ from=localhost, to=remotehost, type="get", id=new_id()} |
1388 :tag("ping", {xmlns="urn:xmpp:ping"}); |
1388 :tag("ping", {xmlns="urn:xmpp:ping"}); |
1389 local time_start = time.now(); |
1389 local time_start = time.now(); |
1390 return module:context(localhost):send_iq(iq, nil, timeout):next(function (pong) |
1390 local print = self.session.print; |
|
1391 local function onchange(what) |
|
1392 return function(event) |
|
1393 local s2s_session = event.session; |
|
1394 if (s2s_session.from_host == localhost and s2s_session.to_host == remotehost) |
|
1395 or (s2s_session.to_host == localhost and s2s_session.from_host == remotehost) then |
|
1396 local dir = available_columns.dir.mapper(s2s_session.direction, s2s_session); |
|
1397 print(("Session %s (%s%s%s) %s (%gs)"):format(s2s_session.id, localhost, dir, remotehost, what, |
|
1398 time.now() - time_start)); |
|
1399 end |
|
1400 end |
|
1401 end |
|
1402 local oncreated = onchange("created"); |
|
1403 local onauthenticated = onchange("authenticated"); |
|
1404 local onestablished = onchange("established"); |
|
1405 local ondestroyed = onchange("destroyed"); |
|
1406 module:hook("s2s-created", oncreated, 1); |
|
1407 module:context(localhost):hook("s2s-authenticated", onauthenticated, 1); |
|
1408 module:hook("s2sout-established", onestablished, 1); |
|
1409 module:hook("s2sin-established", onestablished, 1); |
|
1410 module:hook("s2s-destroyed", ondestroyed, 1); |
|
1411 return module:context(localhost):send_iq(iq, nil, timeout):finally(function() |
|
1412 module:unhook("s2s-created", oncreated); |
|
1413 module:context(localhost):unhook("s2s-authenticated", onauthenticated); |
|
1414 module:unhook("s2sout-established", onestablished); |
|
1415 module:unhook("s2sin-established", onestablished); |
|
1416 module:unhook("s2s-destroyed", ondestroyed); |
|
1417 end):next(function(pong) |
1391 return ("pong from %s in %gs"):format(pong.stanza.attr.from, time.now() - time_start); |
1418 return ("pong from %s in %gs"):format(pong.stanza.attr.from, time.now() - time_start); |
1392 end); |
1419 end); |
1393 end |
1420 end |
1394 |
1421 |
1395 def_env.dns = {}; |
1422 def_env.dns = {}; |