smtp-server
Advanced tools
Comparing version 1.5.1 to 1.5.2
# Changelog | ||
## v1.5.2 2015-09-18 | ||
* Fixed regression with node v0.12 where STARTTLS connections were kept hanging around after close | ||
## v1.5.1 2015-09-18 | ||
@@ -4,0 +8,0 @@ |
@@ -6,3 +6,2 @@ 'use strict'; | ||
var tls = require('tls'); | ||
var tlsOptions = require('./tls-options'); | ||
var sasl = require('./sasl'); | ||
@@ -529,17 +528,10 @@ var crypto = require('crypto'); | ||
var secureContext = tls.createSecureContext(tlsOptions(this._server.options)); | ||
var secureContext = this._server.secureContext.get('default'); | ||
var socketOptions = { | ||
secureContext: secureContext, | ||
isServer: true, | ||
//server: this._server.server, | ||
server: this._server.server, | ||
SNICallback: function(servername, cb) { | ||
var ctxMap = this._server.options.sniOptions || {}; | ||
var ctx; | ||
if (typeof ctxMap.get === 'function') { | ||
ctx = ctxMap.get(servername); | ||
} else { | ||
ctx = ctxMap[servername]; | ||
} | ||
cb(null, ctx && tls.createSecureContext(tlsOptions(ctx)) || secureContext); | ||
cb(null, this._server.secureContext.get(servername.toLowerCase().trim()) || this._server.secureContext.get('default')); | ||
}.bind(this) | ||
@@ -549,3 +541,3 @@ }; | ||
// Apply additional socket options if these are set in the server options | ||
['requestCert', 'rejectUnauthorized', 'NPNProtocols', 'SNICallback', 'session'].forEach(function(key) { | ||
['requestCert', 'rejectUnauthorized', 'NPNProtocols', 'SNICallback', 'session', 'requestOCSP'].forEach(function(key) { | ||
if (key in this._server.options) { | ||
@@ -552,0 +544,0 @@ socketOptions[key] = this._server.options[key]; |
@@ -26,2 +26,16 @@ 'use strict'; | ||
this.secureContext = new Map(); | ||
this.secureContext.set('default', tls.createSecureContext(tlsOptions(this.options))); | ||
var ctxMap = this.options.sniOptions || {}; | ||
if (typeof ctxMap.get === 'function') { | ||
ctxMap.forEach(function(ctx, servername) { | ||
this.secureContext.set(servername.toLowerCase().trim(), tls.createSecureContext(tlsOptions(ctx))); | ||
}.bind(this)); | ||
} else { | ||
Object.keys(ctxMap).forEach(function(servername) { | ||
this.secureContext.set(servername.toLowerCase().trim(), tls.createSecureContext(tlsOptions(ctxMap[servername]))); | ||
}.bind(this)); | ||
} | ||
// apply TLS defaults if needed | ||
@@ -31,10 +45,3 @@ if (!!this.options.secure) { | ||
this.options.SNICallback = function(servername, cb) { | ||
var ctxMap = this.options.sniOptions || {}; | ||
var ctx; | ||
if (typeof ctxMap.get === 'function') { | ||
ctx = ctxMap.get(servername); | ||
} else { | ||
ctx = ctxMap[servername]; | ||
} | ||
cb(null, tls.createSecureContext(ctx && tlsOptions(ctx) || this.options)); | ||
cb(null, this.secureContext.get(servername.toLowerCase().trim()) || this.secureContext.get('default')); | ||
}.bind(this); | ||
@@ -95,2 +102,5 @@ } | ||
// ensure _sharedCreds, fixes an issue in node v4+ where STARTTLS fails because _sharedCreds does not exist | ||
this.server._sharedCreds = this.server._sharedCreds || this.secureContext.get('default'); | ||
this._setListeners(); | ||
@@ -97,0 +107,0 @@ } |
@@ -72,3 +72,4 @@ 'use strict'; | ||
].join(':'),*/ | ||
honorCipherOrder: true | ||
honorCipherOrder: true, | ||
requestOCSP: false | ||
}; | ||
@@ -75,0 +76,0 @@ |
{ | ||
"name": "smtp-server", | ||
"version": "1.5.1", | ||
"version": "1.5.2", | ||
"description": "Create custom SMTP servers on the fly", | ||
@@ -5,0 +5,0 @@ "main": "lib/smtp-server.js", |
113690