platform/upstream/nodejs.git
10 years agotest: don't compute knownGlobals lazily
Ben Noordhuis [Thu, 30 Jan 2014 12:02:58 +0000 (13:02 +0100)]
test: don't compute knownGlobals lazily

Conditional globals like 'gc' should only be recognized when --expose_gc
is set.  The global.gc feature check works only when done eagerly, else
it lets through a leaked variable called 'gc'.

10 years agoutil: show meaningful values for boxed primitives
Nathan Rajlich [Thu, 6 Feb 2014 02:09:23 +0000 (18:09 -0800)]
util: show meaningful values for boxed primitives

Before, `new String('foo')` would be inspected as `"{}"` which
is simply not very helpful. Now, a more meaningful
`"[String: 'foo']"` result will be returned from `util.inspect()`.

Boxed String, Boolean, and Number types are all supported.

Closes #7047

10 years agonode: do not print SyntaxError hints to stderr
Fedor Indutny [Wed, 5 Feb 2014 16:38:33 +0000 (20:38 +0400)]
node: do not print SyntaxError hints to stderr

Try embedding the ` ... ^` lines inside the `SyntaxError` (or any other
native error) object before giving up and printing them to the stderr.

fix #6920
fix #1310

10 years agosrc: move AsyncListener from process to tracing
Trevor Norris [Wed, 5 Feb 2014 23:37:12 +0000 (15:37 -0800)]
src: move AsyncListener from process to tracing

The AsyncListener API has been moved into the "tracing" module in order
to keep the process object free from unnecessary clutter.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agoenv: add watched_providers for AsyncListener
Trevor Norris [Tue, 21 Jan 2014 19:32:55 +0000 (11:32 -0800)]
env: add watched_providers for AsyncListener

Now the second field in asyncFlags will tell if the provider is
currently being watched, or listened for.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agoasync_wrap: add provider types/pass to constructor
Trevor Norris [Mon, 20 Jan 2014 21:33:16 +0000 (13:33 -0800)]
async_wrap: add provider types/pass to constructor

These will be used to allow users to filter for which types of calls
they wish their callbacks to run.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agonode: make AsyncListenerInst field more explicit
Trevor Norris [Tue, 21 Jan 2014 20:36:28 +0000 (12:36 -0800)]
node: make AsyncListenerInst field more explicit

"flags" could mean one of many things, and multiple flag types could be
checked. So make the field more explicit on what type of flags are being
stored.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agodoc: document the tracing api
Timothy J Fontaine [Sun, 2 Feb 2014 21:59:11 +0000 (13:59 -0800)]
doc: document the tracing api

10 years agosrc: add v8.getHeapStatistics() function
Ben Noordhuis [Fri, 15 Nov 2013 21:19:31 +0000 (22:19 +0100)]
src: add v8.getHeapStatistics() function

Add a one-to-one binding to v8::GetHeapStatistics().  Returns info on
the current state of the JS heap, like total size and amount used.

10 years agosrc: add tracing.v8.on('gc') statistics hooks
Ben Noordhuis [Mon, 28 Oct 2013 13:57:47 +0000 (14:57 +0100)]
src: add tracing.v8.on('gc') statistics hooks

Add a new 'tracing' module with a v8 property that lets the user
register listeners for gc events.  The listeners are invoked after
every garbage collection cycle with 'before' and 'after' statistics.
Useful for monitoring tools that want to keep track of memory usage.

10 years agosrc: fix MakeCallback() handle leak
Ben Noordhuis [Sat, 16 Nov 2013 19:05:42 +0000 (20:05 +0100)]
src: fix MakeCallback() handle leak

Create a new HandleScope before looking up the object context with
v8::Object::CreationContext(), else we leak the Local<Context> into
the current HandleScope.

That's relatively harmless unless the HandleScope is long-lived and
MakeCallback() is called a lot.  In a scenario like that, we may end
up leaking a lot of memory.

What is unfortunate about this change is that we're trying hard to
eradicate the node_isolate global.  Longer term, we will probably have
to change the MakeCallback() prototype to one that requires an explicit
v8::Isolate* argument.

10 years agosrc: update MakeCallback() function prototype
Ben Noordhuis [Mon, 27 Jan 2014 02:58:16 +0000 (18:58 -0800)]
src: update MakeCallback() function prototype

Make it possible to invoke MakeCallback() on a v8::Value but only for
the variant that takes a v8::Function as the thing to call.

