about summary refs log tree commit homepage
path: root/lib/dtas/player/client_handler.rb
diff options
authorEric Wong <e@80x24.org>2015-12-07 09:50:26 +0000
committerEric Wong <e@80x24.org>2015-12-07 09:50:26 +0000
commitb08fe09e296524daf4de7ed16e0bed224f5008a2 (patch)
treec349b14b6e72f168469e3a8a732099d5bd5d681a /lib/dtas/player/client_handler.rb
parent3e013d3f24f0f935dce985d4c6bd155889e05dbb (diff)
This defaults to 16384?  This is what mpd uses by default as well.
Of course folks interacting with dtas-player directly can override

	dtas-tl max INTEGER
	dtas-tl max

This is NOT meant to be a hard security measure for local users
talking to dtas-player directly.  It is only to prevent
accidentally stupid things like flooding the playlist with
a broken script and to prevent remote users from DoS-ing
us via the to-be-written mpd proxy/emulation layer.

Remember: dtas-player itself will ALWAYS remain capable of
executing arbitrary code :)
Diffstat (limited to 'lib/dtas/player/client_handler.rb')
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/dtas/player/client_handler.rb b/lib/dtas/player/client_handler.rb
index 500704a..119aa31 100644
--- a/lib/dtas/player/client_handler.rb
+++ b/lib/dtas/player/client_handler.rb
@@ -566,6 +566,7 @@ module DTAS::Player::ClientHandler # :nodoc:
         track_id = @tl.add_track(path, after_track_id, set_as_current)
+        return io.emit('ERR FULL') unless track_id
       rescue ArgumentError => e
         return io.emit("ERR #{e.message}")
@@ -593,6 +594,13 @@ module DTAS::Player::ClientHandler # :nodoc:
         set_bool(io, 'tl shuffle', v) { |b| @tl.shuffle = b }
+    when 'max'
+      case v = msg.shift
+      when nil then io.emit("tl max #{@tl.max}")
+      when %r{\A(\d[\d_]*)\z} then io.emit("tl max #{@tl.max = $1.to_i}")
+      else
+        return io.emit('ERR tl max must a non-negative integer')
+      end
     when "remove"
       track_id = msg.shift or return io.emit("ERR track_id not specified")
       track_id = track_id.to_i