@@ -17,6 +17,10 @@ local openssl_ssl = require "openssl.ssl"
17
17
local openssl_ctx = require " openssl.ssl.context"
18
18
local openssl_verify_param = require " openssl.x509.verify_param"
19
19
20
+ local EOF = lpeg .P (- 1 )
21
+ local IPv4address = IPv4_patts .IPv4address * EOF
22
+ local IPv6addrz = IPv6_patts .IPv6addrz * EOF
23
+
20
24
-- Create a shared 'default' TLS context
21
25
local default_ctx = http_tls .new_client_context ()
22
26
@@ -165,6 +169,13 @@ local record_ipv6_mt = {
165
169
__index = record_ipv6_methods ;
166
170
}
167
171
function records_methods :add_v6 (addr , port )
172
+ if type (addr ) == " string" then
173
+ -- Normalise
174
+ addr = assert (IPv6addrz :match (addr ))
175
+ elseif getmetatable (addr ) ~= IPv6_patts .IPv6_mt then
176
+ error (" invalid argument" )
177
+ end
178
+ addr = tostring (addr )
168
179
local n = self .n + 1
169
180
self [n ] = setmetatable ({ addr = addr , port = port }, record_ipv6_mt )
170
181
self .n = n
@@ -192,10 +203,6 @@ function records_methods:remove_family(family)
192
203
end
193
204
end
194
205
195
- local EOF = lpeg .P (- 1 )
196
- local IPv4address = IPv4_patts .IPv4address * EOF
197
- local IPv6addrz = IPv6_patts .IPv6addrz * EOF
198
-
199
206
local function lookup_records (options , timeout )
200
207
local family = options .family
201
208
if family == nil then
@@ -224,7 +231,7 @@ local function lookup_records(options, timeout)
224
231
225
232
local ipv6 = IPv6addrz :match (host )
226
233
if ipv6 then
227
- records :add_v6 (host , port )
234
+ records :add_v6 (ipv6 , port )
228
235
return records
229
236
end
230
237
0 commit comments