@@ -34,16 +34,20 @@ async def fake_query_result(result):
3434 return [FakeQueryResult (host = h ) for h in result ]
3535
3636
37- def fake_addrinfo ( hosts ):
37+ def fake_addrinfo_raw ( return_value ):
3838 async def fake (* args , ** kwargs ):
39- if not hosts :
39+ if not return_value :
4040 raise socket .gaierror
4141
42- return list ([( None , None , None , None , [ h , 0 ]) for h in hosts ])
42+ return return_value
4343
4444 return fake
4545
4646
47+ def fake_addrinfo (hosts ):
48+ return fake_addrinfo_raw (list ([(None , None , None , None , [h , 0 ]) for h in hosts ]))
49+
50+
4751@pytest .mark .skipif (not gethostbyname , reason = "aiodns 1.1 required" )
4852async def test_async_resolver_positive_lookup (loop ) -> None :
4953 with patch ("aiodns.DNSResolver" ) as mock :
@@ -160,3 +164,17 @@ def test_default_resolver() -> None:
160164 # else:
161165 # assert DefaultResolver is ThreadedResolver
162166 assert DefaultResolver is ThreadedResolver
167+
168+
169+ async def test_threaded_resolver_5156 () -> None :
170+ loop = Mock ()
171+ loop .getaddrinfo = fake_addrinfo_raw (
172+ [
173+ (2 , 1 , 6 , "" , ("151.101.188.223" , 443 )),
174+ (10 , 1 , 6 , "" , (10 , b"\x01 \xbb \x00 \x00 \x00 \x00 *\x04 NB\x00 -\x00 \x00 " )),
175+ ]
176+ )
177+ resolver = ThreadedResolver ()
178+ resolver ._loop = loop
179+
180+ await resolver .resolve ("foo" )
0 commit comments