From 1d67ea70cc7def976b2695477e566172ea2e8010 Mon Sep 17 00:00:00 2001
From: Eru Penkman <eru.penkman@gmail.com>
Date: Sat, 15 Nov 2014 14:21:15 +1000
Subject: [PATCH 1/4] update readme

---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index 1943f3f..46fc1b0 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,8 @@
   <img src="https://raw.github.com/nodejitsu/node-http-proxy/master/doc/logo.png"/>
 </p>
 
+### Fork adding redirect following
+
 node-http-proxy
 =======
 
-- 
GitLab


From f079ee77bf75d5f9f573683b0400edf371dbad72 Mon Sep 17 00:00:00 2001
From: Eru Penkman <eru.penkman@gmail.com>
Date: Sat, 15 Nov 2014 14:29:15 +1000
Subject: [PATCH 2/4] change

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 46fc1b0..5d5fb47 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
   <img src="https://raw.github.com/nodejitsu/node-http-proxy/master/doc/logo.png"/>
 </p>
 
-### Fork adding redirect following
+### Fork adding redirect following by P.I. Penkman.
 
 node-http-proxy
 =======
-- 
GitLab


From a4b4e9b1dc3592514e924549595333c75f9bef0f Mon Sep 17 00:00:00 2001
From: Eru Penkman <eru.penkman@gmail.com>
Date: Sat, 15 Nov 2014 17:08:53 +1000
Subject: [PATCH 3/4] Added an optional argument to proxyRes so that users can
 handle sending the response themselves. Added an example of using this to
 enable following redirects.

---
 examples/http/redirect.js             | 39 +++++++++++++++++++++++++++
 lib/http-proxy/passes/web-incoming.js | 22 ++++++++++-----
 2 files changed, 54 insertions(+), 7 deletions(-)
 create mode 100644 examples/http/redirect.js

diff --git a/examples/http/redirect.js b/examples/http/redirect.js
new file mode 100644
index 0000000..3e566c6
--- /dev/null
+++ b/examples/http/redirect.js
@@ -0,0 +1,39 @@
+var util = require('util'),
+  colors = require('colors'),
+  http = require('http'),
+  httpProxy = require('../../lib/http-proxy');
+
+
+//
+// Basic Http Proxy Server
+//
+
+var proxy = httpProxy.createProxyServer();
+http.createServer(function(req, res) {
+  proxy.web(req, res, {
+    target: 'http://localhost:9003'
+  })
+}).listen(8003);
+proxy.on('proxyRes', function(proxyRes, req, res, done) {
+  //check for redirects and follow them
+  if (proxyRes.statusCode <= 399 && proxyRes.statusCode >= 300 && proxyRes.headers.location) {
+    proxy.web(req, res, {
+      target: proxyRes.headers.location
+    });
+    done();
+  }
+});
+//
+// Target Http Server
+//
+http.createServer(function(req, res) {
+  res.writeHead(302, {
+    'Location': 'http://localhost:9004'
+  });
+  res.end();
+}).listen(9003);
+
+http.createServer(function(req, res) {
+  res.write('request successfully redirected to localhost:9004: ' + '\n' + JSON.stringify(req.headers, true, 2));
+  res.end();
+}).listen(9004);
\ No newline at end of file
diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js
index 572c11a..c6003eb 100644
--- a/lib/http-proxy/passes/web-incoming.js
+++ b/lib/http-proxy/passes/web-incoming.js
@@ -142,20 +142,28 @@ web_o = Object.keys(web_o).map(function(pass) {
     (options.buffer || req).pipe(proxyReq);
 
     proxyReq.on('response', function(proxyRes) {
-      if(server) { server.emit('proxyRes', proxyRes, req, res); }
-      for(var i=0; i < web_o.length; i++) {
-       if(web_o[i](req, res, proxyRes)) { break; }
+      var isDone = false
+
+      function done() {
+        isDone = true;
+      }
+      if (server) {
+        server.emit('proxyRes', proxyRes, req, res, done);
       }
 
       // Allow us to listen when the proxy has completed
       proxyRes.on('end', function () {
           server.emit('end', req, res, proxyRes);
-      })
+      });
+      if (!isDone) {
+        for (var i = 0; i < web_o.length; i++) {
+          if (web_o[i](req, res, proxyRes)) { break; }
+        }
+        proxyRes.pipe(res);
+      }
 
-      proxyRes.pipe(res);
+      //proxyReq.end();
     });
-
-    //proxyReq.end();
   }
 
 ] // <--
-- 
GitLab


From 37f85c4b4fd5e7975380d5eb6857d324efe708d1 Mon Sep 17 00:00:00 2001
From: Eru Penkman <eru.penkman@gmail.com>
Date: Sat, 15 Nov 2014 17:12:33 +1000
Subject: [PATCH 4/4] revert test commit

---
 README.md | 2 --
 1 file changed, 2 deletions(-)

diff --git a/README.md b/README.md
index 5d5fb47..1943f3f 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,6 @@
   <img src="https://raw.github.com/nodejitsu/node-http-proxy/master/doc/logo.png"/>
 </p>
 
-### Fork adding redirect following by P.I. Penkman.
-
 node-http-proxy
 =======
 
-- 
GitLab