mirror of https://github.com/nodejs/node.git
tls: fix lazy initialization of clienthello parser
`server.SNICallback` was initialized with `SNICallback.bind(this)`, and therefore check `this.SNICallback === SNICallback` was always false, and `_tls_wrap.js` always thought that it was a custom callback instead of default one. Which in turn was causing clienthello parser to be enabled regardless of presence of SNI contexts.pull/5010/head
parent
b26d346b57
commit
166c405b33
|
@ -427,7 +427,7 @@ function Server(/* [options], listener */) {
|
|||
requestCert: self.requestCert,
|
||||
rejectUnauthorized: self.rejectUnauthorized,
|
||||
NPNProtocols: self.NPNProtocols,
|
||||
SNICallback: self.SNICallback
|
||||
SNICallback: options.SNICallback || SNICallback
|
||||
});
|
||||
|
||||
function listener() {
|
||||
|
@ -517,11 +517,6 @@ Server.prototype.setOptions = function(options) {
|
|||
}
|
||||
if (secureOptions) this.secureOptions = secureOptions;
|
||||
if (options.NPNProtocols) tls.convertNPNProtocols(options.NPNProtocols, this);
|
||||
if (options.SNICallback) {
|
||||
this.SNICallback = options.SNICallback;
|
||||
} else {
|
||||
this.SNICallback = this.SNICallback.bind(this);
|
||||
}
|
||||
if (options.sessionIdContext) {
|
||||
this.sessionIdContext = options.sessionIdContext;
|
||||
} else if (this.requestCert) {
|
||||
|
@ -547,7 +542,7 @@ Server.prototype.addContext = function(servername, credentials) {
|
|||
function SNICallback(servername, callback) {
|
||||
var ctx;
|
||||
|
||||
this._contexts.some(function(elem) {
|
||||
this.server._contexts.some(function(elem) {
|
||||
if (!util.isNull(servername.match(elem[0]))) {
|
||||
ctx = elem[1];
|
||||
return true;
|
||||
|
@ -557,8 +552,6 @@ function SNICallback(servername, callback) {
|
|||
callback(null, ctx);
|
||||
}
|
||||
|
||||
Server.prototype.SNICallback = SNICallback;
|
||||
|
||||
|
||||
// Target API:
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue