comparison mod_net_proxy/mod_net_proxy.lua @ 6213:49fad071e644

mod_net_proxy: Use safer util.format for generating description string (thanks tom) It appears that server_event may emit port numbers (src_port() in this case) as strings, rather than integers. This causes string.format() to throw an error. Prosody's util.format is a more forgiving formatter and won't throw an error. The server_event behaviour may be best fixed for the sake of consistency, though.
author Matthew Wild <mwild1@gmail.com>
date Fri, 09 May 2025 10:00:15 +0100
parents 9d65eb3fcb15
children 9d3e6d2f25c7
comparison
equal deleted inserted replaced
6212:96dda21fba75 6213:49fad071e644
12 local hex = require "util.hex"; 12 local hex = require "util.hex";
13 local ip = require "util.ip"; 13 local ip = require "util.ip";
14 local net = require "util.net"; 14 local net = require "util.net";
15 local set = require "util.set"; 15 local set = require "util.set";
16 local portmanager = require "core.portmanager"; 16 local portmanager = require "core.portmanager";
17 local fmt = require "util.format".format;
17 18
18 -- Backwards Compatibility 19 -- Backwards Compatibility
19 local function net_ntop_bc(input) 20 local function net_ntop_bc(input)
20 if input:len() == 4 then 21 if input:len() == 4 then
21 return string.format("%d.%d.%d.%d", input:byte(1, 4)); 22 return string.format("%d.%d.%d.%d", input:byte(1, 4));
79 80
80 -- Proxy Data Methods 81 -- Proxy Data Methods
81 local proxy_data_mt = {}; proxy_data_mt.__index = proxy_data_mt; 82 local proxy_data_mt = {}; proxy_data_mt.__index = proxy_data_mt;
82 83
83 function proxy_data_mt:describe() 84 function proxy_data_mt:describe()
84 return string.format("proto=%s/%s src=%s:%d dst=%s:%d", 85 return fmt("proto=%s/%s src=%s:%d dst=%s:%d",
85 self:addr_family_str(), self:transport_str(), self:src_addr(), self:src_port(), self:dst_addr(), self:dst_port()); 86 self:addr_family_str(), self:transport_str(), self:src_addr(), self:src_port(), self:dst_addr(), self:dst_port());
86 end 87 end
87 88
88 function proxy_data_mt:addr_family_str() 89 function proxy_data_mt:addr_family_str()
89 return ADDR_FAMILY_STR[self._addr_family] or ADDR_FAMILY_STR[ADDR_FAMILY.UNSPEC]; 90 return ADDR_FAMILY_STR[self._addr_family] or ADDR_FAMILY_STR[ADDR_FAMILY.UNSPEC];