Browse Source

fix mime type compare case sensitivity + refactor

Gil Pedersen 12 years ago
parent
commit
310cb4b8ba
1 changed files with 18 additions and 6 deletions
  1. 18 6
      lib/reader.js

+ 18 - 6
lib/reader.js

@@ -95,11 +95,9 @@ function fetchfrom(reader, seqNo, segment, cb) {
   }
 
   function onmeta(meta) {
-    debug('got segment info', meta);
+    debug('got segment meta', meta);
 
-    if (meta.mime !== 'video/mp2t' && 
-        meta.mime !== 'audio/aac' && meta.mime !== 'audio/x-aac' &&
-        meta.mime !== 'audio/ac3') {
+    if (reader.segmentMimeTypes.indexOf(meta.mime.toLowerCase()) === -1) {
       if (stream.abort) stream.abort();
       return stream.emit(new Error('Unsupported segment MIME type: '+meta.mime));
     }
@@ -211,8 +209,9 @@ function HlsStreamReader(src, options) {
     if (!self.readable) return;
     var stream = uristream(url.format(self.url), { timeout:30*1000 });
     stream.on('meta', function(meta) {
-      if (meta.mime !== 'application/vnd.apple.mpegurl' &&
-          meta.mime !== 'application/x-mpegurl' && meta.mime !== 'audio/mpegurl') {
+      debug('got index meta', meta);
+
+      if (self.indexMimeTypes.indexOf(meta.mime.toLowerCase()) === -1) {
         // FIXME: correctly handle .m3u us-ascii encoding
         if (stream.abort) stream.abort();
         return stream.emit('error', new Error('Invalid MIME type: '+meta.mime));
@@ -244,6 +243,19 @@ function HlsStreamReader(src, options) {
 }
 util.inherits(HlsStreamReader, Readable);
 
+HlsStreamReader.prototype.indexMimeTypes = [
+  'application/vnd.apple.mpegurl',
+  'application/x-mpegurl',
+  'audio/mpegurl',
+];
+
+HlsStreamReader.prototype.segmentMimeTypes = [
+  'video/mp2t',
+  'audio/aac',
+  'audio/x-aac',
+  'audio/ac3',
+];
+
 HlsStreamReader.prototype._read = function(n) {
   this.readState.active = true;
   checknext(this);