@@ -1004,6 +1004,37 @@ def test_name_conflicts(self):
10041004 zc .register_service (conflicting_info )
10051005 zc .close ()
10061006
1007+ def test_register_and_lookup_type_by_uppercase_name (self ):
1008+ # instantiate a zeroconf instance
1009+ zc = Zeroconf (interfaces = ['127.0.0.1' ])
1010+ type_ = "_mylowertype._tcp.local."
1011+ name = "Home"
1012+ registration_name = "%s.%s" % (name , type_ )
1013+
1014+ info = ServiceInfo (
1015+ type_ ,
1016+ name = registration_name ,
1017+ server = "random123.local." ,
1018+ addresses = [socket .inet_pton (socket .AF_INET , "1.2.3.4" )],
1019+ port = 80 ,
1020+ properties = {"version" : "1.0" },
1021+ )
1022+ zc .register_service (info )
1023+ _clear_cache (zc )
1024+ info = ServiceInfo (type_ , registration_name )
1025+ info .load_from_cache (zc )
1026+ assert info .addresses == []
1027+
1028+ out = r .DNSOutgoing (r ._FLAGS_QR_QUERY )
1029+ out .add_question (r .DNSQuestion (type_ .upper (), r ._TYPE_PTR , r ._CLASS_IN ))
1030+ zc .send (out )
1031+ time .sleep (0.5 )
1032+ info = ServiceInfo (type_ , registration_name )
1033+ info .load_from_cache (zc )
1034+ assert info .addresses == [socket .inet_pton (socket .AF_INET , "1.2.3.4" )]
1035+ assert info .properties == {b"version" : b"1.0" }
1036+ zc .close ()
1037+
10071038
10081039class TestServiceRegistry (unittest .TestCase ):
10091040 def test_only_register_once (self ):
0 commit comments