From 5077e0d5e1448f7a225c0a1c886ce0b3c445515a Mon Sep 17 00:00:00 2001 From: Peter Marheine Date: Thu, 23 May 2019 10:34:57 +1000 Subject: [PATCH] Short circuit RangeOutputStream for open ranges There's no reason to wrap a stream in an output that will do nothing, as when the requested range is 0-; eg the entire stream. --- .../main/java/org/airsonic/player/io/RangeOutputStream.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/airsonic-main/src/main/java/org/airsonic/player/io/RangeOutputStream.java b/airsonic-main/src/main/java/org/airsonic/player/io/RangeOutputStream.java index 8c9c6ee6..cdb3ac9a 100644 --- a/airsonic-main/src/main/java/org/airsonic/player/io/RangeOutputStream.java +++ b/airsonic-main/src/main/java/org/airsonic/player/io/RangeOutputStream.java @@ -55,7 +55,8 @@ public class RangeOutputStream extends FilterOutputStream { * @return The possibly wrapped output stream. */ public static OutputStream wrap(OutputStream out, HttpRange range) { - if (range == null) { + // Skip filtering if there's no range or it represents the entire stream. + if (range == null || (range.getFirstBytePos() == 0 && !range.isClosed())) { return out; } return new RangeOutputStream(out, range);