The const char* and v8::String variants still require a v8::Object
because the function to call is looked up as a property on the receiver,
but that only works when the receiver is an object, not a primitive.

10 years agotls: more session configuration options, methods
Fedor Indutny [Mon, 3 Feb 2014 21:32:13 +0000 (01:32 +0400)]
tls: more session configuration options, methods

Introduce `ticketKeys` server option, `session` client option,
`getSession()` and `getTLSTicket()` methods.

fix #7032

10 years agocontextify: handle infinite recursion errors
Fedor Indutny [Wed, 5 Feb 2014 09:46:00 +0000 (13:46 +0400)]
contextify: handle infinite recursion errors

Try to be consistent with v0.10 and emit "Maximum call stack size
reached", even if it happens when allocating context or doing other
stuff.

fix #7045

10 years agotest: fix test-tcp-wrap-listen
Alexis Campailla [Tue, 4 Feb 2014 17:16:44 +0000 (09:16 -0800)]
test: fix test-tcp-wrap-listen

If the call to writeBuffer completes asynchronously, we need to have
an oncomplete callback on the request object no matter what. The
writeQueueSize seems irrelvant to that regard.

Note that on Windows writeBuffer always completes asynchronously.

See related commit 9836a4eeda1e2d43aad0923f1f72b364792629bc

10 years agoopenssl: fix keypress requirement in apps on win32
Alexis Campailla [Tue, 4 Feb 2014 01:23:15 +0000 (17:23 -0800)]
openssl: fix keypress requirement in apps on win32

Re-applying commit 153784b3489e2feb9d93a3a5eee5a4aa34f74e39, which
was overwritten by the update to openssl 1.0.1f.

Original source:

http://openssl.6102.n7.nabble.com/PATCH-s-client-Fix-keypress-requirement-with-redirected-input-on-Windows-td46787.html

10 years agodoc: fix after message in addAsyncListener example
Yuriy Nemtsov [Mon, 3 Feb 2014 20:53:29 +0000 (15:53 -0500)]
doc: fix after message in addAsyncListener example

10 years agozlib: separate sync/async methods
Fedor Indutny [Mon, 3 Feb 2014 07:55:47 +0000 (11:55 +0400)]
zlib: separate sync/async methods

10 years agotls: fix crash in SNICallback
Fedor Indutny [Fri, 31 Jan 2014 12:49:24 +0000 (16:49 +0400)]
tls: fix crash in SNICallback

`tls_wrap.cc` was crashing in an `Unwrap` call, when non
`SecureContext` object was passed to it. Check that the passed object
is a `SecureContext` instance before unwrapping it.

fix #7008

10 years agodebugger: remove unused definition `currentSource`
Oguz Bastemur [Mon, 3 Feb 2014 12:47:29 +0000 (13:47 +0100)]
debugger: remove unused definition `currentSource`

Client's property `currentSource` has no use throughout the project.

10 years agozlib: add sync versions for convenience methods
Nikolai Vavilov [Tue, 28 Jan 2014 17:35:51 +0000 (19:35 +0200)]
zlib: add sync versions for convenience methods

10 years agotest: delete invalid http test
Alexis Campailla [Thu, 30 Jan 2014 17:31:02 +0000 (09:31 -0800)]
test: delete invalid http test

The test is no longer valid for the original scenario.

It now fails intermittently because of two other issues:
1. Since the client is only processing one readable event, the
   client request is not enough to keep the process alive and the
   process can exit before the desired events have been raised.
2. Reading just 1 byte is not enough to guarantee that the parser
   will eventually consume all the data and raise the desired
   parse error. I tried postponing the server.close() to address
   the issue at [1], but then the test just hangs sometimes.

10 years agosrc: move header inclusion out of namespace
Timothy J Fontaine [Wed, 29 Jan 2014 17:37:29 +0000 (09:37 -0800)]
src: move header inclusion out of namespace

The placement of a previous fix to include proper size_t types in
addons was erroneously placed inside a namespace, move to just before.

Fix #6992

10 years agoNow working on 0.11.12
Timothy J Fontaine [Wed, 29 Jan 2014 03:46:17 +0000 (19:46 -0800)]
Now working on 0.11.12

10 years agoMerge branch 'v0.11.11-release'
Timothy J Fontaine [Wed, 29 Jan 2014 03:46:04 +0000 (19:46 -0800)]
Merge branch 'v0.11.11-release'

