diff options
author | Kim Alvefur <zash@zash.se> | 2016-01-08 16:21:05 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2016-01-08 16:21:05 +0100 |
commit | fb972a1ea95f574ecacd7a213a04c4cab5e41f56 (patch) | |
tree | b72ea8b35e4dae603543a1b490f959f32b930870 /util/ip.lua | |
parent | 8502b7dc5d7169a43be5dd6fca14417ed39187a4 (diff) | |
parent | 9b4c1c40131ef343f5141242e134b18c45c2f128 (diff) | |
download | prosody-fb972a1ea95f574ecacd7a213a04c4cab5e41f56.tar.gz prosody-fb972a1ea95f574ecacd7a213a04c4cab5e41f56.zip |
Merge 0.10->trunk
Diffstat (limited to 'util/ip.lua')
-rw-r--r-- | util/ip.lua | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/util/ip.lua b/util/ip.lua index 7dcace5c..ec3b4d7e 100644 --- a/util/ip.lua +++ b/util/ip.lua @@ -25,6 +25,10 @@ local function new_ip(ipStr, proto) elseif proto ~= "IPv4" and proto ~= "IPv6" then return nil, "invalid protocol"; end + local zone; + if proto == "IPv6" and ipStr:find('%', 1, true) then + ipStr, zone = ipStr:match("^(.-)%%(.*)"); + end if proto == "IPv6" and ipStr:find('.', 1, true) then local changed; ipStr, changed = ipStr:gsub(":(%d+)%.(%d+)%.(%d+)%.(%d+)$", function(a,b,c,d) @@ -33,7 +37,7 @@ local function new_ip(ipStr, proto) if changed ~= 1 then return nil, "invalid-address"; end end - return setmetatable({ addr = ipStr, proto = proto }, ip_mt); + return setmetatable({ addr = ipStr, proto = proto, zone = zone }, ip_mt); end local function toBits(ip) |