Don't go crazy with plugin reload logic in the mpd backend in case of corrupted received messages

This commit is contained in:
Fabio Manganiello 2019-01-09 22:05:53 +01:00
parent 544979e7ff
commit 156e2e8b5a

View file

@ -50,25 +50,24 @@ class MusicMpdBackend(Backend):
plugin = None plugin = None
while not self.should_stop(): while not self.should_stop():
success = False try:
plugin = get_plugin('music.mpd')
if not plugin:
raise StopIteration
while not success: status = plugin.status().output
try: if not status or status.get('state') is None:
plugin = get_plugin('music.mpd') raise StopIteration
status = plugin.status().output
track = plugin.currentsong().output
state = status['state'].lower()
playlist = status['playlist']
success = True
except Exception as e:
self.logger.exception(e)
self.logger.info('Reloading crashed MPD plugin')
try:
plugin = get_plugin('music.mpd', reload=True)
except:
pass
time.sleep(self.poll_seconds) track = plugin.currentsong().output
state = status['state'].lower()
playlist = status['playlist']
except StopIteration:
pass
except Exception as e:
self.logger.debug(e)
finally:
time.sleep(self.poll_seconds)
if state != last_state: if state != last_state:
if state == 'stop': if state == 'stop':