diff --git a/internal/radio/icecast.go b/internal/radio/icecast.go index 6173057..135abff 100644 --- a/internal/radio/icecast.go +++ b/internal/radio/icecast.go @@ -196,33 +196,32 @@ func (pw *PlaylistLogWatcher) Watch(playlistPath string, n int) (err error) { go func() { for { - select { - case mask := <-pw.changed: - if mask&syscall.IN_MODIFY > 0 { - lastPlayedCacheMutex.Lock() - songs, err := icecastLastPlayedSongs(playlistPath, 1) - if err == nil && len(songs) > 0 { - CheckAndUpdateMostListenedSong(songs[0], currentlyPlaying) - if currentlyPlaying.Time == "" { - currentlyPlaying = songs[0] + mask := <-pw.changed + + if mask&syscall.IN_MODIFY > 0 { + lastPlayedCacheMutex.Lock() + songs, err := icecastLastPlayedSongs(playlistPath, 1) + if err == nil && len(songs) > 0 { + CheckAndUpdateMostListenedSong(songs[0], currentlyPlaying) + if currentlyPlaying.Time == "" { + currentlyPlaying = songs[0] + } else { + currentlyPlaying.Listeners = songs[0].Listeners + if len(lastPlayedCache) == n { + lastPlayedCache = append(lastPlayedCache[1:], currentlyPlaying) } else { - currentlyPlaying.Listeners = songs[0].Listeners - if len(lastPlayedCache) == n { - lastPlayedCache = append(lastPlayedCache[1:], currentlyPlaying) - } else { - lastPlayedCache = append(lastPlayedCache, currentlyPlaying) - } - currentlyPlaying = songs[0] + lastPlayedCache = append(lastPlayedCache, currentlyPlaying) } - } else if err != nil { - log.Println("failed to retrieve last songs:", err) + currentlyPlaying = songs[0] } - lastPlayedCacheMutex.Unlock() - } else if mask&syscall.IN_IGNORED > 0 { - pw.Close() - pw.Watch(playlistPath, n) - return + } else if err != nil { + log.Println("failed to retrieve last songs:", err) } + lastPlayedCacheMutex.Unlock() + } else if mask&syscall.IN_IGNORED > 0 { + pw.Close() + pw.Watch(playlistPath, n) + return } } }()