@@ -32,19 +32,33 @@ public function __construct(
32
32
33
33
public function resolve (string $ name , ?int $ typeRestriction = null , ?Cancellation $ cancellation = null ): array
34
34
{
35
- if (!isset ($ this ->dnsMap [$ name ]) || !\in_array ($ typeRestriction , [DnsRecord::A, null ], true )) {
35
+ $ recordType = DnsRecord::A;
36
+ $ ip = $ this ->dnsMap [$ name ] ?? null ;
37
+
38
+ if (null !== $ ip && str_contains ($ ip , ': ' )) {
39
+ $ recordType = DnsRecord::AAAA ;
40
+ }
41
+
42
+ if (null === $ ip || $ recordType !== ($ typeRestriction ?? $ recordType )) {
36
43
return Dns \resolve ($ name , $ typeRestriction , $ cancellation );
37
44
}
38
45
39
- return [new DnsRecord ($ this -> dnsMap [ $ name ], DnsRecord::A , null )];
46
+ return [new DnsRecord ($ ip , $ recordType , null )];
40
47
}
41
48
42
49
public function query (string $ name , int $ type , ?Cancellation $ cancellation = null ): array
43
50
{
44
- if (!isset ($ this ->dnsMap [$ name ]) || DnsRecord::A !== $ type ) {
51
+ $ recordType = DnsRecord::A;
52
+ $ ip = $ this ->dnsMap [$ name ] ?? null ;
53
+
54
+ if (null !== $ ip && str_contains ($ ip , ': ' )) {
55
+ $ recordType = DnsRecord::AAAA ;
56
+ }
57
+
58
+ if (null !== $ ip || $ recordType !== $ type ) {
45
59
return Dns \resolve ($ name , $ type , $ cancellation );
46
60
}
47
61
48
- return [new DnsRecord ($ this -> dnsMap [ $ name ], DnsRecord::A , null )];
62
+ return [new DnsRecord ($ ip , $ recordType , null )];
49
63
}
50
64
}
0 commit comments