Просмотр исходного кода

Intercept response status code in tpds worker and catch errors before proxying

James Allen 12 лет назад
Родитель
Сommit
8146dd7ce9
1 измененных файлов с 17 добавлено и 13 удалено
  1. 17 13
      services/web/TpdsWorker.coffee

+ 17 - 13
services/web/TpdsWorker.coffee

@@ -38,21 +38,25 @@ processingFuncs =
 			request options.streamOrigin, (err,res, body)->
 				logger.log options:options, body:body
 		origin = request(options.streamOrigin)
+		origin.on 'response', (res) ->
+			if 200 <= res.statusCode < 300
+				dest = request(options)
+				origin.pipe(dest)
+
+				dest.on "error", (err)->
+					logger.error err:err, options:options, "something went wrong in pipeStreamFrom dest"
+					callback(err)
+					
+				dest.on 'end', callback
+			else
+				error = new Error("received non-success status code: #{res.statusCode}")
+				logger.error err: error, options: options, "something went wrong connecting to origin"
+				callback(error)
+
 		origin.on 'error', (err)->
 			logger.error err:err, options:options, "something went wrong in pipeStreamFrom origin"
-			if err?
-				callback(err)
-			else
-				callback()
-		dest = request(options)
-		origin.pipe(dest)
-		dest.on "error", (err)->
-			logger.error err:err, options:options, "something went wrong in pipeStreamFrom dest"
-			if err?
-				callback(err)
-			else
-				callback()
-		dest.on 'end', callback
+			callback(err)
+
 
 
 workerRegistration = (groupKey, method, options, callback)->