Skip to content

Commit 27c4e7f

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 <info@mzur.de> (cherry picked from commit c7cbf8e) Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
1 parent c3f73d2 commit 27c4e7f

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

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
@@ -1796,8 +1796,19 @@ public void relayData(OutputStream outputStream, io.milton.http.Range range)
17961796
try {
17971797
connection.setRequestProperty("Connection", "Close");
17981798
if (range != null) {
1799-
connection.addRequestProperty("Range",
1800-
String.format("bytes=%d-%d", range.getStart(), range.getFinish()));
1799+
String rangeHeader;
1800+
Long start = range.getStart();
1801+
Long finish = range.getFinish();
1802+
1803+
if (start == null && finish != null) {
1804+
rangeHeader = String.format("bytes=-%d", finish);
1805+
} else if (start != null && finish == null) {
1806+
rangeHeader = String.format("bytes=%d-", start);
1807+
} else {
1808+
rangeHeader = String.format("bytes=%d-%d", start, finish);
1809+
}
1810+
1811+
connection.addRequestProperty("Range", rangeHeader);
18011812
}
18021813

18031814
connection.connect();

0 commit comments

Comments
 (0)