Comparison

mod_net_proxy/mod_net_proxy.lua @ 3562:b33b2fbdc713

mod_net_proxy: Ensure port numbers are coerced into numbers LuaSocket likes to use strings for port numbers for some reason, so this might help with some type related problems.
author Kim Alvefur <zash@zash.se>
date Fri, 12 Apr 2019 21:44:29 +0200
parent 2997:97b30fec709c
child 4944:9d65eb3fcb15
comparison
equal deleted inserted replaced
3561:deb5ece56c49 3562:b33b2fbdc713
287 end 287 end
288 conn.clientport = conn.port; 288 conn.clientport = conn.port;
289 end 289 end
290 290
291 -- Attempt to find service by processing port<>service mappings 291 -- Attempt to find service by processing port<>service mappings
292 local mapping = mappings[conn:serverport()]; 292 local mapping = mappings[tonumber(conn:serverport())];
293 if mapping == nil then 293 if mapping == nil then
294 conn:close(); 294 conn:close();
295 module:log("warn", "Connection %s@%s terminated: Could not find mapping for port %d", 295 module:log("warn", "Connection %s@%s terminated: Could not find mapping for port %d",
296 conn:ip(), conn:proxyip(), conn:serverport()); 296 conn:ip(), conn:proxyip(), conn:serverport());
297 return; 297 return;
441 end 441 end
442 442
443 -- Process all configured port mappings and generate a list of mapped ports 443 -- Process all configured port mappings and generate a list of mapped ports
444 local mapped_ports = {}; 444 local mapped_ports = {};
445 for port, mapping in pairs(config_mappings) do 445 for port, mapping in pairs(config_mappings) do
446 port = tonumber(port);
446 table.insert(mapped_ports, port); 447 table.insert(mapped_ports, port);
447 mappings[port] = { 448 mappings[port] = {
448 service_name = mapping, 449 service_name = mapping,
449 service = nil, 450 service = nil,
450 }; 451 };