mirror of
https://github.com/nodejs/node.git
synced 2025-05-02 14:56:19 +00:00

Make the deprecated `tls.createSecurePair()` method use other public APIs only (`TLSSocket` in particular). Since `tls.createSecurePair()` has been runtime-deprecated only since Node 8, it probably isn’t quite time to remove it yet, but this patch removes almost all of the code complexity that is retained by it. The API, as it is documented, is retained. However, it is very likely that some users have come to rely on parts of undocumented API of the `SecurePair` class, especially since some of the existing tests checked for those. Therefore, this should definitely be considered a breaking change. PR-URL: https://github.com/nodejs/node/pull/17882 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Minwoo Jung <minwoo@nodesource.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
43 lines
851 B
JavaScript
43 lines
851 B
JavaScript
'use strict';
|
|
const { Duplex } = require('stream');
|
|
|
|
const kCallback = Symbol('Callback');
|
|
const kOtherSide = Symbol('Other');
|
|
|
|
class DuplexSocket extends Duplex {
|
|
constructor() {
|
|
super();
|
|
this[kCallback] = null;
|
|
this[kOtherSide] = null;
|
|
}
|
|
|
|
_read() {
|
|
const callback = this[kCallback];
|
|
if (callback) {
|
|
this[kCallback] = null;
|
|
callback();
|
|
}
|
|
}
|
|
|
|
_write(chunk, encoding, callback) {
|
|
this[kOtherSide][kCallback] = callback;
|
|
this[kOtherSide].push(chunk);
|
|
}
|
|
|
|
_final(callback) {
|
|
this[kOtherSide].on('end', callback);
|
|
this[kOtherSide].push(null);
|
|
}
|
|
}
|
|
|
|
class DuplexPair {
|
|
constructor() {
|
|
this.socket1 = new DuplexSocket();
|
|
this.socket2 = new DuplexSocket();
|
|
this.socket1[kOtherSide] = this.socket2;
|
|
this.socket2[kOtherSide] = this.socket1;
|
|
}
|
|
}
|
|
|
|
module.exports = DuplexPair;
|