Inconsistent behavior with proxyError depending on createServer invocation #185

Closed
n1mmy opened this Issue Feb 1, 2012 · 3 comments

Projects

None yet

3 participants

@n1mmy
n1mmy commented Feb 1, 2012

How the proxy behaves when a proxyError occurs seems to depend in odd ways on how the server was invoked.

When created like this (first example in README):

var httpProxy = require('http-proxy');
var server = httpProxy.createServer(24, 'localhost');
server.listen(8000);

The proxy returns 500 with a message that the connection was refused.

However, if you start the proxy like this (second example in the README):

var httpProxy = require('http-proxy');
var server = httpProxy.createServer(function (req, res, proxy) {
  proxy.proxyRequest(req, res, {
    host: '127.0.0.1', port: 24
  });
});
server.listen(8000);

The proxied connections simply hang forever (until client timeout).

Adding custom error handling code works in both cases:

server.proxy.on('proxyError', function (err, req, res) {
  res.writeHead(500, {
    'Content-Type': 'text/plain'
  });
  res.end('Something went wrong. And we are reporting a custom error message.');  
  console.log("XXX", err);
});

This is especially confusing since the README does not mention proxyError at all.

@coderarity

This is probably because a RoutingProxy is being created in one case, and an HttpProxy in the other. I bet this is just a matter of copying the error handler from HttpProxy to RoutingProxy!

@coderarity

Guess it's not that simple! It never is.

RoutingProxy should re-emit errors from HttpProxy. There shouldn't be any differences. But RoutingProxy has been hanging when there's errors for me as well.

@indexzero
Member

Fixed by #216

@indexzero indexzero closed this Mar 9, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment