Fix bug of incomplete waveform when playing new track twice in quick succession

This commit is contained in:
Drew Weymouth
2025-08-04 08:17:33 -07:00
parent 96b47feb76
commit 6c4435314c
4 changed files with 99 additions and 29 deletions
+11
View File
@@ -77,14 +77,25 @@ func (fs *FileStreamerServer) streamHandler(w http.ResponseWriter, _ *http.Reque
flusher, canFlush := w.(http.Flusher)
bytesRead := int64(0)
buf := make([]byte, 4096)
for {
complete := fs.IsComplete()
if !complete {
if s, err := os.Stat(fs.Path); err == nil {
// make sure we don't read near EOF until file is complete
maxToRead := max(0, s.Size()-bytesRead-1024) /*safety buffer*/
buf = buf[:min(int64(cap(buf)), maxToRead)]
}
} else {
buf = buf[:cap(buf)]
}
n, err := file.Read(buf)
if err != nil && err != io.EOF {
log.Printf("read error: %v", err)
break
}
bytesRead += int64(n)
if n > 0 {
_, err := w.Write(buf[:n])