From 2c8678c96186152cc2c9ba66d0bf1613826c3b65 Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Sun, 18 Sep 2016 06:28:58 +0200 Subject: server: Handle invalid range handers instead of throwing (#921) Fixes: #920 --- lib/server.js | 13 +++++++++---- 1 file 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) } -- cgit v1.2.3