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