Skip to content

Commit

Permalink
test closing upstream socket prior to upgrade
Browse files Browse the repository at this point in the history
should close the client socket with ECONNRESET,
but currently is left hanging.
  • Loading branch information
minrk committed Sep 30, 2014
1 parent f0bf741 commit 7730548
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions test/lib-http-proxy-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,11 @@ describe('lib/http-proxy.js', function() {
client.send('hello there');
});

client.on('error', function (err) {
expect(err).to.be.an(Error);
expect(err.code).to.be('ECONNRESET');
});

proxy.on('error', function (err) {
expect(err).to.be.an(Error);
expect(err.code).to.be('ECONNREFUSED');
Expand All @@ -289,6 +294,41 @@ describe('lib/http-proxy.js', function() {
});
});

it('should close client socket if upstream is closed before upgrade', function (done) {
var ports = { source: gen.port, proxy: gen.port };
var server = http.createServer();
server.on('upgrade', function (req, socket, head) {
var response = [
'HTTP/1.1 404 Not Found',
'Content-type: text/html',
'',
''
];
socket.write(response.join('\r\n'));
socket.end();
});
server.listen(ports.source);

var proxy = httpProxy.createProxyServer({
// note: we don't ever listen on this port
target: 'ws://127.0.0.1:' + ports.source,
ws: true
}),
proxyServer = proxy.listen(ports.proxy),
client = new ws('ws://127.0.0.1:' + ports.proxy);

client.on('open', function () {
client.send('hello there');
});

client.on('error', function (err) {
expect(err).to.be.an(Error);
expect(err.code).to.be('ECONNRESET');
proxyServer.close();
done();
});
});

it('should proxy a socket.io stream', function (done) {
var ports = { source: gen.port, proxy: gen.port };
var proxy = httpProxy.createProxyServer({
Expand Down

0 comments on commit 7730548

Please sign in to comment.