Skip to content

Commit 615adab

Browse files
author
Thierry Boileau
committed
Fixed range issue #607.
1 parent e0774fe commit 615adab

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

modules/org.restlet.test/src/org/restlet/test/data/RangeTestCase.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,15 @@ public void testGet() throws Exception {
266266
assertEquals(2, response.getEntity().getRange().getIndex());
267267
assertEquals(8, response.getEntity().getRange().getSize());
268268

269+
request.setRanges(Arrays.asList(new Range(2, 1000)));
270+
response = client.handle(request);
271+
assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
272+
assertEquals("34567890", response.getEntity().getText());
273+
assertEquals(10, response.getEntity().getSize());
274+
assertEquals(8, response.getEntity().getAvailableSize());
275+
assertEquals(2, response.getEntity().getRange().getIndex());
276+
assertEquals(8, response.getEntity().getRange().getSize());
277+
269278
client.stop();
270279
}
271280

modules/org.restlet/src/org/restlet/engine/application/RangeFilter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,12 @@ protected void afterHandle(Request request, Response response) {
106106
.info("The range of the response entity is not equal to the requested one.");
107107
}
108108

109+
if (response.getEntity().hasKnownSize()
110+
&& requestedRange.getSize() > response
111+
.getEntity().getAvailableSize()) {
112+
requestedRange.setSize(Range.SIZE_MAX);
113+
}
114+
109115
response.setEntity(new RangeRepresentation(
110116
response.getEntity(), requestedRange));
111117
response.setStatus(Status.SUCCESS_PARTIAL_CONTENT);

0 commit comments

Comments
 (0)