mirror of https://github.com/nodejs/node.git
tls: fix setting NPN protocols
The NPN protocols was set on `require('tls')` or `global` object instead of being a local property. This fact lead to strange persistence of NPN protocols, and sometimes incorrect protocol selection (when no NPN protocols were passed in client options). fix #6168archived-io.js-v0.10
parent
3546825b14
commit
1c3863abfd
|
@ -1321,12 +1321,13 @@ exports.connect = function(/* [port, host], options, cb */) {
|
|||
|
||||
var sslcontext = crypto.createCredentials(options);
|
||||
|
||||
convertNPNProtocols(options.NPNProtocols, this);
|
||||
var NPN = {};
|
||||
convertNPNProtocols(options.NPNProtocols, NPN);
|
||||
var hostname = options.servername || options.host || 'localhost',
|
||||
pair = new SecurePair(sslcontext, false, true,
|
||||
options.rejectUnauthorized === true ? true : false,
|
||||
{
|
||||
NPNProtocols: this.NPNProtocols,
|
||||
NPNProtocols: NPN.NPNProtocols,
|
||||
servername: hostname,
|
||||
cleartext: options.cleartext,
|
||||
encrypted: options.encrypted
|
||||
|
|
|
@ -61,6 +61,12 @@ var clientsOptions = [{
|
|||
crl: serverOptions.crl,
|
||||
NPNProtocols: ['c', 'b', 'e'],
|
||||
rejectUnauthorized: false
|
||||
},{
|
||||
port: serverPort,
|
||||
key: serverOptions.key,
|
||||
cert: serverOptions.cert,
|
||||
crl: serverOptions.crl,
|
||||
rejectUnauthorized: false
|
||||
},{
|
||||
port: serverPort,
|
||||
key: serverOptions.key,
|
||||
|
@ -91,7 +97,9 @@ function startTest() {
|
|||
connectClient(clientsOptions[0], function() {
|
||||
connectClient(clientsOptions[1], function() {
|
||||
connectClient(clientsOptions[2], function() {
|
||||
server.close();
|
||||
connectClient(clientsOptions[3], function() {
|
||||
server.close();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -100,6 +108,8 @@ function startTest() {
|
|||
process.on('exit', function() {
|
||||
assert.equal(serverResults[0], clientsResults[0]);
|
||||
assert.equal(serverResults[1], clientsResults[1]);
|
||||
assert.equal(serverResults[2], 'first-priority-unsupported');
|
||||
assert.equal(serverResults[2], 'http/1.1');
|
||||
assert.equal(clientsResults[2], false);
|
||||
assert.equal(serverResults[3], 'first-priority-unsupported');
|
||||
assert.equal(clientsResults[3], false);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue