|
|
@@ -5,6 +5,7 @@ var util = require('util'),
|
|
|
|
|
|
var request = require('request'),
|
|
|
extend = require('xtend'),
|
|
|
+ equal = require('deep-equal'),
|
|
|
oncemore = require('./oncemore'),
|
|
|
debug = require('debug')('hls:uristream');
|
|
|
|
|
|
@@ -150,13 +151,19 @@ function setupHttp(uri, options, dst) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- if (!dst.meta) {
|
|
|
- // extract meta information from header
|
|
|
- var typeparts = /^(.+?\/.+?)(?:;\w*.*)?$/.exec(res.headers['content-type']) || [null, 'application/octet-stream'],
|
|
|
- mimetype = typeparts[1].toLowerCase(),
|
|
|
- modified = res.headers['last-modified'] ? new Date(res.headers['last-modified']) : null;
|
|
|
-
|
|
|
- dst.meta = {url:url.format(req.uri), mime:mimetype, size:filesize, modified:modified};
|
|
|
+ // extract meta information from header
|
|
|
+ var typeparts = /^(.+?\/.+?)(?:;\w*.*)?$/.exec(res.headers['content-type']) || [null, 'application/octet-stream'],
|
|
|
+ mimetype = typeparts[1].toLowerCase(),
|
|
|
+ modified = res.headers['last-modified'] ? new Date(res.headers['last-modified']) : null;
|
|
|
+
|
|
|
+ var meta = { url:url.format(req.uri), mime:mimetype, size:filesize, modified:modified };
|
|
|
+ if (dst.meta) {
|
|
|
+ if (!equal(dst.meta, meta)) {
|
|
|
+ tries = 0;
|
|
|
+ failOrRetry(new Error('File has changed'));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ dst.meta = meta;
|
|
|
dst.emit('meta', dst.meta);
|
|
|
}
|
|
|
}
|