Quellcode durchsuchen

Continue after errors

Gil Pedersen vor 8 Jahren
Ursprung
Commit
96ac250d33
1 geänderte Dateien mit 16 neuen und 4 gelöschten Zeilen
  1. 16 4
      lib/hls-reader.js

+ 16 - 4
lib/hls-reader.js

@@ -65,12 +65,23 @@ function HlsReader(segmentReader, options) {
   this.isHooked = false;
   this.buffer = new Passthrough({ highWaterMark: this.bufferSize });
 
-  StreamEach(this.reader, this.process.bind(this), (err) => {
+  const processStreams = () => {
 
-    if (err) throw err;
+    StreamEach(this.reader, this.process.bind(this), (err) => {
 
-    this.buffer.end();
-  });
+      if (err) {
+        return processStreams(); // retry
+      }
+
+      this.buffer.end();
+    });
+  };
+
+  if (this.reader.index) {
+    processStreams();
+  } else {
+    this.reader.once('index', processStreams);
+  }
 
   // start output if needed
   if (!this.sync) {
@@ -133,6 +144,7 @@ HlsReader.prototype.process = async function(segmentInfo, done)  {
     this.hook();
   }
   catch (err) {
+    console.error('process error', err.stack || err);
     result = err;
   }
   finally {