Преглед изворни кода

Check if streams are already destroyed before destroying

Simon Detheridge пре 6 година
родитељ
комит
f440cec8ec

+ 11 - 11
services/filestore/app/js/FileController.js

@@ -61,18 +61,18 @@ function getFile(req, res, next) {
     }
 
     pipeline(fileStream, res, err => {
-      if (err) {
+      if (!fileStream.destroyed) {
         fileStream.destroy()
-        if (err.code === 'ERR_STREAM_PREMATURE_CLOSE') {
-          res.end()
-        } else {
-          next(
-            new Errors.ReadError({
-              message: 'error transferring stream',
-              info: { bucket, key, format, style }
-            }).withCause(err)
-          )
-        }
+      }
+      if (err && err.code === 'ERR_STREAM_PREMATURE_CLOSE') {
+        res.end()
+      } else if (err) {
+        next(
+          new Errors.ReadError({
+            message: 'error transferring stream',
+            info: { bucket, key, format, style }
+          }).withCause(err)
+        )
       }
     })
   })

+ 3 - 1
services/filestore/app/js/PersistorHelper.js

@@ -114,7 +114,9 @@ function getReadyPipeline(...streams) {
       }
       if (err) {
         for (const stream of streams) {
-          stream.destroy()
+          if (!stream.destroyed) {
+            stream.destroy()
+          }
         }
       }
     }