aboutsummaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/HttpServer.hx12
-rw-r--r--src/server/Utils.hx4
2 files changed, 10 insertions, 6 deletions
diff --git a/src/server/HttpServer.hx b/src/server/HttpServer.hx
index 0edf4e3..c4853ee 100644
--- a/src/server/HttpServer.hx
+++ b/src/server/HttpServer.hx
@@ -123,12 +123,12 @@ class HttpServer {
var range:String = req.headers["range"];
if (range == null) range = "bytes=0-";
final ranges = ~/[-=]/g.split(range);
- var start = Std.parseInt(ranges[1]);
- if (start == null) start = 0;
+ var start = Std.parseFloat(ranges[1]);
+ if (Utils.isOutOfRange(start, 0, videoSize - 1)) start = 0;
final CHUNK_SIZE = 1024 * 1024 * 5; // 5 MB
- var end = Std.parseInt(ranges[2]);
- if (end == null) end = start + CHUNK_SIZE;
- end = Std.int(Math.min(end, videoSize - 1));
+ var end = Std.parseFloat(ranges[2]);
+ if (Math.isNaN(end)) end = start + CHUNK_SIZE;
+ if (Utils.isOutOfRange(end, start, videoSize - 1)) end = videoSize - 1;
final contentLength = end - start + 1;
res.setHeader("Content-Range", 'bytes ${start}-${end}/${videoSize}');
@@ -136,7 +136,7 @@ class HttpServer {
// HTTP Status 206 for Partial Content
res.statusCode = 206;
// create video read stream for this particular chunk
- final videoStream = Fs.createReadStream(filePath, {start: start, end: end});
+ final videoStream = Fs.createReadStream(filePath, {start: cast start, end: cast end});
// stream the video chunk to the client
videoStream.pipe(res);
return true;
diff --git a/src/server/Utils.hx b/src/server/Utils.hx
index 9aa0d66..a2f4382 100644
--- a/src/server/Utils.hx
+++ b/src/server/Utils.hx
@@ -69,6 +69,10 @@ class Utils {
return "127.0.0.1";
}
+ public static function isOutOfRange(value:Float, min:Float, max:Float):Bool {
+ return value == null || Math.isNaN(value) || value < min || value > max;
+ }
+
public static function sortedPush(ids:Array<Int>, id:Int):Void {
for (i => n in ids) {
if (id < n) {
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage