diff options
Diffstat (limited to 'core/sessionmanager.lua')
-rw-r--r-- | core/sessionmanager.lua | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/core/sessionmanager.lua b/core/sessionmanager.lua index 1b1b36df..bc45d104 100644 --- a/core/sessionmanager.lua +++ b/core/sessionmanager.lua @@ -11,7 +11,6 @@ local tonumber, tostring = tonumber, tostring; local ipairs, pairs, print, next= ipairs, pairs, print, next; local collectgarbage = collectgarbage; -local m_random = import("math", "random"); local format = import("string", "format"); local hosts = hosts; @@ -19,7 +18,8 @@ local full_sessions = full_sessions; local bare_sessions = bare_sessions; local modulemanager = require "core.modulemanager"; -local log = require "util.logger".init("sessionmanager"); +local logger = require "util.logger"; +local log = logger.init("sessionmanager"); local error = error; local uuid_generate = require "util.uuid".generate; local rm_load_roster = require "core.rostermanager".load_roster; @@ -27,11 +27,13 @@ local config_get = require "core.configmanager".get; local nameprep = require "util.encodings".stringprep.nameprep; local fire_event = require "core.eventmanager".fire_event; - +local add_task = require "util.timer".add_task; local gettime = require "socket".gettime; local st = require "util.stanza"; +local c2s_timeout = config_get("*", "core", "c2s_timeout"); + local newproxy = newproxy; local getmetatable = getmetatable; @@ -50,6 +52,17 @@ function new_session(conn) local w = conn.write; session.send = function (t) w(tostring(t)); end session.ip = conn.ip(); + local conn_name = "c2s"..tostring(conn):match("[a-f0-9]+$"); + session.log = logger.init(conn_name); + + if c2s_timeout then + add_task(c2s_timeout, function () + if session.type == "c2s_unauthed" then + session:close("connection-timeout"); + end + end); + end + return session; end @@ -154,7 +167,7 @@ function streamopened(session, attr) session.host = attr.to or error("Client failed to specify destination hostname"); session.host = nameprep(session.host); session.version = tonumber(attr.version) or 0; - session.streamid = m_random(1000000, 99999999); + session.streamid = uuid_generate(); (session.log or session)("debug", "Client sent opening <stream:stream> to %s", session.host); send("<?xml version='1.0'?>"); |