diff --git a/modules/dcache-webdav/src/main/java/org/dcache/webdav/DcacheResourceFactory.java b/modules/dcache-webdav/src/main/java/org/dcache/webdav/DcacheResourceFactory.java index ae2d7594aa5..03c2ff298c1 100644 --- a/modules/dcache-webdav/src/main/java/org/dcache/webdav/DcacheResourceFactory.java +++ b/modules/dcache-webdav/src/main/java/org/dcache/webdav/DcacheResourceFactory.java @@ -1796,8 +1796,19 @@ public void relayData(OutputStream outputStream, io.milton.http.Range range) try { connection.setRequestProperty("Connection", "Close"); if (range != null) { - connection.addRequestProperty("Range", - String.format("bytes=%d-%d", range.getStart(), range.getFinish())); + String rangeHeader; + Long start = range.getStart(); + Long finish = range.getFinish(); + + if (start == null && finish != null) { + rangeHeader = String.format("bytes=-%d", finish); + } else if (start != null && finish == null) { + rangeHeader = String.format("bytes=%d-", start); + } else { + rangeHeader = String.format("bytes=%d-%d", start, finish); + } + + connection.addRequestProperty("Range", rangeHeader); } connection.connect();