diff --git a/src/connector/passive.js b/src/connector/passive.js index bd254459..a3e83e39 100644 --- a/src/connector/passive.js +++ b/src/connector/passive.js @@ -48,16 +48,7 @@ class Passive extends Connector { } this.log.trace({port, remoteAddress: socket.remoteAddress}, 'Passive connection fulfilled.'); - if (this.connection.secure) { - const secureContext = tls.createSecureContext(this.server._tls); - const secureSocket = new tls.TLSSocket(socket, { - isServer: true, - secureContext - }); - this.dataSocket = secureSocket; - } else { - this.dataSocket = socket; - } + this.dataSocket = socket; this.dataSocket.connected = true; this.dataSocket.setEncoding(this.connection.transferType); this.dataSocket.on('error', err => this.server && this.server.emit('client-error', {connection: this.connection, context: 'dataSocket', error: err})); @@ -68,8 +59,11 @@ class Passive extends Connector { }; this.dataSocket = null; - this.dataServer = net.createServer({pauseOnConnect: true}, connectionHandler); + + const serverOptions = Object.assign({}, this.connection.secure ? this.server._tls : {}, {pauseOnConnect: true}); + this.dataServer = (this.connection.secure ? tls : net).createServer(serverOptions, connectionHandler); this.dataServer.maxConnections = 1; + this.dataServer.on('error', err => this.server && this.server.emit('client-error', {connection: this.connection, context: 'dataServer', error: err})); this.dataServer.on('close', () => { this.log.trace('Passive server closed'); diff --git a/src/index.js b/src/index.js index 71da0213..a8a9401c 100644 --- a/src/index.js +++ b/src/index.js @@ -46,7 +46,7 @@ class FtpServer extends EventEmitter { return connection.reply(220, ...greeting, features) .finally(() => socket.resume()); }; - const serverOptions = _.assign(this.isTLS ? this._tls : {}, {pauseOnConnect: true}); + const serverOptions = Object.assign({}, this.isTLS ? this._tls : {}, {pauseOnConnect: true}); this.server = (this.isTLS ? tls : net).createServer(serverOptions, serverConnectionHandler); this.server.on('error', err => this.log.error(err, '[Event] error')); diff --git a/test/index.spec.js b/test/index.spec.js index 997778d8..496a10c3 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -385,7 +385,7 @@ describe('Integration', function () { runFileSystemTests('binary'); }); - describe.skip('#EXPLICIT', function () { + describe('#EXPLICIT', function () { before(() => { return server.close() .then(() => startServer('ftp://127.0.0.1:8880', {