aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2021-07-11 22:39:30 +0300
committerRblSb <msrblsb@gmail.com>2021-07-11 22:39:30 +0300
commitafc010aeb7b7bdf750eaeb5c47db0fe345b492f5 (patch)
tree0343fdb53d47796dc96b7ef84de41def36da059a /build
parentbba27c17e25a253d6fecb36dce170fea328fbcdd (diff)
Improve partial content streams
Diffstat (limited to 'build')
-rw-r--r--build/server.js24
1 files changed, 17 insertions, 7 deletions
diff --git a/build/server.js b/build/server.js
index ab89146..5601172 100644
--- a/build/server.js
+++ b/build/server.js
@@ -225,6 +225,9 @@ EReg.prototype = {
return b;
}
}
+ ,split: function(s) {
+ return s.replace(this.r,"#__delim__#").split("#__delim__#");
+ }
,map: function(s,f) {
var offset = 0;
var buf_b = "";
@@ -3555,18 +3558,25 @@ server_HttpServer.readFileError = function(err,res,filePath) {
}
};
server_HttpServer.serveMedia = function(req,res,filePath) {
- var range = req.headers["range"];
- if(range == null) {
- return false;
- }
filePath = decodeURIComponent(filePath.split("+").join(" "));
if(!js_node_Fs.existsSync(filePath)) {
return false;
}
var videoSize = js_node_Fs.statSync(filePath).size;
- var _this_r = new RegExp("[^0-9]","g".split("u").join(""));
- var start = Std.parseInt(range.replace(_this_r,""));
- var end = Math.min(start + 5242880,videoSize - 1) | 0;
+ var range = req.headers["range"];
+ if(range == null) {
+ range = "bytes=0-";
+ }
+ var ranges = new EReg("[-=]","g").split(range);
+ var start = Std.parseInt(ranges[1]);
+ if(start == null) {
+ start = 0;
+ }
+ var end = Std.parseInt(ranges[2]);
+ if(end == null) {
+ end = start + 5242880;
+ }
+ end = Math.min(end,videoSize - 1) | 0;
res.setHeader("Content-Range","bytes " + start + "-" + end + "/" + videoSize);
res.setHeader("Content-Length","" + (end - start + 1));
res.statusCode = 206;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage