Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 8 additions & 21 deletions zeroconf/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1655,20 +1655,12 @@ def _set_properties(self, properties: Union[bytes, Dict]) -> None:
if isinstance(key, str):
key = key.encode('utf-8')

if value is None:
suffix = b''
elif isinstance(value, str):
suffix = value.encode('utf-8')
elif isinstance(value, bytes):
suffix = value
elif isinstance(value, int):
if value:
suffix = b'true'
else:
suffix = b'false'
else:
suffix = b''
list_.append(b'='.join((key, suffix)))
record = key
if value is not None:
if not isinstance(value, bytes):
value = str(value).encode('utf-8')
record += b'=' + value
list_.append(record)
for item in list_:
result = b''.join((result, int2byte(len(item)), item))
self.text = result
Expand All @@ -1691,16 +1683,11 @@ def _set_text(self, text: bytes) -> None:
for s in strs:
parts = s.split(b'=', 1)
try:
key, value = parts # type: Tuple[bytes, Union[bool, bytes]]
key, value = parts # type: Tuple[bytes, Optional[bytes]]
except ValueError:
# No equals sign at all
key = s
value = False
else:
if value == b'true':
value = True
elif value == b'false' or not value:
value = False
value = None

# Only update non-existent properties
if key and result.get(key) is None:
Expand Down
10 changes: 5 additions & 5 deletions zeroconf/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -985,19 +985,19 @@ def update_service(self, zeroconf, type, name):
# get service info without answer cache
info = zeroconf_browser.get_service_info(type_, registration_name)
assert info is not None
assert info.properties[b'prop_none'] is False
assert info.properties[b'prop_none'] is None
assert info.properties[b'prop_string'] == properties['prop_string']
assert info.properties[b'prop_float'] is False
assert info.properties[b'prop_float'] == b'1.0'
assert info.properties[b'prop_blank'] == properties['prop_blank']
assert info.properties[b'prop_true'] is True
assert info.properties[b'prop_false'] is False
assert info.properties[b'prop_true'] == b'1'
assert info.properties[b'prop_false'] == b'0'
assert info.addresses == addresses[:1] # no V6 by default
all_addresses = info.addresses_by_version(r.IPVersion.All)
assert all_addresses == addresses, all_addresses

info = zeroconf_browser.get_service_info(subtype, registration_name)
assert info is not None
assert info.properties[b'prop_none'] is False
assert info.properties[b'prop_none'] is None

# test TXT record update
sublistener = MySubListener()
Expand Down