Comparison

core/sessionmanager.lua @ 9908:7d12af856238

sessionmanager: Split byte-level sending into separate session.rawsend
author Kim Alvefur <zash@zash.se>
date Sun, 24 Mar 2019 08:18:19 +0000
parent 9070:21730a3642fe
child 9937:6245ee9494c6
comparison
equal deleted inserted replaced
9907:54e36a8677bc 9908:7d12af856238
30 30
31 local function new_session(conn) 31 local function new_session(conn)
32 local session = { conn = conn, type = "c2s_unauthed", conntime = gettime() }; 32 local session = { conn = conn, type = "c2s_unauthed", conntime = gettime() };
33 local filter = initialize_filters(session); 33 local filter = initialize_filters(session);
34 local w = conn.write; 34 local w = conn.write;
35
36 function session.rawsend(t)
37 t = filter("bytes/out", tostring(t));
38 if t then
39 local ret, err = w(conn, t);
40 if not ret then
41 session.log("debug", "Error writing to connection: %s", tostring(err));
42 return false, err;
43 end
44 end
45 return true;
46 end
47
35 session.send = function (t) 48 session.send = function (t)
36 session.log("debug", "Sending[%s]: %s", session.type, t.top_tag and t:top_tag() or t:match("^[^>]*>?")); 49 session.log("debug", "Sending[%s]: %s", session.type, t.top_tag and t:top_tag() or t:match("^[^>]*>?"));
37 if t.name then 50 if t.name then
38 t = filter("stanzas/out", t); 51 t = filter("stanzas/out", t);
39 end 52 end
40 if t then 53 if t then
41 t = filter("bytes/out", tostring(t)); 54 return session.rawsend(t);
42 if t then
43 local ret, err = w(conn, t);
44 if not ret then
45 session.log("debug", "Error writing to connection: %s", tostring(err));
46 return false, err;
47 end
48 end
49 end 55 end
50 return true; 56 return true;
51 end 57 end
52 session.ip = conn:ip(); 58 session.ip = conn:ip();
53 local conn_name = "c2s"..tostring(session):match("[a-f0-9]+$"); 59 local conn_name = "c2s"..tostring(session):match("[a-f0-9]+$");