Skip to content

Commit 3ee9b65

Browse files
authored
Fix server cache to be case-insensitive (#731)
1 parent 733f79d commit 3ee9b65

3 files changed

Lines changed: 7 additions & 3 deletions

File tree

tests/test_cache.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ def test_entries_with_server(self):
119119
cache = r.DNSCache()
120120
cache.async_add_records([record1, record2])
121121
assert set(cache.entries_with_server('ab')) == set([record1, record2])
122+
assert set(cache.entries_with_server('AB')) == set([record1, record2])
122123

123124
def test_entries_with_name(self):
124125
record1 = r.DNSService(
@@ -130,6 +131,7 @@ def test_entries_with_name(self):
130131
cache = r.DNSCache()
131132
cache.async_add_records([record1, record2])
132133
assert set(cache.entries_with_name('irrelevant')) == set([record1, record2])
134+
assert set(cache.entries_with_name('Irrelevant')) == set([record1, record2])
133135

134136
def test_current_entry_with_name_and_alias(self):
135137
record1 = r.DNSPointer(
@@ -142,7 +144,7 @@ def test_current_entry_with_name_and_alias(self):
142144
cache.async_add_records([record1, record2])
143145
assert cache.current_entry_with_name_and_alias('irrelevant', 'x.irrelevant') == record1
144146

145-
def test_entries_with_name(self):
147+
def test_name(self):
146148
record1 = r.DNSService(
147149
'irrelevant', const._TYPE_SRV, const._CLASS_IN, const._DNS_HOST_TTL, 0, 0, 85, 'ab'
148150
)

tests/test_services.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -857,6 +857,8 @@ def mock_incoming_msg(service_state_change: r.ServiceStateChange) -> r.DNSIncomi
857857
# service A updated
858858
service_updated_event.clear()
859859
service_address = '10.0.1.3'
860+
# Verify we match on uppercase
861+
service_server = service_server.upper()
860862
_inject_response(zeroconf, mock_incoming_msg(r.ServiceStateChange.Updated))
861863
service_updated_event.wait(wait_time)
862864
assert service_added_count == 1

zeroconf/_cache.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,11 @@ def get_all_by_details(self, name: str, type_: int, class_: int) -> List[DNSReco
134134

135135
def entries_with_server(self, server: str) -> List[DNSRecord]:
136136
"""Returns a list of entries whose server matches the name."""
137-
return list(self.service_cache.get(server, {}))
137+
return list(self.service_cache.get(server.lower(), []))
138138

139139
def entries_with_name(self, name: str) -> List[DNSRecord]:
140140
"""Returns a list of entries whose key matches the name."""
141-
return list(self.cache.get(name.lower(), {}))
141+
return list(self.cache.get(name.lower(), []))
142142

143143
def current_entry_with_name_and_alias(self, name: str, alias: str) -> Optional[DNSRecord]:
144144
now = current_time_millis()

0 commit comments

Comments
 (0)