Commits on Jan 22, 2014
  1. Merge remote-tracking branch 'upstream/v0.10'

    tjfontaine committed Jan 22, 2014
  2. 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.
    bnoordhuis committed with indutny Nov 21, 2013
  3. 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
    Fixes #6553.
    bnoordhuis committed with indutny Nov 21, 2013
  4. 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 <>
    trevnorris committed Jan 21, 2014
  5. 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 <>
    trevnorris committed Jan 21, 2014
  6. 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 <>
    joliss committed with trevnorris Jan 21, 2014
Commits on Jan 21, 2014
  1. 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
    indutny committed Jan 20, 2014
  2. 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
    indutny committed Jan 19, 2014
  3. node: `EmitExit` should not call `exit()`

    Before this commit `RunAtExit` and `env->Dispose()` were never reached,
    because `EmitExit` was always colling `exit`.
    indutny committed Jan 18, 2014
  4. addons: build and test examples

    fix #6910
    indutny committed Jan 18, 2014
  5. 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).
    orangemocha committed with tjfontaine Jan 14, 2014
  6. test: give test-net-GH-5504 more time to run

    On Windows debug builds, the test was failing because the timeout
    was too short.
    orangemocha committed with tjfontaine Jan 14, 2014
  7. 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 <>
    trevnorris committed Jan 21, 2014
  8. 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 <>
    trevnorris committed Jan 21, 2014
  9. 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 <>
    trevnorris committed Jan 20, 2014
Commits on Jan 20, 2014
  1. 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).
    indutny committed Jan 17, 2014
  2. test: relax timing in test-http-exit-delay

    This test was originally intended to guard against regressions for
    commit 16b59cb.
    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.
    orangemocha committed with tjfontaine Jan 17, 2014
  3. 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)
    orangemocha committed with tjfontaine Jan 13, 2014
  4. 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:
    orangemocha committed with tjfontaine Dec 6, 2013
  5. 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.
    bnoordhuis committed with indutny Jan 20, 2014
  6. 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.
    bnoordhuis committed with indutny Jan 20, 2014
  7. gyp: fix non-ninja build

    indutny committed Jan 20, 2014
  8. npm: Upgrade to v1.3.24

    isaacs committed Jan 20, 2014
Commits on Jan 17, 2014
  1. 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 <>
    Signed-off-by: Bert Belder <>
    bnoordhuis committed with trevnorris Jan 15, 2014
  2. 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.
    bnoordhuis committed with indutny Jan 16, 2014
  3. 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
        // after
          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.
    bnoordhuis committed with indutny Jan 17, 2014
Commits on Jan 16, 2014
  1. gyp: fix `ninja` build on linux

    fix #6679
    indutny committed Jan 16, 2014
  2. child_process: fix spawn() optional arguments

    Spawn's arguments were documented to be optional, as they are for the
    other similar child_process APIs, but the code was missing. Result was
    `child_process.spawn('node', {})` errored when calling slice() on an
    Object, now it behaves as the documentation said it would.
    sam-github committed with tjfontaine Jan 16, 2014