sessionmanager: Split byte-level sending into separate session.rawsend
authorKim Alvefur <zash@zash.se>
Sun, 24 Mar 2019 08:18:19 +0000
changeset 9912 7d12af856238
parent 9911 54e36a8677bc
child 9913 3229be01a08a
sessionmanager: Split byte-level sending into separate session.rawsend
core/sessionmanager.lua
--- a/core/sessionmanager.lua	Fri Jan 04 10:20:51 2019 +0100
+++ b/core/sessionmanager.lua	Sun Mar 24 08:18:19 2019 +0000
@@ -32,20 +32,26 @@
 	local session = { conn = conn, type = "c2s_unauthed", conntime = gettime() };
 	local filter = initialize_filters(session);
 	local w = conn.write;
+
+	function session.rawsend(t)
+		t = filter("bytes/out", tostring(t));
+		if t then
+			local ret, err = w(conn, t);
+			if not ret then
+				session.log("debug", "Error writing to connection: %s", tostring(err));
+				return false, err;
+			end
+		end
+		return true;
+	end
+
 	session.send = function (t)
 		session.log("debug", "Sending[%s]: %s", session.type, t.top_tag and t:top_tag() or t:match("^[^>]*>?"));
 		if t.name then
 			t = filter("stanzas/out", t);
 		end
 		if t then
-			t = filter("bytes/out", tostring(t));
-			if t then
-				local ret, err = w(conn, t);
-				if not ret then
-					session.log("debug", "Error writing to connection: %s", tostring(err));
-					return false, err;
-				end
-			end
+			return session.rawsend(t);
 		end
 		return true;
 	end