Software / code / prosody
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]+$"); |