10 years ago2014.01.29, Version 0.11.11 (Unstable) v0.11.11
Timothy J Fontaine [Wed, 29 Jan 2014 01:27:13 +0000 (17:27 -0800)]
2014.01.29, Version 0.11.11 (Unstable)

* v8: Upgrade to 3.22.24.19

* http_parser: Upgrade to 2.2.1

* openssl: Upgrade to 1.0.1f

* uv: Upgrade to 0.11.18

* async-listener: revamp of subsystem (Trevor Norris)

* node: do not ever close stdio (Fedor Indutny)

* http: use writev on chunked encoding (Trevor Norris)

* async_wrap/timers: remove Add/RemoveAsyncListener (Trevor Norris)

* child_process: better error reporting for exec (Fedor Indutny)

* crypto: add newline to cert and key if not present (Fedor Indutny)

* crypto: clear error in GetPeerCertificate (Fedor Indutny)

* crypto: honor default ciphers in client mode (Jacob Hoffman-Andrews)

* crypto: introduce .setEngine(engine, [flags]) (Fedor Indutny)

* crypto: support custom pbkdf2 digest methods (Ben Noordhuis)

* domain: fix off-by-one in Domain.exit() (Ryan Graham)

* http: concatenate duplicate headers by default (Alex Kocharin)

* http: do not emit EOF non-readable socket (Fedor Indutny)

* node: fix argument parsing with -p arg (Alexis Campailla)

* path: improve POSIX path.join() performance (Jo Liss)

* tls: emit `clientError` on early socket close (Fedor Indutny)

* tls: introduce `.setMaxSendFragment(size)` (Fedor Indutny)

* tls: make cert/pfx optional in tls.createServer() (Ben Noordhuis)

* tls: process accumulated input (Fedor Indutny)

* tls: show human-readable error messages (Ben Noordhuis)

* util: handle escaped forward slashes correctly (Tom Gallacher)

10 years agov8: Upgrade to 3.22.24.19
Timothy J Fontaine [Wed, 29 Jan 2014 01:16:28 +0000 (17:16 -0800)]
v8: Upgrade to 3.22.24.19

10 years agonode: do not ever close stdio
Fedor Indutny [Thu, 23 Jan 2014 09:35:18 +0000 (13:35 +0400)]
node: do not ever close stdio

Even if stdio streams are opened as file streams, we should not ever try
to close them. This could be accomplished by passing `autoClose: false`
in options on their creation.

10 years agodeps: update http_parser to 2.2.1
Fedor Indutny [Tue, 28 Jan 2014 23:23:52 +0000 (03:23 +0400)]
deps: update http_parser to 2.2.1

Main changes:

  * Fixed content-length and chunk-size overflow test

10 years agolib: fix unnecessary coercion in lib/net.js
Thom Seddon [Tue, 28 Jan 2014 16:18:36 +0000 (16:18 +0000)]
lib: fix unnecessary coercion in lib/net.js

Original patch by @skypjack in #6627

10 years agolib: Remove unused var+operations in util.inspect
Thom Seddon [Tue, 28 Jan 2014 15:33:48 +0000 (15:33 +0000)]
lib: Remove unused var+operations in util.inspect

This was originally introduced in 6034701 to prevent the closing
brace being pushed onto the next line if an object is longer than
the max width, however the functionality was removed in d164989 but
the supplementary variables (and operations) were left behind

10 years agosrc: only define ssize_t on windows if undefined
Timothy J Fontaine [Tue, 28 Jan 2014 22:11:32 +0000 (14:11 -0800)]
src: only define ssize_t on windows if undefined

This matches how libuv handles the definition of ssize_t, by
typedef'ing intptr_t to ssize_t.

However, in the future we will use portable types from stddef.h

10 years agostream_wrap: use `uv_try_write` where possible
Fedor Indutny [Tue, 28 Jan 2014 22:48:10 +0000 (02:48 +0400)]
stream_wrap: use `uv_try_write` where possible

Use `uv_try_write` for string and buffer writes, thus avoiding to do
allocations and copying in some of the cases.

10 years agonode: explicitly include `sys/types.h` for size_t
Fedor Indutny [Thu, 23 Jan 2014 11:21:03 +0000 (15:21 +0400)]
node: explicitly include `sys/types.h` for size_t

fix #6724

10 years agotest: use logical and not or in abort-fatal-error
Timothy J Fontaine [Tue, 28 Jan 2014 02:27:10 +0000 (18:27 -0800)]
test: use logical and not or in abort-fatal-error

