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

Only put timeout on response, not whole request

James Allen пре 12 година
родитељ
комит
73b67026c7
1 измењених фајлова са 4 додато и 0 уклоњено
  1. 4 0
      services/web/TpdsWorker.coffee

+ 4 - 0
services/web/TpdsWorker.coffee

@@ -45,8 +45,10 @@ processingFuncs =
 		origin = request(options.streamOrigin)
 		origin = request(options.streamOrigin)
 
 
 		cancelled = false
 		cancelled = false
+		gotResponse = false
 		origin.on 'response', (res) ->
 		origin.on 'response', (res) ->
 			return if cancelled
 			return if cancelled
+			gotResponse = true
 			if 200 <= res.statusCode < 300
 			if 200 <= res.statusCode < 300
 				dest = request(options)
 				dest = request(options)
 				origin.pipe(dest)
 				origin.pipe(dest)
@@ -63,10 +65,12 @@ processingFuncs =
 
 
 		origin.on 'error', (err)->
 		origin.on 'error', (err)->
 			return if cancelled
 			return if cancelled
+			gotResponse = true
 			logger.error err:err, options:options, "something went wrong in pipeStreamFrom origin"
 			logger.error err:err, options:options, "something went wrong in pipeStreamFrom origin"
 			callback(err)
 			callback(err)
 
 
 		setTimeout () ->
 		setTimeout () ->
+			return if gotResponse
 			cancelled = true
 			cancelled = true
 			error = new Error("timeout")
 			error = new Error("timeout")
 			logger.error err: error, options: options, "timeout"
 			logger.error err: error, options: options, "timeout"