@@ -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
@@ -196,10 +207,6 @@ function records_methods:remove_family(family)
196
207
end
197
208
end
198
209
199
- local EOF = lpeg .P (- 1 )
200
- local IPv4address = IPv4_patts .IPv4address * EOF
201
- local IPv6addrz = IPv6_patts .IPv6addrz * EOF
202
-
203
210
local function lookup_records (options , timeout )
204
211
local family = options .family
205
212
if family == nil then
@@ -228,7 +235,7 @@ local function lookup_records(options, timeout)
228
235
229
236
local ipv6 = IPv6addrz :match (host )
230
237
if ipv6 then
231
- records :add_v6 (host , port )
238
+ records :add_v6 (ipv6 , port )
232
239
return records
233
240
end
234
241
0 commit comments