Skip to content

Commit fb97cf7

Browse files
committed
Synchronize on unknown stream update and ignore input-only streams
1 parent 9c8f97c commit fb97cf7

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

snapcast/control/server.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -402,14 +402,21 @@ def _on_stream_properties(self, data):
402402

403403
def _on_stream_update(self, data):
404404
"""Handle stream update."""
405-
self._streams[data.get('id')].update(data.get('stream'))
406-
_LOGGER.debug('stream %s updated', self._streams[data.get('id')].friendly_name)
407-
self._streams[data.get("id")].callback()
408-
for group in self._groups.values():
409-
if group.stream == data.get('id'):
410-
group.callback()
411-
for clientID in group.clients:
412-
self._clients.get(clientID).callback()
405+
if data.get('id') in self._streams:
406+
self._streams[data.get('id')].update(data.get('stream'))
407+
_LOGGER.debug('stream %s updated', self._streams[data.get('id')].friendly_name)
408+
self._streams[data.get("id")].callback()
409+
for group in self._groups.values():
410+
if group.stream == data.get('id'):
411+
group.callback()
412+
for clientID in group.clients:
413+
self._clients.get(clientID).callback()
414+
else:
415+
if data.get('stream', {}).get('uri', {}).get('query', {}).get('codec') == 'null':
416+
_LOGGER.debug('stream %s is input-only, ignore', data.get('id'))
417+
else:
418+
_LOGGER.info('stream %s not found, synchronize', data.get('id'))
419+
self.synchronize(self.status())
413420

414421
def set_on_update_callback(self, func):
415422
"""Set on update callback function."""

0 commit comments

Comments
 (0)