- Jun 05, 2013
- Jun 04, 2013
-
-
isaacs authored
-
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.
-
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
-
- May 31, 2013
-
-
isaacs authored
-
isaacs authored
-
isaacs authored
* npm: Upgrade to 1.2.24 * uv: Upgrade to v0.10.9 * repl: fix JSON.parse error check (Brian White) * tls: proper .destroySoon (Fedor Indutny) * tls: invoke write cb only after opposite read end (Fedor Indutny) * tls: ignore .shutdown() syscall error (Fedor Indutny)
-
isaacs authored
-
- May 30, 2013
-
-
Kiyoshi Nomo authored
`bufferSize` option has been removed in b0f6789a.
-
Brian White authored
Before this, entering something like: > JSON.parse('066'); resulted in the "..." prompt instead of displaying the expected "SyntaxError: Unexpected number" -
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.
-
- May 29, 2013
-
-
Ben Noordhuis authored
-
Daniel G. Taylor authored
Add `secureProtocol` parameter docs to the https.request method.
-
Daniel G. Taylor authored
Add `secureProtocol` parameter docs to the tls.connect method.
-
isaacs authored
-
Fedor Indutny authored
Stream's `._write()` callback should be invoked only after it's opposite stream has finished processing incoming data, otherwise `finish` event fires too early and connection might be closed while there's some data to send to the client. see #5544
-
Fedor Indutny authored
Quote from SSL_shutdown man page: The output of SSL_get_error(3) may be misleading, as an erroneous SSL_ERROR_SYSCALL may be flagged even though no error occurred. Also, handle all other errors to prevent assertion in `ClearError()`.
-
- May 25, 2013
-
-
Rafael Henrique Moreira authored
Add a link to the Brazilian community portal.
-
Rafael Henrique Moreira authored
Links to Node Manual and Node Bits both are broken, so this commit removes them from the community page.
-
isaacs authored
-
isaacs authored
-
isaacs authored
-
isaacs authored
* v8: update to 3.14.5.9 * uv: upgrade to 0.10.8 * npm: Upgrade to 1.2.23 * http: remove bodyHead from 'upgrade' events (Nathan Zadoks) * http: Return true on empty writes, not false (isaacs) * http: save roundtrips, convert buffers to strings (Ben Noordhuis) * configure: respect the --dest-os flag consistently (Nathan Rajlich) * buffer: throw when writing beyond buffer (Trevor Norris) * crypto: Clear error after DiffieHellman key errors (isaacs) * string_bytes: strip padding from base64 strings (Trevor Norris)
-
isaacs authored
-
Fedor Indutny authored
When writing bad data to EncryptedStream it'll first get to the ClientHello parser, and, only after it will refuse it, to the OpenSSL. But ClientHello parser has limited buffer and therefore write could return `bytes_written` < `incoming_bytes`, which is not the case when working with OpenSSL. After such errors ClientHello parser disables itself and will pass-through all data to the OpenSSL. So just trying to write data one more time will throw the rest into OpenSSL and let it handle it.
-
isaacs authored
-
isaacs authored
-
Nathan Zadoks authored
Streams2 makes this unnecessary. An empty buffer is provided for compatibility.
-
- May 24, 2013
-
-
Timothy J Fontaine authored
Prior to 119354f7 we specifically handled passing a zero length string to write on a buffer, restore that functionality.
-
isaacs authored
Otherwise, writing an empty string causes the whole program to grind to a halt when piping data into http messages. This wasn't as much of a problem (though it WAS a bug) in 0.8 and before, because our hyperactive 'drain' behavior would mean that some *previous* write() would probably have a pending drain event, and cause things to start moving again.
-
Timothy J Fontaine authored
-
Timothy J Fontaine authored
As is the backport of the abort on uncaught exception wouldn't compile because we it was passing in `this` when it was unnecessary.
-
Timothy J Fontaine authored
-
- May 23, 2013
-
-
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.
-
- May 22, 2013
-
-
Ben Noordhuis authored
-
Nathan Rajlich authored
Consider a user on his Mac, who wants to cross-compile for his Linux ARM device: ./configure --dest-cpu=arm --dest-os=linux Before this patch, for example, DTrace probes would incorrectly attempt to be enabled because the configure script is running on a MacOS machine, even though we're trying to compile a binary for `linux`. With this patch, the `--dest-os` flag is respected throughout the configure script, thus leaving DTrace probes disabled in this cross-compiling scenario. -
Timothy J Fontaine authored
-