File

mod_measure_conn_buffers/mod_measure_conn_buffers.lua @ 6057:cc665f343690

mod_firewall: SUBSCRIBED: Flip subscription check to match documentation The documentation claims that this condition checks whether the recipient is subscribed to the sender. However, it was using the wrong method, and actually checking whether the sender was subscribed to the recipient. A quick poll of folk suggested that the documentation's approach is the right one, so this should fix the code to match the documentation. This should also fix the bundled anti-spam rules from blocking presence from JIDs that you subscribe do (but don't have a mutual subscription with).
author Matthew Wild <mwild1@gmail.com>
date Fri, 22 Nov 2024 13:50:48 +0000
parent 6050:81805f11263c
line wrap: on
line source

module:set_global();

local measure_total_pending_tx = module:measure("total_pending_tx", "amount");

local server = require "net.server";

if server.get_backend() ~= "epoll" or not server.loop.fds then
	module:log_status("error", "This module is not compatible with your network_backend, only epoll is supported");
	return;
end

local fds = server.loop.fds;

module:hook("stats-update", function ()
	local pending_tx = 0;
	for _, conn in pairs(fds) do
		local buffer = conn.writebuffer;
		if buffer then
			if type(buffer) == "string" then
				pending_tx = pending_tx + #buffer;
			elseif buffer._length then -- dbuffer
				pending_tx = pending_tx + buffer._length;
			else -- simple table
				for i = 1, #buffer do
					pending_tx = pending_tx + #buffer[i];
				end
			end
		end
	end
	measure_total_pending_tx(pending_tx);
end);