diff options
author | Feross Aboukhadijeh <feross@feross.org> | 2016-09-18 07:28:58 +0300 |
---|---|---|
committer | DC <dcposch@dcpos.ch> | 2016-09-18 07:28:58 +0300 |
commit | 2c8678c96186152cc2c9ba66d0bf1613826c3b65 (patch) | |
tree | da81148fd889b412ad77acce970a63ca60e661b4 /lib | |
parent | 027803df8b513cab190d4c377953169add8846fd (diff) |
server: Handle invalid range handers instead of throwing (#921)
Fixes: #920
Diffstat (limited to 'lib')
-rw-r--r-- | lib/server.js | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/server.js b/lib/server.js index 4f1cbbd..a812eab 100644 --- a/lib/server.js +++ b/lib/server.js @@ -112,11 +112,15 @@ function Server (torrent, opts) { 'DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000' ) - var range - if (req.headers.range) { + // `rangeParser` returns an array of ranges, or an error code (number) if + // there was an error parsing the range. + var range = rangeParser(file.length, req.headers.range || '') + + if (Array.isArray(range)) { + // no support for multi-range request, just use the first range + range = range[0] + res.statusCode = 206 - // no support for multi-range reqs - range = rangeParser(file.length, req.headers.range)[0] debug('range %s', JSON.stringify(range)) res.setHeader( 'Content-Range', @@ -124,6 +128,7 @@ function Server (torrent, opts) { ) res.setHeader('Content-Length', range.end - range.start + 1) } else { + range = null res.setHeader('Content-Length', file.length) } |