10 years agotest: make abort-fatal-error more robust
Timothy J Fontaine [Tue, 28 Jan 2014 02:05:39 +0000 (18:05 -0800)]
test: make abort-fatal-error more robust

It's saner to check exit codes or signals to determine if the process
actually aborted. On OSX and Linux the exit code is 134, on SunOS it
propagates the SIGABRT signal

10 years agotest: fix test-net-listen-fd0 for pipes
Timothy J Fontaine [Tue, 28 Jan 2014 01:39:45 +0000 (17:39 -0800)]
test: fix test-net-listen-fd0 for pipes

In the case of a pipe'd input, i.e. from the CI the fd will be a PIPE
and when listen() is called it will return ENOTSOCK instead of EINVAL.

10 years agonode: register modules from DSO constructors
Keith M Wesolowski [Tue, 17 Dec 2013 00:00:44 +0000 (00:00 +0000)]
node: register modules from DSO constructors

Built-in modules should be automatically registered, replacing the
static module list.  Add-on modules should also be automatically
registered via DSO constructors.  This improves flexibility in adding
built-in modules and is also a prerequisite to pure-C addon modules.

10 years agocrypto: honor default ciphers in client mode
Jacob Hoffman-Andrews [Fri, 24 Jan 2014 01:28:08 +0000 (17:28 -0800)]
crypto: honor default ciphers in client mode

Right now no default ciphers are use in, e.g. https.get, meaning that
weak export ciphers like TLS_RSA_EXPORT_WITH_DES40_CBC_SHA are
accepted.

To reproduce:

node -e "require('https').get({hostname: 'www.howsmyssl.com', \
  path: '/a/check'}, function(res) {res.on('data', \
  function(d) {process.stdout.write(d)})})"

10 years agotest: race condition in test-cluster-disconnect
Alexis Campailla [Fri, 10 Jan 2014 13:27:48 +0000 (05:27 -0800)]
test: race condition in test-cluster-disconnect

The test was not waiting for all the worker-created sockets
to be listening before calling cluster.disconnect().
As a result, the channels with the workers could get closed
before all the socket handles had been passed to them, leading
to various errors.

10 years agonode: fix argument parsing with -p arg
Alexis Campailla [Sat, 28 Dec 2013 08:12:40 +0000 (15:12 +0700)]
node: fix argument parsing with -p arg

node -p would cause an access violation.

Fixes test\message\stdin_messages.js on Windows.

10 years agoMerge remote-tracking branch 'upstream/v0.10'
Timothy J Fontaine [Mon, 27 Jan 2014 19:02:59 +0000 (11:02 -0800)]
Merge remote-tracking branch 'upstream/v0.10'

Conflicts:
src/node_crypto.cc
test/simple/test-crypto.js

10 years agonet: make Socket destroy() re-entrance safe
Jun Ma [Sat, 25 Jan 2014 17:50:17 +0000 (01:50 +0800)]
net: make Socket destroy() re-entrance safe

So that we are free to call socket.destroy() in error event handler.

fix #6769

10 years agodeps: update uv to 0.11.18
Fedor Indutny [Mon, 27 Jan 2014 17:30:51 +0000 (21:30 +0400)]
deps: update uv to 0.11.18

10 years agocrypto: throw on SignFinal failure
Fedor Indutny [Sun, 26 Jan 2014 16:09:14 +0000 (20:09 +0400)]
crypto: throw on SignFinal failure

fix #6963

10 years agocrypto: clear error in GetPeerCertificate
Fedor Indutny [Thu, 23 Jan 2014 12:03:32 +0000 (16:03 +0400)]
crypto: clear error in GetPeerCertificate

fix #6945

10 years agonet: reset `endEmitted` on reconnect
Fedor Indutny [Wed, 22 Jan 2014 21:15:04 +0000 (01:15 +0400)]
net: reset `endEmitted` on reconnect

fix #6908

10 years agodeps: backport b5135bbc from c-ares repo
Fedor Indutny [Thu, 23 Jan 2014 10:27:36 +0000 (14:27 +0400)]
deps: backport b5135bbc from c-ares repo

Original commit message:

    ares_parse_txt_reply: return a ares_txt_reply node for each sub-string

    Previously, the function would wrongly return all substrings merged into
    one.

fix #6931

