8000
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 0098933 commit 447bbd0Copy full SHA for 447bbd0
lib/tls.js
@@ -54,7 +54,11 @@ const {
54
} = require('internal/errors').codes;
55
const internalUtil = require('internal/util');
56
internalUtil.assertCrypto();
57
-const { isArrayBufferView } = require('internal/util/types');
+const {
58
+ isArrayBufferView,
59
+ isDataView,
60
+ isUint8Array,
61
+} = require('internal/util/types');
62
63
const net = require('net');
64
const { getOptionValue } = require('internal/options');
@@ -143,9 +147,16 @@ exports.convertALPNProtocols = function convertALPNProtocols(protocols, out) {
143
147
// If protocols is Array - translate it into buffer
144
148
if (ArrayIsArray(protocols)) {
145
149
out.ALPNProtocols = convertProtocols(protocols);
146
- } else if (isArrayBufferView(protocols)) {
150
+ } else if (Buffer.isBuffer(protocols) || isUint8Array(protocols)) {
151
// Copy new buffer not to be modified by user.
152
out.ALPNProtocols = Buffer.from(protocols);
153
+ } else if (isDataView(protocols)) {
154
+ out.ALPNProtocols = Buffer.from(protocols.buffer.slice(
155
+ protocols.byteOffset,
156
+ protocols.byteOffset + protocols.byteLength
157
+ ));
158
+ } else if (isArrayBufferView(protocols)) {
159
+ out.ALPNProtocols = Buffer.from(protocols.slice().buffer);
160
}
161
};
162
test/parallel/test-tls-basic-validations.js
@@ -103,8 +103,11 @@ assert.throws(
103
const inputBuffer = Buffer.from(arrayBufferViewStr.repeat(8), 'utf8');
104
for (const expectView of common.getArrayBufferViews(inputBuffer)) {
105
const out = {};
106
+ const expected = Buffer.from(expectView.buffer.slice(),
107
+ expectView.byteOffset,
108
+ expectView.byteLength);
109
tls.convertALPNProtocols(expectView, out);
- assert(out.ALPNProtocols.equals(Buffer.from(expectView)));
110
+ assert(out.ALPNProtocols.equals(expected));
111
112
113