If configued with --openssl-use-def-ca-store --shared-openssl the
following error might be thrown:
assert.js:86
throw new assert.AssertionError({
^
AssertionError: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' === 'CERT_REVOKED'
at TLSSocket.client.on.common.mustCall
(/Users/danielbevenius/work/nodejs/node/test/parallel/test-tls-cnnic-whitelist.js:71:14)
at TLSSocket.<anonymous>
(/Users/danielbevenius/work/nodejs/node/test/common.js:461:15)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at emitErrorNT (net.js:1305:8)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
In this case the CA's used will be the ones shipped with OpenSSL. For
tests though we should be able to specify --use-bundled-ca as a fix for
the above error, but this functionality was broken by me in commit
be98f26917
("src: exclude node_root_certs when use-def-ca-store").
That commit removed the abilty to use --use-bundled-ca if the build was
configured --openssl-use-def-ca-store.
PR-URL: https://github.com/nodejs/node/pull/12394
Reviewed-By: thefourtheye - Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
crypto.randomFill and crypto.randomFillSync are similar to
crypto.randomBytes, but allow passing in a buffer as the first
argument. This allows us to reuse buffers to prevent having to
create a new one on every call.
PR-URL: https://github.com/nodejs/node/pull/10209
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
When configuring --without-ssl test-crypto-lazy-transform-writable.js
fails with the following error:
```
Path: parallel/test-crypto-lazy-transform-writable
internal/util.js:83
throw new Error('Node.js is not compiled with openssl crypto
support');
^
Error: Node.js is not compiled with openssl crypto support
at Object.exports.assertCrypto (internal/util.js:83:11)
at crypto.js:28:14
at NativeModule.compile (bootstrap_node.js:557:7)
at Function.NativeModule.require (bootstrap_node.js:500:18)
at Function.Module._load (module.js:446:25)
at Module.require (module.js:526:17)
at require (internal/module.js:19:18)
at Object.<anonymous>
(/Users/danielbevenius/work/nodejs/node/test/parallel/test-crypto-lazy-transform-writable.js:5:16)
at Module._compile (module.js:607:30)
at Object.Module._extensions..js (module.js:618:10)
Command: out/Release/node
/Users/danielbevenius/work/nodejs/node/test/parallel/test-crypto-lazy-transform-writable.js
[01:29|% 100|+ 1461|- 1]: Done
make: *** [test] Error 1
```
This commit add a hasCrypto check like other crypto tests do.
PR-URL: https://github.com/nodejs/node/pull/12424
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Use of `common.PORT` in `parallel` tests is not completely safe (because
the same port can be previously assigned to another test running in
parallel if that test uses port `0` to get an arbitrary available port).
Remove `common.PORT` from test-cluster-basic.
PR-URL: https://github.com/nodejs/node/pull/12377
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
When configuring --without-ssl test-debug-usage.js fails with the
following error:
assert.js:82
throw new assert.AssertionError({
^
AssertionError: false == true
at ChildProcess.<anonymous>
(/Users/danielbevenius/work/nodejs/node/test/parallel/test-debug-usage.js:24:5)
at ChildProcess.<anonymous>
(/Users/danielbevenius/work/nodejs/node/test/common.js:461:15)
at emitTwo (events.js:125:13)
at ChildProcess.emit (events.js:213:7)
at Process.ChildProcess._handle.onexit
(internal/child_process.js:208:12)
But the underlying error is the following:
(node:55665) [DEP0068] DeprecationWarning: `node debug` is deprecated.
Please use `node inspect` instead.
internal/util.js:83
throw new Error('Node.js is not compiled with openssl crypto
support');
^
Error: Node.js is not compiled with openssl crypto support
at Object.exports.assertCrypto (internal/util.js:83:11)
at crypto.js:28:14
at NativeModule.compile (bootstrap_node.js:559:7)
at NativeModule.require (bootstrap_node.js:500:18)
at node-inspect/lib/internal/inspect_client.js:24:16
at NativeModule.compile (bootstrap_node.js:559:7)
at NativeModule.require (bootstrap_node.js:500:18)
at node-inspect/lib/_inspect.js:39:5
at NativeModule.compile (bootstrap_node.js:559:7)
at Function.NativeModule.require (bootstrap_node.js:500:18)
assert.js:82
throw new assert.AssertionError({
^
AssertionError: false == true
at ChildProcess.<anonymous>
(/Users/danielbevenius/work/nodejs/node/test/parallel/test-debug-usage.js:25:5)
at ChildProcess.<anonymous>
(/Users/danielbevenius/work/nodejs/node/test/common.js:461:15)
at emitTwo (events.js:125:13)
at ChildProcess.emit (events.js:213:7)
at Process.ChildProcess._handle.onexit
(internal/child_process.js:208:12)
This commit adds a check for crypto like some of the other tests do.
PR-URL: https://github.com/nodejs/node/pull/12357
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Currently when the destination emits an 'error', 'finish' or 'close'
event the pipe calls unpipe to emit 'unpipe' and trigger the clean up
of all it's listeners.
When the source emits an 'end' event without {end: false} it calls
end() on the destination leading it to emit a 'close', this will again
lead to the pipe calling unpipe. However the source emitting an 'end'
event along side {end: false} is the only time the cleanup gets ran
directly without unpipe being called. This fixes that so the 'unpipe'
event does get emitted and cleanup in turn gets ran by that event.
Fixes: https://github.com/nodejs/node/issues/11837
PR-URL: https://github.com/nodejs/node/pull/11876
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
bootstrap_node.js was directly parsing process.execArgv to see if
internals should be exposed, even though the argv was already parsed by
node. This is unusual and unnecessary, change it to set the option value
from the parser onto the config binding.
PR-URL: https://github.com/nodejs/node/pull/12245
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This adds RegExp or error constructor arguments to the remaining places
where it is missing in preparation for the commit that will enforce the
presence of at least two arguments.
PR-URL: https://github.com/nodejs/node/pull/12270
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
assert.fail() has two possible function signatures, both of which are
not intuitive. It virtually guarantees that people who try to use
assert.fail() without carefully reading the docs will end up using it
incorrectly.
This change maintains backwards compatibility with the two valid uses
(arguments 1 2 and 4 supplied but argument 3 falsy, and argument 3
supplied but arguments 1 2 and 4 all falsy) but also adds the far more
intuitive first-argument-only and first-two-arguments-only
possibilities.
assert.fail('boom');
// AssertionError: boom
assert.fail('a', 'b');
// AssertionError: 'a' != 'b'
PR-URL: https://github.com/nodejs/node/pull/12293
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit attempts to address one of the TODOs in
https://github.com/nodejs/node/issues/4641 regarding making the
AtExit callback's per environment, instead of the current global.
bnoordhuis provided a few options for solving this, and one was to
use a thread-local which is what this commit attempts to do.
PR-URL: https://github.com/nodejs/node/pull/9163
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
Remove tls_server.js that has been disabled for about 6 years. It
appears to have worked in concert with some other file which has since
been removed. It seems to create a server and set up a bunch of
listeners, but it does not appear to have code that connects to the
server and triggers any of those listeners.
PR-URL: https://github.com/nodejs/node/pull/12275
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Alexey Orlenko <eaglexrlnk@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Based on the async methods we had in abi-stable-node before the napi
feature landed in node/master. Changed this set of APIs to handle
error cases and removed a lot of the extra methods we had for setting
all the pieces of napi_work opting instead to pass all of those as
arguments to napi_create_async_work as none of those parameters are
optional except for the complete callback, anyway.
Renamed the napi_work struct to napi_async_work and replace the
struct itself with a class which can better encapsulate the object
lifetime and uv_work_t that we're trying to wrap anyway.
Added a napi_async_callback type for the async helper callbacks
instead of taking raw function pointers and make this callback take a
napi_env parameter as well as the void* data it was already taking.
Call the complete handler for the async work item with a napi_status
code translated from the uvlib error code.
The execute callback is required for napi_create_async_work, though
complete callback is still optional.
Also added some async unit tests for addons-napi based on the
addons/async_hello_world test.
PR-URL: https://github.com/nodejs/node/pull/12250
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: Hitesh Kanwathirtha <hiteshk@microsoft.com>
Change `napi_callback` to return `napi_value` directly instead of
requiring `napi_set_return_value`.
When we invoke the callback, we will check the return value and
call `SetReturnValue` ourselves. If the callback returns `NULL`,
we don't set the return value in v8 which would have the same
effect as previously if the callback didn't call
`napi_set_return_value`. Seems to be a more natural way
to handle return values from callbacks. As a consequence,
remove `napi_set_return_value`.
Add a `napi_value` to `napi_property_descriptor` to support string
values which couldn't be passed in the `utf8name` parameter or
symbols as property names. Class names, however, cannot be symbols
so this `napi_value` must be a string type in that case.
Remove all of the `napi_callback_info` helpers except for
`napi_get_cb_info` and make all the parameters to
`napi_get_cb_info` optional except for argc.
Update all the test collateral according to these changes.
Also add `test/addons-napi/common.h` to house some common macros
for wrapping N-API calls and error handling.
PR-URL: https://github.com/nodejs/node/pull/12248
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
parallel/test-crypto-dh.js assumes particular curve algorithms
(e.g. Oakley-EC2N-3) are supported, though this may not necessarily be
the case if Node.js was built with a system version of OpenSSL.
PR-URL: https://github.com/nodejs/node/pull/12265
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
6481c93a modified `lib/assert.js` and added some tests for new
functionality, but left a single line uncovered by tests. This adds a
test that covers the currently-uncovered line (which is the final
`return` statement in `setHasSimilarElement()`).`
PR-URL: https://github.com/nodejs/node/pull/12239
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
The napi_property_attributes enum used names and values from
v8::PropertyAttribute, but those negative flag names were outdated
along with the default behavior of a property being writable,
enumerable, and configurable unless otherwise specified. To match the
ES5 standard property descriptor those attributes should be positive
flags and should default to false unless otherwise specified.
PR-URL: https://github.com/nodejs/node/pull/12240
Fixes: https://github.com/nodejs/abi-stable-node/issues/221
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>