10 years agodoc: readline document TTY utils
Fedor Indutny [Thu, 23 Jan 2014 11:35:50 +0000 (15:35 +0400)]
doc: readline document TTY utils

fix #6933

10 years agohttp: do not emit EOF non-readable socket
Fedor Indutny [Fri, 24 Jan 2014 12:25:11 +0000 (16:25 +0400)]
http: do not emit EOF non-readable socket

Socket may become not `readable`, but http should not rely on this
property and should not think that it means that no data will ever
arrive from it. In fact, it may arrive in a next tick and, since
`this.push(null)` was already called, it will result in a error like
this:

    Error: stream.push() after EOF
        at readableAddChunk (_stream_readable.js:143:15)
        at IncomingMessage.Readable.push (_stream_readable.js:123:10)
        at HTTPParser.parserOnBody (_http_common.js:132:22)
        at Socket.socketOnData (_http_client.js:277:20)
        at Socket.EventEmitter.emit (events.js:101:17)
        at Socket.Readable.read (_stream_readable.js:367:10)
        at Socket.socketCloseListener (_http_client.js:196:10)
        at Socket.EventEmitter.emit (events.js:123:20)
        at TCP.close (net.js:479:12)

fix #6784

10 years agoMerge remote-tracking branch 'upstream/v0.10'
Timothy J Fontaine [Sat, 25 Jan 2014 03:13:50 +0000 (19:13 -0800)]
Merge remote-tracking branch 'upstream/v0.10'

Conflicts:
AUTHORS
ChangeLog
deps/uv/AUTHORS
deps/uv/ChangeLog
deps/uv/src/unix/process.c
deps/uv/src/version.c
lib/net.js
node.gyp
src/node_version.h

10 years agotls_wrap: propagate errors to write callbacks
Fedor Indutny [Fri, 24 Jan 2014 18:08:25 +0000 (22:08 +0400)]
tls_wrap: propagate errors to write callbacks

fix #6903

10 years agotls: emit `clientError` on early socket close
Fedor Indutny [Wed, 22 Jan 2014 01:07:11 +0000 (05:07 +0400)]
tls: emit `clientError` on early socket close

fix #6903

10 years agodoc: fix typo in readline
Scott González [Thu, 23 Jan 2014 14:59:21 +0000 (09:59 -0500)]
doc: fix typo in readline

10 years agonpm: Upgrade to v1.3.25
isaacs [Thu, 23 Jan 2014 21:04:49 +0000 (13:04 -0800)]
npm: Upgrade to v1.3.25

10 years agolint: use reinterpret_cast, not C-style casts
Trevor Norris [Thu, 23 Jan 2014 21:01:53 +0000 (13:01 -0800)]
lint: use reinterpret_cast, not C-style casts

10 years agotest: fix http-incoming-pipelined-socket-destroy
Alexis Campailla [Wed, 22 Jan 2014 16:28:24 +0000 (08:28 -0800)]
test: fix http-incoming-pipelined-socket-destroy

The test was calling server.close() after write on the socket
had completed. However the fact that the write had completed was
not valid indication that the server had received the data.

This would result in a premutaure closing of the server and
an ECONNRESET event on the client.

10 years agotest: fix http-many-ended-pipelines server close
Alexis Campailla [Thu, 23 Jan 2014 15:10:24 +0000 (07:10 -0800)]
test: fix http-many-ended-pipelines server close

The test was calling server.close() without waiting for the server
to have received all the requests. This would cause an ECONNRESET.

10 years agov8: upgrade to 3.22.24.17
Trevor Norris [Thu, 23 Jan 2014 20:14:40 +0000 (12:14 -0800)]
v8: upgrade to 3.22.24.17

10 years agoblog: Post for v0.10.25
Timothy J Fontaine [Thu, 23 Jan 2014 19:44:32 +0000 (11:44 -0800)]
blog: Post for v0.10.25

10 years agoNow working on 0.10.26
Timothy J Fontaine [Thu, 23 Jan 2014 19:44:32 +0000 (11:44 -0800)]
Now working on 0.10.26

10 years agoMerge branch 'v0.10.25-release' into v0.10
Timothy J Fontaine [Thu, 23 Jan 2014 19:44:14 +0000 (11:44 -0800)]
Merge branch 'v0.10.25-release' into v0.10

10 years agotls: process accumulated input
Fedor Indutny [Thu, 23 Jan 2014 12:55:28 +0000 (16:55 +0400)]
tls: process accumulated input

