diff options
author | Aliaksandr Valialkin <valyala@gmail.com> | 2016-02-08 16:21:49 +0200 |
---|---|---|
committer | Aliaksandr Valialkin <valyala@gmail.com> | 2016-02-08 16:21:49 +0200 |
commit | e72e899aa358749597d35c2391e402de91a6f9f9 (patch) | |
tree | e6930c61c294593417c8989566a77e12f4d94053 /fs_test.go | |
parent | typo fix after f340a2920f5ba8dea28aa4f534168441a3bf4e71 (diff) | |
download | fasthttp-e72e899aa358749597d35c2391e402de91a6f9f9.tar.gz fasthttp-e72e899aa358749597d35c2391e402de91a6f9f9.tar.bz2 fasthttp-e72e899aa358749597d35c2391e402de91a6f9f9.zip |
Issue #47: allow out-of range offsets in byte range headers according to RFC 2616
Diffstat (limited to 'fs_test.go')
-rw-r--r-- | fs_test.go | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -258,6 +258,15 @@ func TestParseByteRangeSuccess(t *testing.T) { testParseByteRangeSuccess(t, "bytes=123-", 456, 123, 455) testParseByteRangeSuccess(t, "bytes=-1", 1, 0, 0) testParseByteRangeSuccess(t, "bytes=-123", 456, 333, 455) + + // End position exceeding content-length. It should be updated to content-length-1. + // See https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35 + testParseByteRangeSuccess(t, "bytes=1-2345", 234, 1, 233) + testParseByteRangeSuccess(t, "bytes=0-2345", 2345, 0, 2344) + + // Start position overflow. Whole range must be returned. + // See https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35 + testParseByteRangeSuccess(t, "bytes=-567", 56, 0, 55) } func testParseByteRangeSuccess(t *testing.T, v string, contentLength, startPos, endPos int) { @@ -292,10 +301,7 @@ func TestParseByteRangeError(t *testing.T) { testParseByteRangeError(t, "bytes=1-2,4-6", 123) // byte range exceeding contentLength - testParseByteRangeError(t, "bytes=1-2345", 234) - testParseByteRangeError(t, "bytes=1-2345", 2345) testParseByteRangeError(t, "bytes=123-", 12) - testParseByteRangeError(t, "bytes=-567", 56) // startPos exceeding endPos testParseByteRangeError(t, "bytes=123-34", 1234) |