Software /
code /
prosody
File
core/s2smanager.lua @ 10399:270cb2821566
mod_ping: Remove ad-hoc command
17:27:40 <Ge0rG> Zash: the Ping thing is absolutely worthless
17:27:55 <Zash> The command provided by mod_ping?
17:27:59 <pep.> To own server?
17:28:14 <Ge0rG> the Ping command in mod_admin_web, whatever it maps to
17:28:29 <Ge0rG> > Pong
> 2019-11-07T16:28:16Z
What am I supposed to do with that result?
17:28:29 <Zash> Yeah, mod_ping provides that
17:28:41 <Ge0rG> Is it a ping to my own server? Where's the RTT?
17:28:48 <Zash> Dunno if it's useful for more than verifying that the adhoc command system works
17:29:02 <Ge0rG> (it lags, but there is no indication of how much)
17:29:14 <Zash> It can't really test that itself
17:29:52 <Zash> Anyone opposed to deleting it?
17:30:42 <Zash> Half the module
17:42:47 <MattJ> Zash, I'm fine with removing it
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 07 Nov 2019 19:23:42 +0100 |
parent | 10304:56522bb3bca5 |
child | 10425:42cf93ff4618 |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- local hosts = prosody.hosts; local pairs, setmetatable = pairs, setmetatable; local logger_init = require "util.logger".init; local sessionlib = require "util.session"; local log = logger_init("s2smanager"); local prosody = _G.prosody; local incoming_s2s = {}; _G.incoming_s2s = incoming_s2s; prosody.incoming_s2s = incoming_s2s; local fire_event = prosody.events.fire_event; local _ENV = nil; -- luacheck: std none local function new_incoming(conn) local host_session = sessionlib.new("s2sin"); sessionlib.set_id(host_session); sessionlib.set_logger(host_session); sessionlib.set_conn(host_session, conn); host_session.direction = "incoming"; host_session.incoming = true; host_session.hosts = {}; incoming_s2s[host_session] = true; return host_session; end local function new_outgoing(from_host, to_host) local host_session = sessionlib.new("s2sout"); sessionlib.set_id(host_session); sessionlib.set_logger(host_session); host_session.to_host = to_host; host_session.from_host = from_host; host_session.host = from_host; host_session.notopen = true; host_session.direction = "outgoing"; host_session.outgoing = true; host_session.hosts = {}; hosts[from_host].s2sout[to_host] = host_session; return host_session; end local resting_session = { -- Resting, not dead destroyed = true; type = "s2s_destroyed"; open_stream = function (session) session.log("debug", "Attempt to open stream on resting session"); end; close = function (session) session.log("debug", "Attempt to close already-closed session"); end; reset_stream = function (session) session.log("debug", "Attempt to reset stream of already-closed session"); end; filter = function (type, data) return data; end; --luacheck: ignore 212/type }; resting_session.__index = resting_session; local function retire_session(session, reason) local log = session.log or log; --luacheck: ignore 431/log for k in pairs(session) do if k ~= "log" and k ~= "id" and k ~= "conn" then session[k] = nil; end end session.destruction_reason = reason; function session.send(data) log("debug", "Discarding data sent to resting session: %s", data); end function session.data(data) log("debug", "Discarding data received from resting session: %s", data); end session.thread = { run = function (_, data) return session.data(data) end }; session.sends2s = session.send; return setmetatable(session, resting_session); end local function destroy_session(session, reason) if session.destroyed then return; end local log = session.log or log; log("debug", "Destroying %s session %s->%s%s%s", session.direction, session.from_host, session.to_host, reason and ": " or "", reason or ""); if session.direction == "outgoing" then hosts[session.from_host].s2sout[session.to_host] = nil; session:bounce_sendq(reason); elseif session.direction == "incoming" then if session.outgoing then hosts[session.to_host].s2sout[session.from_host] = nil; end incoming_s2s[session] = nil; end local event_data = { session = session, reason = reason }; if session.type == "s2sout" then fire_event("s2sout-destroyed", event_data); if hosts[session.from_host] then hosts[session.from_host].events.fire_event("s2sout-destroyed", event_data); end elseif session.type == "s2sin" then fire_event("s2sin-destroyed", event_data); if hosts[session.to_host] then hosts[session.to_host].events.fire_event("s2sin-destroyed", event_data); end end retire_session(session, reason); -- Clean session until it is GC'd return true; end return { incoming_s2s = incoming_s2s; new_incoming = new_incoming; new_outgoing = new_outgoing; retire_session = retire_session; destroy_session = destroy_session; };