When creating TLSSocket on top of the regular socket that already
contains some received data, `_tls_wrap.js` should try to write all that
data to the internal `SSL*` instance.

fix #6940

10 years agosrc: lint lib/net.js v0.10.25
Timothy J Fontaine [Thu, 23 Jan 2014 05:05:51 +0000 (21:05 -0800)]
src: lint lib/net.js

10 years ago2014.01.23, Version 0.10.25 (Stable)
Timothy J Fontaine [Thu, 23 Jan 2014 05:03:08 +0000 (21:03 -0800)]
2014.01.23, Version 0.10.25 (Stable)

* uv: Upgrade to v0.10.23

* npm: Upgrade to v1.3.24

* v8: Fix enumeration for objects with lots of properties

* child_process: fix spawn() optional arguments (Sam Roberts)

* cluster: report more errors to workers (Fedor Indutny)

* domains: exit() only affects active domains (Ryan Graham)

* src: OnFatalError handler must abort() (Timothy J Fontaine)

* stream: writes may return false but forget to emit drain (Yang Tianyang)

10 years agouv: Upgrade to v0.10.23
Timothy J Fontaine [Thu, 23 Jan 2014 04:47:12 +0000 (20:47 -0800)]
uv: Upgrade to v0.10.23

10 years agonode: clear nextTickQueue when using domains
Trevor Norris [Wed, 22 Jan 2014 21:33:16 +0000 (13:33 -0800)]
node: clear nextTickQueue when using domains

When the domain specific code was reintroduced in 828f145 the
conditional to check and clear the nextTickQueue if many items had run
was not introduced. This allows for the application to run out of memory
if domains are being used in an infinite recursive loop.

10 years agodoc: skip type parsing inside code blocks
Vladimir Kurchatkin [Wed, 25 Dec 2013 15:59:25 +0000 (19:59 +0400)]
doc: skip type parsing inside code blocks

Since types are denoted with curly braces it can cause erroneous
replaces in code blocks.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agocrypto: remove duplicate ERR_load_crypto_strings()
Yorkie [Wed, 22 Jan 2014 12:48:46 +0000 (20:48 +0800)]
crypto: remove duplicate ERR_load_crypto_strings()

ERR_load_crypto_strings() registers the error strings for
all libcrypto functions, SSL_load_error_strings() does the
same, but also registers the libssl error strings.

10 years agotest: fix array sorting bug
Ben Noordhuis [Thu, 21 Nov 2013 12:23:43 +0000 (13:23 +0100)]
test: fix array sorting bug

`a === a.sort()` is always true because Array#sort() does an in-place
sort.  Make a copy of the array first.

10 years agocrypto: support custom pbkdf2 digest methods
Ben Noordhuis [Thu, 21 Nov 2013 10:29:07 +0000 (11:29 +0100)]
crypto: support custom pbkdf2 digest methods

Make the HMAC digest method configurable.  Update crypto.pbkdf2() and
crypto.pbkdf2Sync() to take an extra, optional digest argument.

Before this commit, SHA-1 (admittedly the most common method) was used
exclusively.

Fixes #6553.

10 years agonode: remove asyncStack
Trevor Norris [Tue, 21 Jan 2014 23:03:12 +0000 (15:03 -0800)]
node: remove asyncStack

Now that the context stores the active execution stack, and because
removeAsyncListener() always removed the AsyncListener from the queue
and the stack, there's no need to keep a stack around anymore. Instead
the active asyncQueue and the currentContext is able to handle it all.

Signed-off-by: Forrest L Norvell <ogd@aoaioxxysz.net>
10 years agonode: only run same AL once on error
Trevor Norris [Tue, 21 Jan 2014 23:28:23 +0000 (15:28 -0800)]
node: only run same AL once on error

Should have been included with 60fcc11 as it is the same type of fix.

Signed-off-by: Forrest L Norvell <ogd@aoaioxxysz.net>
10 years agopath: improve POSIX path.join() performance
Jo Liss [Tue, 21 Jan 2014 22:24:58 +0000 (22:24 +0000)]
path: improve POSIX path.join() performance

Performance gains are ~4x (~1.5us), but still much slower than a naive
approach. There is some duplicate work done between join(), normalize()
and normalizeArray() so additional optimizations are possible.

Note that this only improves the POSIX implementation.

Thanks to @isaacs and @othiym23 for helping with this optimization.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agocrypto: add newline to cert and key if not present
Fedor Indutny [Mon, 20 Jan 2014 00:37:15 +0000 (00:37 +0000)]
crypto: add newline to cert and key if not present

