1. Jun 05, 2013
  2. Jun 04, 2013
    • isaacs's avatar
      url: Set href to null by default · 5dd91b01
      isaacs authored
      5dd91b01
    • isaacs's avatar
      url: Properly parse certain oddly formed urls · 5dc51d4e
      isaacs authored
      In cases where there are multiple @-chars in a url, Node currently
      parses the hostname and auth sections differently than web browsers.
      
      This part of the bug is serious, and should be landed in v0.10, and
      also ported to v0.8, and releases made as soon as possible.
      
      The less serious issue is that there are many other sorts of malformed
      urls which Node either accepts when it should reject, or interprets
      differently than web browsers.  For example, `http://a.com*foo` is
      interpreted by Node like `http://a.com/*foo` when web browsers treat
      this as `http://a.com%3Bfoo/`.
      
      In general, *only* the `hostEndingChars` should be the characters that
      delimit the host portion of the URL.  Most of the current `nonHostChars`
      that appear in the hostname should be escaped, but some of them (such as
      `;` and `%` when it does not introduce a hex pair) should raise an
      error.
      
      We need to have a broader discussion about whether it's best to throw in
      these cases, and potentially break extant programs, or return an object
      that has every field set to `null` so that any attempt to read the
      hostname/auth/etc. will appear to be empty.
      5dc51d4e
    • isaacs's avatar
      stream: unshift('') is a noop · df6ffc01
      isaacs authored
      In some cases, the http CONNECT/Upgrade API is unshifting an empty
      bodyHead buffer onto the socket.
      
      Normally, stream.unshift(chunk) does not set state.reading=false.
      However, this check was not being done for the case when the chunk was
      empty (either `''` or `Buffer(0)`), and as a result, it was causing the
      socket to think that a read had completed, and to stop providing data.
      
      This bug is not limited to http or web sockets, but rather would affect
      any parser that unshifts data back onto the source stream without being
      very careful to never unshift an empty chunk.  Since the intent of
      unshift is to *not* change the state.reading property, this is a bug.
      
      Fixes #5557
      Fixes LearnBoost/socket.io#1242
      df6ffc01
  3. May 31, 2013
  4. May 30, 2013
    • Kiyoshi Nomo's avatar
      doc: remove `bufferSize` option · 36e90da6
      Kiyoshi Nomo authored
      `bufferSize` option has been removed in b0f6789a.
      36e90da6
    • Brian White's avatar
      repl: fix JSON.parse error check · 774b28fd
      Brian White authored
      Before this, entering something like:
      
      > JSON.parse('066');
      
      resulted in the "..." prompt instead of displaying the expected
      "SyntaxError: Unexpected number"
      774b28fd
    • Fedor Indutny's avatar
      tls: proper .destroySoon · 9ee86b71
      Fedor Indutny authored
      1. Emit `sslOutEnd` only when `_internallyPendingBytes() === 0`.
      2. Read before checking `._halfRead`, otherwise we'll see only previous
         value, and will invoke `._write` callback improperly.
      3. Wait for both `end` and `finish` events in `.destroySoon`.
      4. Unpipe encrypted stream from socket to prevent write after destroy.
      9ee86b71
  5. May 29, 2013
  6. May 25, 2013
  7. May 24, 2013
  8. May 23, 2013
    • Ben Noordhuis's avatar
      http: save roundtrips, convert buffers to strings · fda2b319
      Ben Noordhuis authored
      This commit adds an optimization to the HTTP client that makes it
      possible to:
      
      * Pack the headers and the first chunk of the request body into a
        single write().
      
      * Pack the chunk header and the chunk itself into a single write().
      
      Because only one write() system call is issued instead of several,
      the chances of data ending up in a single TCP packet are phenomenally
      higher: the benchmark with `type=buf size=32` jumps from 50 req/s to
      7,500 req/s, a 150-fold increase.
      
      This commit removes the check from e4b716ef that pushes binary encoded
      strings into the slow path. The commit log mentions that:
      
          We were assuming that any string can be concatenated safely to
          CRLF.  However, for hex, base64, or binary encoded writes, this
          is not the case, and results in sending the incorrect response.
      
      For hex and base64 strings that's certainly true but binary strings
      are 'das Ding an sich': string.length is the same before and after
      decoding.
      
      Fixes #5528.
      fda2b319
  9. May 22, 2013