فهرست منبع

prevent leak of urlStream on failed downloads

Brian Gough 11 سال پیش
والد
کامیت
76cd52af70
1فایلهای تغییر یافته به همراه10 افزوده شده و 0 حذف شده
  1. 10 0
      services/clsi/app/coffee/UrlFetcher.coffee

+ 10 - 0
services/clsi/app/coffee/UrlFetcher.coffee

@@ -30,6 +30,16 @@ module.exports = UrlFetcher =
 			if res.statusCode >= 200 and res.statusCode < 300
 				urlStream.pipe(fileStream)
 			else
+				logger.error statusCode: res.statusCode, url:url, filePath: filePath, "unexpected status code downloading url to cache"
+				# https://nodejs.org/api/http.html#http_class_http_clientrequest
+				# If you add a 'response' event handler, then you must consume
+				# the data from the response object, either by calling
+				# response.read() whenever there is a 'readable' event, or by
+				# adding a 'data' handler, or by calling the .resume()
+				# method. Until the data is consumed, the 'end' event will not
+				# fire. Also, until the data is read it will consume memory
+				# that can eventually lead to a 'process out of memory' error.
+				urlStream.on 'data', () -> # discard the data
 				callbackOnce(new Error("URL returned non-success status code: #{res.statusCode} #{url}"))
 
 		urlStream.on "error", (error) ->