1. Aug 22, 2013
    • isaacs's avatar
      vm: Put back display_errors flag · eef55277
      isaacs authored
      This is an important part of the repl use-case.
      
      TODO: The arg parsing in vm.runIn*Context() is rather wonky.
      It would be good to move more of that into the Script class,
      and/or an options object.
      eef55277
    • Domenic Denicola's avatar
      vm, core, module: re-do vm to fix known issues · 7afdba6e
      Domenic Denicola authored
      As documented in #3042 and in [1], the existing vm implementation has
      many problems. All of these are solved by @brianmcd's [contextify][2]
      package. This commit uses contextify as a conceptual base and its code
      core to overhaul the vm module and fix its many edge cases and caveats.
      
      Functionally, this fixes #3042. In particular:
      
      - A context is now indistinguishable from the object it is based on
        (the "sandbox"). A context is simply a sandbox that has been marked
        by the vm module, via `vm.createContext`, with special internal
        information that allows scripts to be run inside of it.
      - Consequently, items added to the context from anywhere are
        immediately visible to all code that can access that context, both
        inside and outside the virtual machine.
      
      This commit also smooths over the API very slightly:
      
      - Parameter defaults are now uniformly triggered via `undefined`, per
        ES6 semantics and previous discussion at [3].
      - Several undocumented and problematic features have been removed, e.g.
        the conflation of `vm.Script` with `vm` itself, and the fact that
        `Script` instances also had all static `vm` methods. The API is now
        exactly as documented (although arguably the existence of the
        `vm.Script` export is not yet documented, just the `Script` class
        itself).
      
      In terms of implementation, this replaces node_script.cc with
      node_contextify.cc, which is derived originally from [4] (see [5]) but
      has since undergone extensive modifications and iterations to expose
      the most useful C++ API and use the coding conventions and utilities of
      Node core.
      
      The bindings exposed by `process.binding('contextify')`
      (node_contextify.cc) replace those formerly exposed by
      `process.binding('evals')` (node_script.cc). They are:
      
      - ContextifyScript(code, [filename]), with methods:
        - runInThisContext()
        - runInContext(sandbox, [timeout])
      - makeContext(sandbox)
      
      From this, the vm.js file builds the entire documented vm module API.
      
      node.js and module.js were modified to use this new native binding, or
      the vm module itself where possible. This introduces an extra line or
      two into the stack traces of module compilation (and thus into most
      stack traces), explaining the changed tests.
      
      The tests were also updated slightly, with all vm-related simple tests
      consolidated as test/simple/test-vm-* (some of them were formerly
      test/simple/test-script-*). At the same time they switched from
      `common.debug` to `console.error` and were updated to use
      `assert.throws` instead of rolling their own error-testing methods.
      
      New tests were also added, of course, demonstrating the new
      capabilities and fixes.
      
      [1]: http://nodejs.org/docs/v0.10.16/api/vm.html#vm_caveats
      [2]: https://github.com/brianmcd/contextify
      [3]: https://github.com/joyent/node/issues/5323#issuecomment-20250726
      [4]: https://github.com/kkoopa/contextify/blob/bf123f3ef960f0943d1e30bda02e3163a004e964/src/contextify.cc
      [5]: https://gist.github.com/domenic/6068120
      7afdba6e
    • Timothy J Fontaine's avatar
      Now working on 0.11.7 · 3602d4c2
      Timothy J Fontaine authored
      3602d4c2
    • Timothy J Fontaine's avatar
      Merge branch 'v0.11.6-release' · 51336a44
      Timothy J Fontaine authored
      51336a44
    • Timothy J Fontaine's avatar
      2013.08.21, Version 0.11.6 (Unstable) · 04018d4b
      Timothy J Fontaine authored
      * uv: Upgrade to v0.11.8
      
      * v8: upgrade v8 to 3.20.14.1
      
      * build: disable SSLv2 by default (Ben Noordhuis)
      
      * build: don't auto-destroy existing configuration (Ben Noordhuis)
      
      * crypto: add TLS 1.1 and 1.2 to secureProtocol list (Matthias Bartelmeß)
      
      * crypto: fix memory leak in randomBytes() error path (Ben Noordhuis)
      
      * dgram: don't call into js when send cb is omitted (Ben Noordhuis)
      
      * dgram: fix regression in string argument handling (Ben Noordhuis)
      
      * domains: performance improvements (Trevor Norris)
      
      * events: EventEmitter = require('events') (Jake Verbaten)
      
      * http: Add write()/end() callbacks (isaacs)
      
      * http: Consistent 'finish' event semantics (isaacs)
      
      * http: Prefer 'binary' over 'ascii' (isaacs)
      
      * http: Support legacy agent.addRequest API (isaacs)
      
      * http: Write hex/base64 chunks properly (isaacs)
      
      * http: add agent.maxFreeSockets option (isaacs)
      
      * http: provide access to raw headers/trailers (isaacs)
      
      * http: removed headers stay removed (James Halliday)
      
      * http,timers: improve callback performance (Ben Noordhuis)
      
      * net: family option in net.connect (Vsevolod Strukchinsky)
      
      * readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
      
      * smalloc: allow different external array types (Trevor Norris)
      
      * smalloc: expose ExternalArraySize (Trevor Norris)
      
      * stream: Short-circuit buffer pushes when flowing (isaacs)
      
      * tls: handle errors on socket before releasing it (Fedor Indutny)
      
      * util: fix isPrimitive check (Trevor Norris)
      
      * util: isObject should always return boolean (Trevor Norris)
      04018d4b
    • Timothy J Fontaine's avatar
      uv: Upgrade to v0.11.8 · a784abaf
      Timothy J Fontaine authored
      a784abaf
    • Timothy J Fontaine's avatar
      41f55dc5
    • isaacs's avatar
      Merge remote-tracking branch 'ry/v0.10' · cdf2a661
      isaacs authored
      Conflicts:
      	lib/tls.js
      cdf2a661
  2. Aug 21, 2013
    • Fedor Indutny's avatar
      a1b3273a
    • Ben Noordhuis's avatar
      deps: upgrade http_parser to 303c4e4 · 8d42c634
      Ben Noordhuis authored
      Upgrade to joyent/http-parser@303c4e4. Changes:
      
        * Do not accept PUN/GEM methods as PUT/GET.
        * Further request method check strengthening.
      8d42c634
    • Fedor Indutny's avatar
      tls: fix assertion when ssl is destroyed at read · af6a2339
      Fedor Indutny authored
      `maybeInitFinished()` can emit the 'secure' event which
      in turn destroys the connection in case of authentication
      failure and sets `this.pair.ssl` to `null`.
      
      If such condition appeared after non-empty read - loop will continue
      and `clearOut` will be called on `null` object instead of
      `crypto::Connection` instance. Resulting in the following assertion:
      
          ERROR: Error: Hostname/IP doesn't match certificate's altnames
          Assertion failed: handle->InternalFieldCount() > 0
      
      fix #5756
      af6a2339
    • Trevor Norris's avatar
      smalloc: consistent-ify syntax · 849cf1aa
      Trevor Norris authored
      Small syntax fixes of variable renaming and argument alignment.
      849cf1aa
    • Trevor Norris's avatar
      smalloc: length is byte size, not array length · 6b5c43ed
      Trevor Norris authored
      The C++ API has been changed so the passed length is the byte size of
      the data, not the length of the array.
      
      This was done so users need to explicitly define how much memory they
      want allocated.
      6b5c43ed
    • Trevor Norris's avatar
      smalloc: expose ExternalArraySize · ed0677f4
      Trevor Norris authored
      Useful to correctly determine the byte size of the external memory that
      needs to be allocated for an external array.
      ed0677f4
    • Trevor Norris's avatar
      util: isObject should always return boolean · 50cee6ec
      Trevor Norris authored
      Fix small bug where isObject would return the original object instead of
      true.
      50cee6ec
    • Vsevolod Strukchinsky's avatar
      net: family option in net.connect · edd2fccc
      Vsevolod Strukchinsky authored
      `dns.lookup` defaults to selecting IPv4 record even if IPv6 is available
      for the desired zone. Generally, this approach works, but if IPv4
      address is unavailable - there'll be no other way to opt-out and connect using
      IPv6 address than calling `dns.lookup` and passing it to `.connect()`
      directly.
      
      This commit adds `family` option to `net.connect` method to figure out
      this issue.
      edd2fccc
  3. Aug 20, 2013
    • Gil Pedersen's avatar
      e04c8a8e
    • isaacs's avatar
      doc: Minor typos in dgram doc · 26a8c0c6
      isaacs authored
      a/an usage.  Thanks @KenanSulayman
      26a8c0c6
    • isaacs's avatar
      test: Remove unnecessary assertion · 85d6b783
      isaacs authored
      It only fails once in about 1000 times, but that's too many.
      It's timing dependent, and the main behavior is covered by the other
      assertions in the test anyway.
      85d6b783
    • Raynos's avatar
      events: have events module exports EventEmitter · 6ed861dd
      Raynos authored
      This change is 100% backwards compatible.
      
      This change will make using `EventEmitter` slightly simpler / nicer and
      adheres to the best practice set forth by substack.
      
      ```js
      var EventEmitter = require("events")
      
      var emitter = new EventEmitter()
      ```
      
      The only difference is that we now have to set `EventEmitter` as a
      property of `EventEmitter` for backwards compatibility like we do with
      [`Stream`][1]
      
      We have also set the `usingDomains` property on the `EventEmitter`
      constructor itself because that aligns with it's current usage of
      `require("events").usingDomains = true`
      
      There are other internals that would benefit from this change as well
      like `StringDecoder`
      6ed861dd
    • Matthew Aynalem's avatar
      fixes #6031 spelling errors · c171c490
      Matthew Aynalem authored
      explictly => explicitly
      accesss => access
      througput => throughput
      epxression => expression
      communiction => communication
      becuase => because
      repersent => represent
      condonitions => conditions
      decompresion => decompression
      intentially => intentionally
      eventes => events
      listning => listening
      resicved => received
      becuase => because
      fundimental => fundamental
      colapse => collapse
      privlages => privileges
      sufficently => sufficiently
      hapepns => happens
      expliclitly => explicitly
      thier => their
      shold => should
      c171c490
    • Duan Yao's avatar
      doc: Add callback parameter to dgram socket.bind() · 9456cf8f
      Duan Yao authored
      Also, describe more details of bind().
      9456cf8f
    • ChrisWren's avatar
      doc: fixed syntax error in stream.Transform · 2385fbbc
      ChrisWren authored
      2385fbbc
    • James Halliday's avatar
      http: removed headers stay removed · 5555318b
      James Halliday authored
      This allows automatically-inserted headers to be removed permanently by
      calling OutgoingMessage.removeHeader() on them, as if they were normal
      headers.
      5555318b
    • Edward Hutchins's avatar
      Added documentation for process.execArgv · 31a27ca7
      Edward Hutchins authored
      31a27ca7
    • Eivind Uggedal's avatar
      732f8b96
    • isaacs's avatar
      Merge remote-tracking branch 'ry/v0.10' · fe0f12b1
      isaacs authored
      fe0f12b1
    • Trevor Norris's avatar
      buffer: lint · f97a1267
      Trevor Norris authored
      This and b80d11d4 are my fault. An unrelated test was failing, which
      prevents {js,cpp}lint from running automatically.
      f97a1267
    • Fedor Indutny's avatar
      buffer: lint · b80d11d4
      Fedor Indutny authored
      b80d11d4
    • Fedor Indutny's avatar
      crypto: don't touch ssl_ in Connection · 306f8634
      Fedor Indutny authored
      `ssl_` is a property of SSLWrap class, don't touch it, and definitely
      don't zero it in constructor.
      306f8634
    • isaacs's avatar
      stream: Throw on 'error' if listeners removed · 54580791
      isaacs authored
      In this situation:
      
          writable.on('error', handler);
          readable.pipe(writable);
          writable.removeListener('error', handler);
          writable.emit('error', new Error('boom'));
      
      there is actually no error handler, but it doesn't throw, because of the
      fix for stream.once('error', handler), in 23d92ec8.
      
      Note that simply reverting that change is not valid either, because
      otherwise this will emit twice, being handled the first time, and then
      throwing the second:
      
          writable.once('error', handler);
          readable.pipe(writable);
          writable.emit('error', new Error('boom'));
      
      Fix this with a horrible hack to make the stream pipe onerror handler
      added before any other userland handlers, so that our handler is not
      affected by adding or removing any userland handlers.
      
      Closes #6007.
      54580791
  4. Aug 19, 2013
    • Fedor Indutny's avatar
      tls, crypto: deduplicate code · b9a0eb06
      Fedor Indutny authored
      Commit 03e008dd introduced src/tls_wrap.cc and src/tls_wrap.h but
      said files copied on the order of 1 kLoC from src/node_crypto.cc
      and src/node_crypto.h.  This commit undoes some of the duplication.
      
      Fixes #6024.
      b9a0eb06
    • Ben Noordhuis's avatar
      src: move includes inside include guard · 3e25ed90
      Ben Noordhuis authored
      Having the includes in src/node_buffer.h outside of the include guard
      is not really harmful but it's inconsistent with other header files.
      3e25ed90
  5. Aug 18, 2013
  6. Aug 17, 2013
    • Ben Noordhuis's avatar
      dgram: fix assertion on bad send() arguments · 0c2960ef
      Ben Noordhuis authored
      Add range checks for the offset, length and port arguments to
      dgram.Socket#send().  Fixes the following assertion:
      
          node: ../../src/udp_wrap.cc:264: static v8::Handle<v8::Value>
          node::UDPWrap::DoSend(const v8::Arguments&, int): Assertion
          `offset < Buffer::Length(buffer_obj)' failed.
      
      And:
      
          node: ../../src/udp_wrap.cc:265: static v8::Handle<v8::Value>
          node::UDPWrap::DoSend(const v8::Arguments&, int): Assertion
          `length <= Buffer::Length(buffer_obj) - offset' failed.
      
      Interestingly enough, a negative port number was accepted until now but
      silently ignored.  (In other words, it would send the datagram to a
      random port.)
      
      This commit exposed a bug in the simple/test-dgram-close test which
      has also been fixed.
      
      This is a back-port of commit 41ec6d05 from the master branch.
      
      Fixes #6025.
      0c2960ef
    • Daniel Chatfield's avatar
      readline: pause stdin before turning off terminal raw mode · 5453619e
      Daniel Chatfield authored
      On windows, libuv will immediately make a `ReadConsole` call (in the
      thread pool) when a 'flowing' `uv_tty_t` handle is switched to
      line-buffered mode. That causes an immediate issue for some users,
      since libuv can't cancel the `ReadConsole` operation on Windows 8 /
      Server 2012 and up if the program switches back to raw mode later.
      
      But even if this will be fixed in libuv at some point, it's better to
      avoid the overhead of starting work in the thread pool and immediately
      cancelling it afther that.
      
      See also f34f1e30, where the same change is made for the opposite
      flow, e.g. move `resume()` after `_setRawMode(true)`.
      
      Fixes #5927
      
      This is a backport of dfb0461c (see #5930) to the v0.10 branch.
      5453619e
    • Daniel Chatfield's avatar
      readline: pause stdin before turning off terminal raw mode · dfb0461c
      Daniel Chatfield authored
      On windows, libuv will immediately make a `ReadConsole` call (in the
      thread pool) when a 'flowing' `uv_tty_t` handle is switched to
      line-buffered mode. That causes an immediate issue for some users,
      since libuv can't cancel the `ReadConsole` operation on Windows 8 /
      Server 2012 and up if the program switches back to raw mode later.
      
      But even if this will be fixed in libuv at some point, it's better to
      avoid the overhead of starting work in the thread pool and immediately
      cancelling it afther that.
      
      See also f34f1e30, where the same change is made for the opposite
      flow, e.g. move `resume()` after `_setRawMode(true)`.
      
      Fixes #5927
      Closes #5930
      dfb0461c
    • isaacs's avatar
      blog: v0.10.16 · a66d2400
      isaacs authored
      a66d2400
    • isaacs's avatar
      Now working on v0.10.17 · 0e043528
      isaacs authored
      0e043528
    • isaacs's avatar
      Merge branch 'v0.10.16-release' into v0.10 · e679739b
      isaacs authored
      e679739b