From cb3cd125d5d765bfddb0a1b8af17e9ddab8bc08f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 2 Mar 2012 20:04:39 -0800 Subject: [PATCH] prevents sticker race conditions from crashing the server (#3) --- src/daemon.coffee | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/daemon.coffee b/src/daemon.coffee index 39d2569d139..05eb414cfd4 100755 --- a/src/daemon.coffee +++ b/src/daemon.coffee @@ -173,8 +173,12 @@ updateStickers = -> if name == "file" current_file = value else if name == "sticker" - [_, value] = mpd.split_once value, "=" - my_mpd.library.track_table[current_file].last_queued = new Date(value) + value = mpd.split_once(value, "=")[1] + track = my_mpd.library.track_table[current_file] + if track? + track.last_queued = new Date(value) + else + log.error "#{current_file} has a last-queued sticker of #{value} but we don't have it in our library cache." getRandomSongFiles = (count) -> return [] if count == 0 @@ -243,7 +247,7 @@ class DirectMpd extends mpd.Mpd constructor: (@mpd_socket) -> super() @mpd_socket.on 'data', (data) => - @receive data.toString() + @receive data @mpd_socket.on 'end', -> log.warn "server mpd disconnect" @mpd_socket.on 'error', ->