After one of OpenSSL updates we have stopped accepting PEM private keys
and certificates that doesn't end with a newline (`\n`) character.
Handle this regression in `crypto.js` to make less trouble to our users.

fix #6892

10 years agocrypto: throw only in direct C++ methods
Fedor Indutny [Sun, 19 Jan 2014 23:38:15 +0000 (23:38 +0000)]
crypto: throw only in direct C++ methods

Do not throw in internal C++ methods, that clobbers logic and may lead
to the situations, where both exception was thrown and the value was
returned (via `args.GetReturnValue().Set()`). That doesn't play nicely
with v8.

fix #6912

10 years agonode: `EmitExit` should not call `exit()`
Fedor Indutny [Sat, 18 Jan 2014 22:49:33 +0000 (22:49 +0000)]
node: `EmitExit` should not call `exit()`

Before this commit `RunAtExit` and `env->Dispose()` were never reached,
because `EmitExit` was always colling `exit`.

10 years agoaddons: build and test examples
Fedor Indutny [Sat, 18 Jan 2014 22:49:18 +0000 (22:49 +0000)]
addons: build and test examples

fix #6910

10 years agotext: give more time to test-next-tick-error-spin
Alexis Campailla [Tue, 14 Jan 2014 08:45:00 +0000 (00:45 -0800)]
text: give more time to test-next-tick-error-spin

The previous timeout was too short for certain execution conditions
(Windows, debug build, first execution).

10 years agotest: give test-net-GH-5504 more time to run
Alexis Campailla [Tue, 14 Jan 2014 08:29:57 +0000 (00:29 -0800)]
test: give test-net-GH-5504 more time to run

On Windows debug builds, the test was failing because the timeout
was too short.

10 years agonode: compare AsyncListener instances, not uid's
Trevor Norris [Tue, 21 Jan 2014 17:22:00 +0000 (09:22 -0800)]
node: compare AsyncListener instances, not uid's

Now that process.createAsyncListener() returns a unique object instance
it is no longer necessary to compare the uid's of the objects.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agonode: ensure same AL inst only runs once
Trevor Norris [Tue, 21 Jan 2014 06:53:56 +0000 (22:53 -0800)]
node: ensure same AL inst only runs once

It was possible that the same AL instance was run twice if it were both
attached to the currentContext then again added to the new asyncQueue
generated for the new stack.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agoasync_wrap/timers: remove Add/RemoveAsyncListener
Trevor Norris [Mon, 20 Jan 2014 21:20:11 +0000 (13:20 -0800)]
async_wrap/timers: remove Add/RemoveAsyncListener

The ability to add/remove an AsyncListener to an object after its
creation was an artifact of trying to get AL working with the domain
module. Now that is no longer necessary and other features are going to
be implemented that would be affected by this functionality. So the code
will be removed for now to simplify the implementation process.

In the future this code will likely be reintroduced, but after some
other more important matters have been addressed.

None of this functionality was documented, as is was meant specifically
for domain specific implementation work arounds.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agocrypto: remove most of the `node_isolate` uses
Fedor Indutny [Fri, 17 Jan 2014 23:08:47 +0000 (23:08 +0000)]
crypto: remove most of the `node_isolate` uses

All C++ code should be using `args.GetIsolate()` or `env->isolate()`.
Using static `node_isolate` var limits possible future functionality
(like multi-isolate support).

10 years agotest: relax timing in test-http-exit-delay
Alexis Campailla [Fri, 17 Jan 2014 14:28:47 +0000 (06:28 -0800)]
test: relax timing in test-http-exit-delay

This test was originally intended to guard against regressions for
commit 16b59cbc74c8fe2f8b30f3af4c2f885b7bfb6030.

As such, it only needs to ensure that process exit has not been held up
by the date cache timer, which would fire on the next second.

10 years agotest: debug-signal-cluster increase timeouts
Alexis Campailla [Mon, 13 Jan 2014 14:02:16 +0000 (06:02 -0800)]
test: debug-signal-cluster increase timeouts

The test needs a little more time to run so that it passes for all
builds (eg: Windows, debug)

10 years agodebug client: connect after child is ready
Alexis Campailla [Fri, 6 Dec 2013 16:58:15 +0000 (08:58 -0800)]
debug client: connect after child is ready

