Skip to content

Commit e684b17

Browse files
mzurmksahakyan
authored andcommitted
webdav: fix range header formatting in relay request
An open-ended range like `bytes=0-` produced an invalid header like "bytes=0-null", resulting in no data being transferred. This patch implements support for open-ended ranges (`bytes=0-`) and suffix ranges (`bytes=-500`). References #7971 Signed-off-by: Martin Zurowietz <[email protected]> (cherry picked from commit c7cbf8e) Signed-off-by: Tigran Mkrtchyan <[email protected]>
1 parent 0bc87e4 commit e684b17

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

modules/dcache-webdav/src/main/java/org/dcache/webdav/DcacheResourceFactory.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1799,8 +1799,19 @@ public void relayData(OutputStream outputStream, io.milton.http.Range range)
17991799
try {
18001800
connection.setRequestProperty("Connection", "Close");
18011801
if (range != null) {
1802-
connection.addRequestProperty("Range",
1803-
String.format("bytes=%d-%d", range.getStart(), range.getFinish()));
1802+
String rangeHeader;
1803+
Long start = range.getStart();
1804+
Long finish = range.getFinish();
1805+
1806+
if (start == null && finish != null) {
1807+
rangeHeader = String.format("bytes=-%d", finish);
1808+
} else if (start != null && finish == null) {
1809+
rangeHeader = String.format("bytes=%d-", start);
1810+
} else {
1811+
rangeHeader = String.format("bytes=%d-%d", start, finish);
1812+
}
1813+
1814+
connection.addRequestProperty("Range", rangeHeader);
18041815
}
18051816

18061817
connection.connect();

0 commit comments

Comments
 (0)