mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
tls: fix tlsSocket.setMaxSendFragment abort
PR-URL: https://github.com/nodejs/node/pull/38170 Fixes: https://github.com/nodejs/node/issues/38169 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
1 parent
8cb6b5d2a1
commit
6e3f98569c
2 files changed
+28
-3
No files matched your search
+3
-1
@@ -86,9 +86,10 @@ const {
|
||||
const {
|
||||
validateBuffer,
|
||||
validateCallback,
|
||||
validateInt32,
|
||||
validateObject,
|
||||
validateString,
|
||||
validateUint32
|
||||
validateUint32,
|
||||
} = require('internal/validators');
|
||||
const {
|
||||
InternalX509Certificate
|
||||
@@ -893,6 +894,7 @@ TLSSocket.prototype.exportKeyingMaterial = function(length, label, context) {
|
||||
};
|
||||
|
||||
TLSSocket.prototype.setMaxSendFragment = function setMaxSendFragment(size) {
|
||||
validateInt32(size, 'size');
|
||||
return this._handle.setMaxSendFragment(size) === 1;
|
||||
};
|
||||
|
||||
|
||||
@@ -33,15 +33,38 @@ const buf = Buffer.allocUnsafe(10000);
|
||||
let received = 0;
|
||||
const maxChunk = 768;
|
||||
|
||||
const invalidArgumentError = {
|
||||
name: 'TypeError',
|
||||
code: 'ERR_INVALID_ARG_TYPE'
|
||||
};
|
||||
|
||||
const server = tls.createServer({
|
||||
key: fixtures.readKey('agent1-key.pem'),
|
||||
cert: fixtures.readKey('agent1-cert.pem')
|
||||
}, function(c) {
|
||||
// Lower and upper limits
|
||||
|
||||
// No size is passed.
|
||||
assert.throws(() => c.setMaxSendFragment(), invalidArgumentError);
|
||||
|
||||
// Invalid arg is passed.
|
||||
[null, undefined, '', {}, false, true, []].forEach((arg) => {
|
||||
assert.throws(() => c.setMaxSendFragment(arg), invalidArgumentError);
|
||||
});
|
||||
|
||||
[NaN, Infinity, 2 ** 31].forEach((arg) => {
|
||||
assert.throws(() => c.setMaxSendFragment(arg), {
|
||||
name: 'RangeError',
|
||||
code: 'ERR_OUT_OF_RANGE'
|
||||
});
|
||||
});
|
||||
|
||||
assert.throws(() => c.setMaxSendFragment(Symbol()), { name: 'TypeError' });
|
||||
|
||||
// Lower and upper limits.
|
||||
assert(!c.setMaxSendFragment(511));
|
||||
assert(!c.setMaxSendFragment(16385));
|
||||
|
||||
// Correct fragment size
|
||||
// Correct fragment size.
|
||||
assert(c.setMaxSendFragment(maxChunk));
|
||||
|
||||
c.end(buf);
|
||||
|
||||
Reference in new issue
Block a user