We now wait to connect to the debuggee until we know that
its error stream has data, to ensure that the output message
"connecting..... ok" appears after "Debugger listening on port xyz"

I also increased the test timeout to let the more complex
tests finish in time on Windows

This change fixes the following unit tests on Windows:
 test-debugger-repl.js\r test-debugger-repl-term.js\r test-debugger-repl-utf8.js
 test-debugger-repl-restart.js

10 years agotest: move debugger repl into own section
Timothy J Fontaine [Tue, 14 Jan 2014 01:24:14 +0000 (17:24 -0800)]
test: move debugger repl into own section

10 years agotest: refactor to use common testcfg
Timothy J Fontaine [Tue, 14 Jan 2014 01:09:12 +0000 (17:09 -0800)]
test: refactor to use common testcfg

10 years agotest: ignore tests when built without OpenSSL CLI
Fedor Indutny [Sat, 18 Jan 2014 12:18:25 +0000 (12:18 +0000)]
test: ignore tests when built without OpenSSL CLI

fix #6880

10 years agolib: introduce `.setMaxSendFragment(size)`
Fedor Indutny [Fri, 17 Jan 2014 18:46:49 +0000 (18:46 +0000)]
lib: introduce `.setMaxSendFragment(size)`

fix #6889

10 years agodoc: tls: note that SSLv2 is disabled by default
Ben Noordhuis [Mon, 20 Jan 2014 15:19:00 +0000 (16:19 +0100)]
doc: tls: note that SSLv2 is disabled by default

As of commit 39aa894, SSLv2 support is disabled by default.  Update
the documentation to reflect that.

10 years agodoc: tls: clarify server cipher list
Ben Noordhuis [Mon, 20 Jan 2014 15:12:37 +0000 (16:12 +0100)]
doc: tls: clarify server cipher list

* Make it clear that ECDHE-RSA-AES128-SHA256 and AES128-GCM-SHA256 are
  TLS v1.2 ciphers.

* Note that RC4 is under suspicion.

10 years agogyp: fix non-ninja build
Fedor Indutny [Mon, 20 Jan 2014 14:39:05 +0000 (18:39 +0400)]
gyp: fix non-ninja build

10 years agonpm: Upgrade to v1.3.24
isaacs [Mon, 20 Jan 2014 05:13:20 +0000 (21:13 -0800)]
npm: Upgrade to v1.3.24

10 years agosrc: don't mark addon_register_func as dllimport
Ben Noordhuis [Wed, 15 Jan 2014 11:50:01 +0000 (12:50 +0100)]
src: don't mark addon_register_func as dllimport

addon_register_func and its cousin addon_context_register_func are type
definitions, dllimport and dllexport are name mangling directives, i.e.
they're quite unrelated concepts.  MinGW complains about mixing them
when cross-compiling native add-ons.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Signed-off-by: Bert Belder <bertbelder@gmail.com>
10 years agotls: make cert/pfx optional in tls.createServer()
Ben Noordhuis [Thu, 16 Jan 2014 17:06:56 +0000 (18:06 +0100)]
tls: make cert/pfx optional in tls.createServer()

Not all ciphers require the presence of a certificate.  Remove the
check in lib/_tls_wrap.js.

Fixes #6887.

10 years agotls: show human-readable error messages
Ben Noordhuis [Fri, 17 Jan 2014 17:15:36 +0000 (18:15 +0100)]
tls: show human-readable error messages

Before this commit, verification exceptions had err.message set to the
OpenSSL error code (e.g. 'UNABLE_TO_VERIFY_LEAF_SIGNATURE').

This commit moves the error code to err.code and replaces err.message
with a human-readable error.  Example:

    // before
    {
      message: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
    }

    // after
    {
      code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
      message: 'unable to verify the first certificate'
    }

UNABLE_TO_VERIFY_LEAF_SIGNATURE is a good example of why you want this:
the error code suggests that it's the last certificate that fails to
validate while it's actually the first certificate in the chain.

Going by the number of mailing list posts and StackOverflow questions,
it's a source of confusion to many people.

10 years agoblog: nodejs v0.12 roadmap update
Timothy J Fontaine [Thu, 16 Jan 2014 22:43:29 +0000 (14:43 -0800)]
blog: nodejs v0.12 roadmap update

10 years agogyp: fix `ninja` build on linux
Fedor Indutny [Thu, 16 Jan 2014 16:39:12 +0000 (16:39 +0000)]
gyp: fix `ninja` build on linux

fix #6679