tls: honor pauseOnConnect option
`pauseOnConnect` is now passed along to the net.Socket constructor from the tls.Socket constructor. The `readable` flag must match the value of `pauseOnConnect`. Tests were added to cover all available net.Server options when used in the tls.Server constructor. Fixes: https://github.com/nodejs/node/issues/29620 Refs: https://github.com/nodejs/node/pull/27665 PR-URL: https://github.com/nodejs/node/pull/29635 Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
parent
cdf8f708cf
commit
1e1285926f
@ -411,7 +411,9 @@ function TLSSocket(socket, opts) {
|
|||||||
net.Socket.call(this, {
|
net.Socket.call(this, {
|
||||||
handle: this._wrapHandle(wrap),
|
handle: this._wrapHandle(wrap),
|
||||||
allowHalfOpen: socket ? socket.allowHalfOpen : tlsOptions.allowHalfOpen,
|
allowHalfOpen: socket ? socket.allowHalfOpen : tlsOptions.allowHalfOpen,
|
||||||
readable: false,
|
pauseOnCreate: tlsOptions.pauseOnConnect,
|
||||||
|
// The readable flag is only needed if pauseOnCreate will be handled.
|
||||||
|
readable: tlsOptions.pauseOnConnect,
|
||||||
writable: false
|
writable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -926,7 +928,8 @@ function tlsConnectionListener(rawSocket) {
|
|||||||
handshakeTimeout: this[kHandshakeTimeout],
|
handshakeTimeout: this[kHandshakeTimeout],
|
||||||
ALPNProtocols: this.ALPNProtocols,
|
ALPNProtocols: this.ALPNProtocols,
|
||||||
SNICallback: this[kSNICallback] || SNICallback,
|
SNICallback: this[kSNICallback] || SNICallback,
|
||||||
enableTrace: this[kEnableTrace]
|
enableTrace: this[kEnableTrace],
|
||||||
|
pauseOnConnect: this.pauseOnConnect,
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('secure', onServerSocketSecure);
|
socket.on('secure', onServerSocketSecure);
|
||||||
|
@ -19,9 +19,11 @@ const options = {
|
|||||||
{
|
{
|
||||||
const server = tls.createServer(options, common.mustCall((socket) => {
|
const server = tls.createServer(options, common.mustCall((socket) => {
|
||||||
assert.strictEqual(socket.allowHalfOpen, false);
|
assert.strictEqual(socket.allowHalfOpen, false);
|
||||||
|
assert.strictEqual(socket.isPaused(), false);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
assert.strictEqual(server.allowHalfOpen, false);
|
assert.strictEqual(server.allowHalfOpen, false);
|
||||||
|
assert.strictEqual(server.pauseOnConnect, false);
|
||||||
|
|
||||||
server.listen(0, common.mustCall(() => {
|
server.listen(0, common.mustCall(() => {
|
||||||
const socket = tls.connect({
|
const socket = tls.connect({
|
||||||
@ -40,13 +42,16 @@ const options = {
|
|||||||
{
|
{
|
||||||
const server = tls.createServer({
|
const server = tls.createServer({
|
||||||
allowHalfOpen: true,
|
allowHalfOpen: true,
|
||||||
|
pauseOnConnect: true,
|
||||||
...options
|
...options
|
||||||
}, common.mustCall((socket) => {
|
}, common.mustCall((socket) => {
|
||||||
assert.strictEqual(socket.allowHalfOpen, true);
|
assert.strictEqual(socket.allowHalfOpen, true);
|
||||||
|
assert.strictEqual(socket.isPaused(), true);
|
||||||
socket.on('end', socket.end);
|
socket.on('end', socket.end);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
assert.strictEqual(server.allowHalfOpen, true);
|
assert.strictEqual(server.allowHalfOpen, true);
|
||||||
|
assert.strictEqual(server.pauseOnConnect, true);
|
||||||
|
|
||||||
server.listen(0, common.mustCall(() => {
|
server.listen(0, common.mustCall(() => {
|
||||||
const socket = tls.connect({
|
const socket = tls.connect({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user