diff --git a/lib/caronte/passes/web-incoming.js b/lib/caronte/passes/web-incoming.js index 66beb01..ce494fe 100644 --- a/lib/caronte/passes/web-incoming.js +++ b/lib/caronte/passes/web-incoming.js @@ -121,7 +121,7 @@ function stream(req, res, options) { var evnt = ev + pass.name.toLowerCase() + ':'; options.ee.emit(evnt + 'begin', req, res); - var val = pass(res, proxyRes); + var val = pass(req, res, proxyRes); options.ee.emit(evnt + 'end'); return val; diff --git a/lib/caronte/passes/web-outgoing.js b/lib/caronte/passes/web-outgoing.js index 941bc60..7d4ff94 100644 --- a/lib/caronte/passes/web-outgoing.js +++ b/lib/caronte/passes/web-outgoing.js @@ -9,14 +9,29 @@ var passes = exports; */ [ // <-- - - function writeHeaders(res, proxyRes) { + + function setConnection(req, res, proxyRes) { + if (req.httpVersion === '1.0') { + if (req.headers.connection) { + proxyRes.headers.connection = req.headers.connection + } else { + proxyRes.headers.connection = 'close' + } + } else if (!proxyRes.headers.connection) { + if (req.headers.connection) { proxyRes.headers.connection = req.headers.connection } + else { + proxyRes.headers.connection = 'keep-alive' + } + } + }, + + function writeHeaders(req, res, proxyRes) { Object.keys(proxyRes.headers).forEach(function(key) { res.setHeader(key, proxyRes.headers[key]); }); }, - function writeStatusCode(res, proxyRes) { + function writeStatusCode(req, res, proxyRes) { res.writeHead(proxyRes.statusCode); }