Ben Noordhuis [Thu, 29 Aug 2013 12:05:42 +0000 (14:05 +0200)]
crypto: make root_cert_store variable extern
Before this commit it was declared static (in a header file!), meaning
it got duplicated in every file that includes it.
A few duplicated pointers is not the end of the world but it introduces
a lot of potential for confusion because root_cert_store in file A is
not the root_cert_store in file B.
Moral of the story: don't declare static variables in header files.
Ben Noordhuis [Thu, 29 Aug 2013 12:02:11 +0000 (14:02 +0200)]
crypto: remove misleading comment
Ben Noordhuis [Thu, 29 Aug 2013 11:57:29 +0000 (13:57 +0200)]
crypto: make error buffer non-static
Doesn't matter now but it will if/when we have support for multiple
threads.
Domenic Denicola [Sat, 24 Aug 2013 23:46:31 +0000 (19:46 -0400)]
vm: document vm2's changes.
- The caveats no longer apply.
- Document options arguments, including `displayErrors` and the
different things it means in each place.
- Re-did examples to be more on point, e.g. `runInContext` example
runs multiple scripts in the same context.
- Documented how `vm.createContext`s meaning has substantially changed,
and is now more of a "contextifier" than a "creator."
- Reordered vm functions to be readable in order; the concept of
contextifying needs to come before `runInContext` and
`runInNewContext`.
- Documented new `vm.isContext`.
- Documented the `vm.Script` constructor, instead of `createScript`,
since factory methods are silly and we wanted to document the class's
methods anyway.
- Documented `script.runInContext`.
- Change stability to stable, if I may be so bold.
Domenic Denicola [Sat, 24 Aug 2013 22:53:24 +0000 (18:53 -0400)]
vm: update API to use options argument
Passing a filename is still supported in place of certain options
arguments, for backward-compatibility, but timeout and display-errors
are not translated since those were undocumented.
Also managed to eliminate an extra stack trace line by not calling
through the `createScript` export.
Added a few message tests to show how `displayErrors` works.
Bert Belder [Wed, 28 Aug 2013 21:35:43 +0000 (23:35 +0200)]
pipe_wrap: squelch integer type conversion warning
Timothy J Fontaine [Wed, 28 Aug 2013 18:29:33 +0000 (11:29 -0700)]
timer_wrap: Timer.now always update loop time
In `Timer.now` always update the loop time by calling uv_update_time.
Previously we were trying to cache the loop time to prevent extra
syscalls. While a noble goal, it can cause timers to fire early in
certain circumstances. Especially seen in cpu bound work loads or work
loads with synchronous file operations.
isaacs [Wed, 28 Aug 2013 17:11:17 +0000 (10:11 -0700)]
Merge remote-tracking branch 'ry/v0.10'
Conflicts:
AUTHORS
ChangeLog
deps/uv/ChangeLog
deps/uv/include/uv-darwin.h
deps/uv/src/unix/darwin.c
deps/uv/src/unix/fsevents.c
deps/uv/src/version.c
lib/_stream_writable.js
src/node_version.h
isaacs [Wed, 28 Aug 2013 16:35:36 +0000 (09:35 -0700)]
stream: check _events before _events.error
This fixes the regression introduced by 5458079, which breaks the
net/net-pipe benchmark script.
Closes #6145
Ben Noordhuis [Tue, 27 Aug 2013 19:11:13 +0000 (21:11 +0200)]
crypto: make randomBytes/pbkdf2 cbs domain aware
Make the crypto.randomBytes() and crypto.pbkdf2() callback functions
run inside the current domain (if any.)
Fixes #3965.
Domenic Denicola [Sat, 24 Aug 2013 19:45:02 +0000 (15:45 -0400)]
vm: add isContext; prevent double-contextifying
Previously, calling `vm.createContext(o)` repeatedly on the same `o`
would cause new C++ `ContextifyContext`s to be created and stored on
`o`, while the previous resident went off into leaked-memory limbo.
Now, repeatedly trying to contextify a sandbox will do nothing after
the first time.
To detect this, an independently-useful `vm.isContext(sandbox)` export
was added.
Domenic Denicola [Sat, 24 Aug 2013 01:33:16 +0000 (21:33 -0400)]
vm: use MakeWeak to fix leaking contexts
This is always something you should do when using `SetHiddenValue`,
apparently. Fixes #6115. Thanks @tjfontaine for the tips.
Domenic Denicola [Sat, 24 Aug 2013 01:17:15 +0000 (21:17 -0400)]
vm: rip out ObjectWrap from ContextifyContext
This was a remnant of the original Contextify code, wherein
ContextifyContext was a user-exposed object. In vm, it is not, so all
of the ObjectWrap and function-template stuff for the ContextifyContext
constructor is now unnecessary.
isaacs [Wed, 28 Aug 2013 02:52:09 +0000 (19:52 -0700)]
doc: Adjust util stability index to 'API Frozen'
Closes #6087
isaacs [Wed, 28 Aug 2013 02:52:09 +0000 (19:52 -0700)]
doc: Adjust util stability index to 'API Frozen'
Closes #6087
isaacs [Wed, 28 Aug 2013 01:09:26 +0000 (18:09 -0700)]
doc: mark repl as stable
Closes #6090
Mathias Buus [Thu, 22 Aug 2013 17:58:27 +0000 (19:58 +0200)]
stream: change default hwm for objectMode to 16
isaacs [Wed, 28 Aug 2013 00:28:27 +0000 (17:28 -0700)]
child_process: Avoid extra copy for string stdio
There's no need to create a new Buffer instance if we're just going to
immediately call toString() at the end anyway. Better to create a
string up front, and setEncoding() on the streams, and do a string
concatenation instead.
Seth Fitzsimmons [Sat, 13 Jul 2013 23:34:52 +0000 (16:34 -0700)]
child_process: Callback with Buffers from exec
Only return strings when encoding is not null.
Trevor Norris [Tue, 27 Aug 2013 22:18:12 +0000 (15:18 -0700)]
v8: upgrade to 3.20.17
isaacs [Tue, 27 Aug 2013 21:53:06 +0000 (14:53 -0700)]
stream: Pass 'buffer' encoding to decoded writables
Since the encoding is no longer relevant once it is decoded to a Buffer,
it is confusing and incorrect to pass the encoding as 'utf8' or whatever
in those cases.
Closes #6119
Forrest L Norvell [Thu, 14 Mar 2013 21:11:15 +0000 (14:11 -0700)]
domains: deprecate domain.dispose().
Follows @isaacs's recommendations in joyent/node#5018. Includes some
updates to documentation but not examples.
Conflicts:
lib/domain.js
isaacs [Tue, 27 Aug 2013 17:35:14 +0000 (10:35 -0700)]
fs: Expose birthtime on stat objects
Just do the best we can with whatever libuv gives us.
Also, document the semantics of `ctime` and the compatibility with
Windows.
Jay Beavers [Mon, 8 Apr 2013 22:33:49 +0000 (15:33 -0700)]
doc: Small update of readme for Windows users
isaacs [Tue, 27 Aug 2013 02:14:42 +0000 (19:14 -0700)]
lib: Add missing copyright notices
Ben Noordhuis [Tue, 27 Aug 2013 14:14:45 +0000 (16:14 +0200)]
src: remove two pointless globals from node.cc
De-globalize use_npn and use_sni, they're only used in GetFeatures().
Ben Noordhuis [Tue, 27 Aug 2013 12:47:46 +0000 (14:47 +0200)]
src: call uv_loop_delete() on exit in debug mode
Should make tracing with valgrind a little easier on the eye and
possibly help expose libuv handle lifecycle issues.
Ben Noordhuis [Tue, 27 Aug 2013 12:09:36 +0000 (14:09 +0200)]
src: remove --max-stack-size option
Ad-hoc duplicate of V8's --stack-size option. Superfluous in other
words. Remove it.
Ben Noordhuis [Tue, 27 Aug 2013 11:20:39 +0000 (13:20 +0200)]
cares_wrap: drop UV_HANDLE_FIELDS from ares_task_t
UV_HANDLE_FIELDS is a libuv implementation detail. The ares_task_t
struct only uses the uv_loop_t* field so be explicit about that.
Ben Noordhuis [Mon, 26 Aug 2013 22:13:50 +0000 (00:13 +0200)]
src: fix up unused/unordered imports
Trevor Norris [Mon, 26 Aug 2013 10:26:31 +0000 (03:26 -0700)]
buffer: fix assert fail from JS API
Length arguments passed to SlowBuffer were coerced to Int32, not Uint32,
so passing a negative number would throw the following:
node: ../src/smalloc.cc:244: void node::smalloc::Alloc(): Assertion `length <= kMaxLength' failed.
Aborted (core dumped)
That has been fixed by coercing to Uint32 and comparing the value
against kMaxLength.
Trevor Norris [Mon, 26 Aug 2013 10:20:23 +0000 (03:20 -0700)]
buffer: add NativeBuffer API
Due to a lot of the util.is* checks there was much unnecessary overhead
for the most common use case of Buffer. Which is creating a new Buffer
instance for data from incoming I/O. NativeBuffer is a simple way to
bypass all the unneeded checks and simply hand back a Buffer instance
while setting the length.
Ben Noordhuis [Mon, 26 Aug 2013 13:13:35 +0000 (15:13 +0200)]
src: remove pointless node_os.h header file
src/node_os.cc doesn't export anything that's used elsewhere. Remove it.
Bert Belder [Sun, 25 Aug 2013 16:44:57 +0000 (18:44 +0200)]
process_wrap: don't coerce process exit code to int32_t
On windows process exit codes can be greater than INT32_MAX. This used
to be not much of a problem - greater values would just come out
negative. However since ca9eb71 a negative result value indicates that
uv_spawn() has failed, so this is no longer acceptable.
Bert Belder [Sat, 24 Aug 2013 17:47:45 +0000 (19:47 +0200)]
uv: upgrade to v0.11.10
Trevor Norris [Wed, 21 Aug 2013 23:12:17 +0000 (16:12 -0700)]
domain: move error handling directly into instance
Instead of doing all the domain handling in core, allow the domain to
set an error handler that'll take care of it all. This way the domain
error handling can be abstracted enough for any user to use it.
Bert Belder [Fri, 23 Aug 2013 17:08:49 +0000 (19:08 +0200)]
process_wrap: update after libuv api change
The `exit_code` argument for the `ProcessWrap::OnExit` callback changed
from int to int64_t.
Bert Belder [Fri, 23 Aug 2013 17:04:27 +0000 (19:04 +0200)]
uv: upgrade to v0.11.9
Bert Belder [Fri, 23 Aug 2013 17:02:14 +0000 (19:02 +0200)]
uv: update to v0.10.15
Ben Noordhuis [Fri, 23 Aug 2013 00:01:29 +0000 (02:01 +0200)]
vm: fix Persistent<Context> leak
Ben Noordhuis [Fri, 23 Aug 2013 12:29:57 +0000 (14:29 +0200)]
vm: remove unnecessary Persistent<FunctionTemplate>
Ben Noordhuis [Fri, 23 Aug 2013 10:00:28 +0000 (12:00 +0200)]
buffer: fix regression in Buffer(buf) constructor
Commit
3a2f273b got the source and the target wrong when copying over
the data. Fix that and add a regression test.
Fixes #6111.
Timothy J Fontaine [Thu, 22 Aug 2013 01:38:23 +0000 (18:38 -0700)]
util: pass opts to custom inspect functions
Objects with custom inpsect functions should get the options that were
passed to `util.inspect()`
fixes #5822
fixes #6098
Trevor Norris [Thu, 22 Aug 2013 05:18:20 +0000 (22:18 -0700)]
buffer: fix inspect throw if slice length too long
All the Buffer#{ascii,hex,etc.}Slice() methods are intentionally strict
to alert if a Buffer instance was attempting to be accessed out of
bounds. Buffer#toString() is the more user friendly way of accessing the
data, and will coerce values to their min/max on overflow.
Timothy J Fontaine [Thu, 22 Aug 2013 01:17:11 +0000 (18:17 -0700)]
buffer: adhere to INSPECT_MAX_BYTES
isaacs [Thu, 22 Aug 2013 00:19:41 +0000 (17:19 -0700)]
vm: Put back display_errors flag
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.
Timothy J Fontaine [Wed, 21 Aug 2013 23:59:15 +0000 (16:59 -0700)]
tools: script release steps after jenkins build
Timothy J Fontaine [Wed, 21 Aug 2013 23:55:27 +0000 (16:55 -0700)]
tools: script to report [un]stable build
Timothy J Fontaine [Wed, 21 Aug 2013 23:38:30 +0000 (16:38 -0700)]
blog: Post for v0.10.17
Timothy J Fontaine [Wed, 21 Aug 2013 23:37:43 +0000 (16:37 -0700)]
Now working on 0.10.18
Timothy J Fontaine [Wed, 21 Aug 2013 23:37:31 +0000 (16:37 -0700)]
Merge branch 'v0.10.17-release' into v0.10
Domenic Denicola [Sat, 27 Jul 2013 04:34:12 +0000 (00:34 -0400)]
vm, core, module: re-do vm to fix known issues
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
Timothy J Fontaine [Wed, 21 Aug 2013 22:00:56 +0000 (15:00 -0700)]
2013.08.21, Version 0.10.17 (Stable)
* uv: Upgrade v0.10.14
* http_parser: Do not accept PUN/GEM methods as PUT/GET (Chris Dickinson)
* tls: fix assertion when ssl is destroyed at read (Fedor Indutny)
* stream: Throw on 'error' if listeners removed (isaacs)
* dgram: fix assertion on bad send() arguments (Ben Noordhuis)
* readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
Timothy J Fontaine [Wed, 21 Aug 2013 21:44:20 +0000 (14:44 -0700)]
uv: Upgrade v0.10.14
Timothy J Fontaine [Wed, 21 Aug 2013 21:26:32 +0000 (14:26 -0700)]
blog: v0.11.6
Timothy J Fontaine [Wed, 21 Aug 2013 21:16:46 +0000 (14:16 -0700)]
Now working on 0.11.7
Timothy J Fontaine [Wed, 21 Aug 2013 21:16:29 +0000 (14:16 -0700)]
Merge branch 'v0.11.6-release'
Timothy J Fontaine [Wed, 21 Aug 2013 20:20:50 +0000 (13:20 -0700)]
2013.08.21, Version 0.11.6 (Unstable)
* 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)
Timothy J Fontaine [Wed, 21 Aug 2013 18:15:21 +0000 (11:15 -0700)]
uv: Upgrade to v0.11.8
isaacs [Wed, 21 Aug 2013 18:11:02 +0000 (11:11 -0700)]
doc: Mention python dep in downloads page
Closes #3604
Timothy J Fontaine [Wed, 21 Aug 2013 17:51:42 +0000 (10:51 -0700)]
test: net-GH-5504 child env needs NODE_COMMON_PORT
isaacs [Wed, 21 Aug 2013 16:40:10 +0000 (09:40 -0700)]
Merge remote-tracking branch 'ry/v0.10'
Conflicts:
lib/tls.js
Fedor Indutny [Wed, 21 Aug 2013 08:33:09 +0000 (12:33 +0400)]
test: fix test failure on linux after edd2fcc
Ben Noordhuis [Wed, 21 Aug 2013 01:33:20 +0000 (03:33 +0200)]
deps: upgrade http_parser to 303c4e4
Upgrade to joyent/http-parser@303c4e4. Changes:
* Do not accept PUN/GEM methods as PUT/GET.
* Further request method check strengthening.
Fedor Indutny [Wed, 21 Aug 2013 11:58:33 +0000 (15:58 +0400)]
tls: fix assertion when ssl is destroyed at read
`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
Trevor Norris [Tue, 20 Aug 2013 17:55:42 +0000 (10:55 -0700)]
smalloc: consistent-ify syntax
Small syntax fixes of variable renaming and argument alignment.
Trevor Norris [Tue, 20 Aug 2013 17:30:40 +0000 (10:30 -0700)]
smalloc: length is byte size, not array length
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.
Trevor Norris [Tue, 20 Aug 2013 17:12:29 +0000 (10:12 -0700)]
smalloc: expose ExternalArraySize
Useful to correctly determine the byte size of the external memory that
needs to be allocated for an external array.
Trevor Norris [Tue, 20 Aug 2013 18:05:36 +0000 (11:05 -0700)]
util: isObject should always return boolean
Fix small bug where isObject would return the original object instead of
true.
Vsevolod Strukchinsky [Tue, 20 Aug 2013 12:31:40 +0000 (18:31 +0600)]
net: family option in net.connect
`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.
Gil Pedersen [Tue, 20 Aug 2013 13:53:54 +0000 (15:53 +0200)]
fs: use correct self reference for autoClose test
isaacs [Tue, 20 Aug 2013 00:55:58 +0000 (17:55 -0700)]
doc: Minor typos in dgram doc
a/an usage. Thanks @KenanSulayman
isaacs [Tue, 20 Aug 2013 00:43:38 +0000 (17:43 -0700)]
test: Remove unnecessary assertion
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.
Raynos [Mon, 13 May 2013 19:04:06 +0000 (13:04 -0600)]
events: have events module exports EventEmitter
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`
Matthew Aynalem [Mon, 12 Aug 2013 22:01:05 +0000 (15:01 -0700)]
fixes #6031 spelling errors
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
Duan Yao [Tue, 4 Dec 2012 10:12:10 +0000 (18:12 +0800)]
doc: Add callback parameter to dgram socket.bind()
Also, describe more details of bind().
ChrisWren [Sun, 11 Aug 2013 19:30:03 +0000 (12:30 -0700)]
doc: fixed syntax error in stream.Transform
James Halliday [Mon, 10 Sep 2012 02:04:37 +0000 (19:04 -0700)]
http: removed headers stay removed
This allows automatically-inserted headers to be removed permanently by
calling OutgoingMessage.removeHeader() on them, as if they were normal
headers.
Edward Hutchins [Thu, 23 May 2013 01:04:36 +0000 (18:04 -0700)]
Added documentation for process.execArgv
Eivind Uggedal [Thu, 4 Jul 2013 16:52:14 +0000 (18:52 +0200)]
doc: add missing word in Transform stream intro
isaacs [Mon, 19 Aug 2013 21:15:03 +0000 (14:15 -0700)]
Merge remote-tracking branch 'ry/v0.10'
Trevor Norris [Mon, 19 Aug 2013 18:15:16 +0000 (11:15 -0700)]
buffer: lint
This and b80d11d are my fault. An unrelated test was failing, which
prevents {js,cpp}lint from running automatically.
Fedor Indutny [Mon, 19 Aug 2013 16:41:24 +0000 (20:41 +0400)]
buffer: lint
Fedor Indutny [Mon, 19 Aug 2013 16:34:34 +0000 (20:34 +0400)]
crypto: don't touch ssl_ in Connection
`ssl_` is a property of SSLWrap class, don't touch it, and definitely
don't zero it in constructor.
isaacs [Mon, 19 Aug 2013 14:59:39 +0000 (07:59 -0700)]
stream: Throw on 'error' if listeners removed
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 23d92ec.
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.
Fedor Indutny [Thu, 15 Aug 2013 15:28:26 +0000 (19:28 +0400)]
tls, crypto: deduplicate code
Commit 03e008d 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.
Ben Noordhuis [Mon, 19 Aug 2013 14:39:04 +0000 (16:39 +0200)]
src: move includes inside include guard
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.
isaacs [Sat, 17 Aug 2013 20:57:41 +0000 (13:57 -0700)]
Merge remote-tracking branch 'ry/v0.10'
Conflicts:
AUTHORS
ChangeLog
lib/dgram.js
lib/http.js
src/node_crypto.cc
src/node_version.h
Ben Noordhuis [Fri, 9 Aug 2013 00:33:40 +0000 (02:33 +0200)]
dgram: fix assertion on bad send() arguments
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 41ec6d0 from the master branch.
Fixes #6025.
Daniel Chatfield [Tue, 30 Jul 2013 13:43:31 +0000 (14:43 +0100)]
readline: pause stdin before turning off terminal raw mode
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 f34f1e3, where the same change is made for the opposite
flow, e.g. move `resume()` after `_setRawMode(true)`.
Fixes #5927
This is a backport of dfb0461 (see #5930) to the v0.10 branch.
Daniel Chatfield [Tue, 30 Jul 2013 13:43:31 +0000 (14:43 +0100)]
readline: pause stdin before turning off terminal raw mode
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 f34f1e3, where the same change is made for the opposite
flow, e.g. move `resume()` after `_setRawMode(true)`.
Fixes #5927
Closes #5930
isaacs [Fri, 16 Aug 2013 19:47:54 +0000 (12:47 -0700)]
blog: v0.10.16
isaacs [Fri, 16 Aug 2013 19:47:29 +0000 (12:47 -0700)]
Now working on v0.10.17
isaacs [Fri, 16 Aug 2013 19:46:56 +0000 (12:46 -0700)]
Merge branch 'v0.10.16-release' into v0.10
Trevor Norris [Fri, 16 Aug 2013 18:32:56 +0000 (11:32 -0700)]
buffer: don't call ByteLength for simple encodings
For several encodings the byte length is simple arithmetic. Don't call
into C++ in those cases.
isaacs [Fri, 16 Aug 2013 15:31:10 +0000 (08:31 -0700)]
2013.08.16, Version 0.10.16 (Stable)
* v8: back-port fix for CVE-2013-2882
* npm: Upgrade to 1.3.8
* crypto: fix assert() on malformed hex input (Ben Noordhuis)
* crypto: fix memory leak in randomBytes() error path (Ben Noordhuis)
* events: fix memory leak, don't leak event names (Ben Noordhuis)
* http: Handle hex/base64 encodings properly (isaacs)
* http: improve chunked res.write(buf) performance (Ben Noordhuis)
* stream: Fix double pipe error emit (Eran Hammer)
isaacs [Fri, 16 Aug 2013 15:19:31 +0000 (08:19 -0700)]
npm: Upgrade to 1.3.8
Ben Noordhuis [Fri, 16 Aug 2013 14:49:00 +0000 (16:49 +0200)]
crypto: fix memory leak in randomBytes() error path
This is the conceptual back-port of commit ec54873 from the master
branch.
Ben Noordhuis [Fri, 16 Aug 2013 14:42:50 +0000 (16:42 +0200)]
crypto: fix memory leak in randomBytes() error path
Ben Noordhuis [Fri, 16 Aug 2013 14:36:21 +0000 (16:36 +0200)]
crypto: don't mix new[] and free()
RandomBytes() allocated memory with new[] which was then handed off to
Buffer::Use() which eventually releases it again with free().
Mixing the two is technically a violation of the spec and besides, it's
generally frowned upon.