From bfcd464606817c21ed272e04425b4d728a356975 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 9 Sep 2013 07:22:59 +0000 Subject: player/client_handler: prevent seek from excessive requeue Otherwise we end up constantly pushing tracks to the top of the queue and getting surprising behavior if seek is called repeatedly. --- lib/dtas/player/client_handler.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/dtas/player/client_handler.rb b/lib/dtas/player/client_handler.rb index 7a63df1..355451d 100644 --- a/lib/dtas/player/client_handler.rb +++ b/lib/dtas/player/client_handler.rb @@ -363,8 +363,13 @@ module DTAS::Player::ClientHandler # :nodoc: rescue ArgumentError return io.emit("ERR bad time format") end - @queue.unshift([ @current.infile, offset ]) - __buf_reset(@current.dst) # trigger EPIPE + if @current.requeued + @queue[0][1] = offset + else + @queue.unshift([ @current.infile, offset ]) + @current.requeued = true + __buf_reset(@current.dst) # trigger EPIPE + end else return io.emit("ERR unseekable") end -- cgit v1.2.3-24-ge0c7