From 33a5c8a814483ff48ba3acd94e091335b3536870 Mon Sep 17 00:00:00 2001 From: thewilli Date: Mon, 24 Sep 2012 11:18:05 +0300 Subject: [PATCH] http: handle multiple Proxy-Authenticate values Just as the 'WWW-Authenticate' HTTP header the 'Proxy-Authenticate' header might be received several times as well. Currently only one value is preserved. This change allows to receive multiple values concatenated by space and comma. --- lib/http.js | 1 + test/simple/test-http-server-multiheaders.js | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/http.js b/lib/http.js index a56cdc7e1e7..787c9066912 100644 --- a/lib/http.js +++ b/lib/http.js @@ -401,6 +401,7 @@ IncomingMessage.prototype._addHeaderLine = function(field, value) { case 'pragma': case 'link': case 'www-authenticate': + case 'proxy-authenticate': case 'sec-websocket-extensions': case 'sec-websocket-protocol': if (field in dest) { diff --git a/test/simple/test-http-server-multiheaders.js b/test/simple/test-http-server-multiheaders.js index a94ea27321e..b287169bdab 100644 --- a/test/simple/test-http-server-multiheaders.js +++ b/test/simple/test-http-server-multiheaders.js @@ -31,6 +31,7 @@ var srv = http.createServer(function(req, res) { assert.equal(req.headers.accept, 'abc, def, ghijklmnopqrst'); assert.equal(req.headers.host, 'foo'); assert.equal(req.headers['www-authenticate'], 'foo, bar, baz'); + assert.equal(req.headers['proxy-authenticate'], 'foo, bar, baz'); assert.equal(req.headers['x-foo'], 'bingo'); assert.equal(req.headers['x-bar'], 'banjo, bango'); assert.equal(req.headers['sec-websocket-protocol'], 'chat, share'); @@ -57,6 +58,9 @@ srv.listen(common.PORT, function() { ['www-authenticate', 'foo'], ['WWW-Authenticate', 'bar'], ['WWW-AUTHENTICATE', 'baz'], + ['proxy-authenticate','foo'], + ['Proxy-Authenticate','bar'], + ['PROXY-AUTHENTICATE','baz'], ['x-foo', 'bingo'], ['x-bar', 'banjo'], ['x-bar', 'bango'],