platform/upstream/nodejs.git
10 years agocontextify: remove useless header file
Fedor Indutny [Tue, 8 Jul 2014 18:43:48 +0000 (21:43 +0300)]
contextify: remove useless header file

fix #7910

10 years agoreadme: added g++ requirement
John Albietz [Thu, 3 Jul 2014 23:15:46 +0000 (16:15 -0700)]
readme: added g++ requirement

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agomodule: don't require fs several times
Robert Kowalski [Thu, 3 Jul 2014 20:39:29 +0000 (22:39 +0200)]
module: don't require fs several times

As we are going to need fs in any case, just require it at the
beginning of the file.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agonet: reset `errorEmitted` on reconnect
Ed Umansky [Thu, 3 Jul 2014 00:59:28 +0000 (18:59 -0600)]
net: reset `errorEmitted` on reconnect

Fix for `error` events emitting only once when reconnecting
a single instance of net.Socket.

Fixes joyent/node#7888

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agolint: fix indentation
Trevor Norris [Thu, 3 Jul 2014 04:02:36 +0000 (21:02 -0700)]
lint: fix indentation

10 years agoudp: make it possible to receive empty udp packets
Andrius Bentkus [Wed, 2 Jul 2014 13:24:17 +0000 (15:24 +0200)]
udp: make it possible to receive empty udp packets

A udp packet can have 0 content. In that case nread will be equal to 0,
but addr != NULL.

Add test case for empty data gram packets and fixed test that checked
for OOB when length == 0.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agodeps: cherry-pick eca441b2 from OpenSSL
Fedor Indutny [Wed, 2 Jul 2014 17:35:50 +0000 (19:35 +0200)]
deps: cherry-pick eca441b2 from OpenSSL

Original commit message:

    bn_exp.c: fix x86_64-specific crash with one-word modulus.

    PR: #3397

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agotls: better error reporting at cert validation
Fedor Indutny [Mon, 14 Apr 2014 16:08:38 +0000 (20:08 +0400)]
tls: better error reporting at cert validation

fix #7417

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agochild_process: accept uid/gid everywhere
Fedor Indutny [Wed, 2 Jul 2014 11:26:46 +0000 (15:26 +0400)]
child_process: accept uid/gid everywhere

Accept uid/gid option in every execute/spawn call (including
cluster.fork). Add documentation where needed.

fix #7881

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agonet: don't emit listening if handle is closed
Eli Skeggs [Sat, 28 Jun 2014 05:32:50 +0000 (22:32 -0700)]
net: don't emit listening if handle is closed

Fixes #7834

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agotest: fix multiple_line problem in match
Yazhong Liu [Tue, 1 Jul 2014 13:35:35 +0000 (21:35 +0800)]
test: fix multiple_line problem in match

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodocs: highlight shell-codes in CONTRIBUTING.md
Ionică Bizău [Mon, 31 Mar 2014 19:06:03 +0000 (22:06 +0300)]
docs: highlight shell-codes in CONTRIBUTING.md

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agoconfigure: better detect windows 'bitness' (WOW64)
Refael Ackermann [Tue, 1 Jul 2014 07:48:28 +0000 (10:48 +0300)]
configure: better detect windows 'bitness' (WOW64)

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agoevents: Output the event that is leaking
Arnout Kazemier [Tue, 1 Jul 2014 06:44:09 +0000 (08:44 +0200)]
events: Output the event that is leaking

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agorepl: fix multi-line input
Fedor Indutny [Sat, 7 Jun 2014 06:00:55 +0000 (23:00 -0700)]
repl: fix multi-line input

The refactor in 3ae0b17c broke the multiline input's visual appearence.
While actually switching to this mode, the `...` prefix is not
displayed.

Additionally, account only SyntaxErrors that are happening at the parse
time, everything else should not be switching repl to the multiline
mode.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agostream: only end reading on null, not undefined
Jonathan Reem [Sat, 28 Jun 2014 18:46:42 +0000 (11:46 -0700)]
stream: only end reading on null, not undefined

The [Stream documentation for .push](http://nodejs.org/api/stream.html#stream_readable_push_chunk_encoding)
explicitly states multiple times that null is a special cased value
that indicates the end of a stream. It is confusing and undocumented
that undefined *also* ends the stream, even though in object mode
there is a distinct and important difference.

The docs for Object-Mode also explicitly mention null as the *only*
special cased value, making no mention of undefined.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agohttp: remove unused code block
Fedor Indutny [Thu, 12 Jun 2014 04:38:58 +0000 (21:38 -0700)]
http: remove unused code block

fix #7769

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agonode: fix #7841 by overlooking the spare sourceline
Yazhong Liu [Wed, 25 Jun 2014 13:18:50 +0000 (21:18 +0800)]
node: fix #7841 by overlooking the spare sourceline

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agobuffer: construct new buffer from buffer toJSON() output
cjihrig [Fri, 27 Jun 2014 04:07:16 +0000 (00:07 -0400)]
buffer: construct new buffer from buffer toJSON() output

Creating a new buffer from the toJSON() output of another
buffer does not currently work. This commit adds that
support. Closes #7849.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodeps: update libuv to v0.11.26
Fedor Indutny [Fri, 27 Jun 2014 00:44:36 +0000 (04:44 +0400)]
deps: update libuv to v0.11.26

10 years agodns: introduce lookupService function
Saúl Ibarra Corretgé [Fri, 20 Jun 2014 22:43:00 +0000 (00:43 +0200)]
dns: introduce lookupService function

Uses getnameinfo to resolve an address an port into a hostname and
service.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodeps: build v8 with disassembler support
Fedor Indutny [Sat, 17 May 2014 08:42:50 +0000 (12:42 +0400)]
deps: build v8 with disassembler support

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agocrypto: add `honorCipherOrder` argument
Fedor Indutny [Wed, 25 Jun 2014 10:47:59 +0000 (14:47 +0400)]
crypto: add `honorCipherOrder` argument

Add `honorCipherOrder` argument to `crypto.createCredentials`.

fix #7249

10 years agodoc: document `tls.createSecureContext`
Fedor Indutny [Wed, 25 Jun 2014 10:11:09 +0000 (14:11 +0400)]
doc: document `tls.createSecureContext`

10 years agotest: fix tls-client-default-ciphers
Fedor Indutny [Wed, 25 Jun 2014 07:16:08 +0000 (11:16 +0400)]
test: fix tls-client-default-ciphers

The test execution should not depend on the servers running locally.

fix #7832

10 years agodns: send lookup c-ares errors to callback
Chris Dickinson [Thu, 5 Jun 2014 00:26:34 +0000 (17:26 -0700)]
dns: send lookup c-ares errors to callback

Calling dns.lookup with arguments that generate an error from c-ares
previously sent those errors back to the callback. This commit restores
the ca9eb71 behavior.

Fixes #7731.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agomodule: document important methods
Fred K. Schott [Thu, 12 Jun 2014 18:12:54 +0000 (11:12 -0700)]
module: document important methods

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodoc: typos in child_process
Kyle Robinson Young [Sun, 15 Jun 2014 16:04:12 +0000 (09:04 -0700)]
doc: typos in child_process

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodoc: process: Document process.mainModule
Jan Krems [Sun, 22 Jun 2014 00:09:04 +0000 (17:09 -0700)]
doc: process: Document process.mainModule

Instrumentation code might need to find out the entry point of the
process in a global context.
Documenting the existing process.mainModule to officially support this.

Fixes #7808

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agotls: using %StringSplit to split `cert.subjectaltname`
Yazhong Liu [Sun, 22 Jun 2014 15:34:47 +0000 (23:34 +0800)]
tls: using %StringSplit to split `cert.subjectaltname`

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agochild_process: don't throw on EAGAIN
Charles [Tue, 17 Jun 2014 22:44:11 +0000 (00:44 +0200)]
child_process: don't throw on EAGAIN

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agochild_process: use full path for cmd.exe on Win32
Ed Morley [Tue, 13 May 2014 12:20:36 +0000 (13:20 +0100)]
child_process: use full path for cmd.exe on Win32

Currently child_process.exec() assumes that cmd.exe is on the PATH,
and fails with a spawn ENOENT error if it is not.

The Windows 'comspec' environment variable contains the full filepath
to the default command interpreter, eg "C:\Windows\System32\cmd.exe".
Should it not be set, we fall-back to using 'cmd.exe' from PATH, as
before.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agoMerge remote-tracking branch 'upstream-rw/v0.10'
Timothy J Fontaine [Tue, 17 Jun 2014 00:20:45 +0000 (19:20 -0500)]
Merge remote-tracking branch 'upstream-rw/v0.10'

10 years agonode: update changelog to have proper npm version
Timothy J Fontaine [Tue, 17 Jun 2014 00:16:13 +0000 (19:16 -0500)]
node: update changelog to have proper npm version

fixes #7793

10 years agobuild: run wix tool chain out of process
Timothy J Fontaine [Fri, 13 Jun 2014 21:39:53 +0000 (14:39 -0700)]
build: run wix tool chain out of process

Building MSIs for different arch's can sometimes confuse MSBuild and
Wix, isntead run the toolchain externally so we don't have to worry
about which arch cmd.exe is running as.

10 years agocontextify: throw timeout error properly
Fedor Indutny [Thu, 12 Jun 2014 22:40:28 +0000 (15:40 -0700)]
contextify: throw timeout error properly

fix #7509

10 years agowatchdog: terminate one specific isolate
Fedor Indutny [Thu, 12 Jun 2014 18:21:26 +0000 (11:21 -0700)]
watchdog: terminate one specific isolate

10 years agodeps: cherry-pick r21466 from v8 trunk
Ben Noordhuis [Fri, 23 May 2014 14:01:17 +0000 (14:01 +0000)]
deps: cherry-pick r21466 from v8 trunk

Check for cached transition to ExternalArray elements kind.
See [1] and [2] for details.

[1] https://code.google.com/p/v8/issues/detail?id=3337
[2] https://codereview.chromium.org/291193011

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodeps: cherry-pick r21297 from v8 trunk
Ben Noordhuis [Wed, 14 May 2014 09:25:57 +0000 (11:25 +0200)]
deps: cherry-pick r21297 from v8 trunk

Changes the return value of PropertyCallbackInfo<T>::This() from
Local<Value> back to Local<Object>.  See [1] and [2] for background.

[1] https://groups.google.com/forum/#!topic/v8-users/wP2UcQ4cBW4
[2] https://codereview.chromium.org/285643008/

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodeps: fix up v8 postmortem codegen
Ben Noordhuis [Mon, 12 May 2014 03:38:47 +0000 (05:38 +0200)]
deps: fix up v8 postmortem codegen

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodeps: upgrade v8 to 3.26.33
Ben Noordhuis [Mon, 12 May 2014 03:07:46 +0000 (05:07 +0200)]
deps: upgrade v8 to 3.26.33

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodoc: Fix typo in dns.resolveSrv docs
Euan [Thu, 5 Jun 2014 00:15:22 +0000 (20:15 -0400)]
doc: Fix typo in dns.resolveSrv docs

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agoconsole: console.dir() accepts options object
Xavi Magrinyà [Sun, 8 Jun 2014 10:02:54 +0000 (13:02 +0300)]
console: console.dir() accepts options object

This features comes from the need of adding extra options when displaying
the object using console.dir().

console.dir() accepts now a second parameter that is passed to util.inspect()
in order to provide extra options to the output. These options are: depth, color
and showHidden. More information about these options in util.inspect() documentation.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agoAdded support for options parameter in console.dir()
Xavi Magrinyà [Sun, 8 Jun 2014 09:14:14 +0000 (12:14 +0300)]
Added support for options parameter in console.dir()

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agolib: remove unused variables
Brian White [Wed, 11 Jun 2014 19:16:48 +0000 (15:16 -0400)]
lib: remove unused variables

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agotls_wrap: fix interleaving in InvokeQueued
Fedor Indutny [Sun, 8 Jun 2014 18:58:07 +0000 (11:58 -0700)]
tls_wrap: fix interleaving in InvokeQueued

WriteItem callback may add new item to the `pending_write_items`. Ensure
that this item won't be called in the same `InvokeQueued` call, as it
may result in way-to-early `finish` event on js-side.

fix #7733

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agotls_wrap: fix small obvious memory leak
Fedor Indutny [Sun, 8 Jun 2014 02:25:02 +0000 (19:25 -0700)]
tls_wrap: fix small obvious memory leak

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agoreadline: remove doubled case.
Roman Klauke [Wed, 11 Jun 2014 20:03:50 +0000 (22:03 +0200)]
readline: remove doubled case.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agotest: regression test for cluser.setupMaster()
Ryan Graham [Fri, 23 May 2014 20:15:15 +0000 (13:15 -0700)]
test: regression test for cluser.setupMaster()

Tests for the behaviour in v0.10.x which allows process.argv changes
to be honoured by cluster.setupMaster().

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agocluster: restore v0.10.x setupMaster() behaviour
Ryan Graham [Fri, 23 May 2014 19:41:40 +0000 (12:41 -0700)]
cluster: restore v0.10.x setupMaster() behaviour

In v0.10.x, process.argv and process.execArgv would only be
evaluated and copied into cluster.settings on the first call to
cluster.setupMaster() (either directly or via cluster.fork()),
allowing them to be modified as needed before initializing the
settings.

In 41b75ca the behaviour was changed so that these values are
initialized at the time of the first require('cluster').

Fixes #7670.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agoMerge remote-tracking branch 'upstream/v0.10'
Timothy J Fontaine [Wed, 11 Jun 2014 15:59:55 +0000 (11:59 -0400)]
Merge remote-tracking branch 'upstream/v0.10'

10 years agonode: signing the CLA is no longer a requirement
Timothy J Fontaine [Wed, 11 Jun 2014 15:51:53 +0000 (11:51 -0400)]
node: signing the CLA is no longer a requirement

10 years agoMerge remote-tracking branch 'upstream/v0.10'
Timothy J Fontaine [Tue, 10 Jun 2014 23:36:04 +0000 (19:36 -0400)]
Merge remote-tracking branch 'upstream/v0.10'

Conflicts:
AUTHORS
ChangeLog
deps/v8/src/api.cc
deps/v8/src/unicode-inl.h
deps/v8/src/unicode.h
lib/_stream_readable.js
lib/http.js
src/cares_wrap.cc
src/node.cc
src/node_crypto.cc
src/node_dtrace.cc
src/node_file.cc
src/node_stat_watcher.cc
src/node_version.h
src/process_wrap.cc
src/string_bytes.cc
src/string_bytes.h
src/udp_wrap.cc
src/util.h
test/simple/test-buffer.js
test/simple/test-stream2-compatibility.js

10 years agoNow working on 0.10.30
Timothy J Fontaine [Mon, 9 Jun 2014 17:52:27 +0000 (10:52 -0700)]
Now working on 0.10.30

10 years agoMerge branch 'v0.10.29-release' into v0.10
Timothy J Fontaine [Mon, 9 Jun 2014 17:51:53 +0000 (10:51 -0700)]
Merge branch 'v0.10.29-release' into v0.10

10 years ago2014.06.05, Version 0.10.29 (Stable) v0.10.29
Timothy J Fontaine [Mon, 9 Jun 2014 17:04:36 +0000 (10:04 -0700)]
2014.06.05, Version 0.10.29 (Stable)

* openssl: to 1.0.1h (CVE-2014-0224)

* npm: upgrade to 1.4.10

* utf8: Prevent Node from sending invalid UTF-8 (Felix Geisendörfer)
  - *NOTE* this introduces a breaking change, previously you could construct
invalid UTF-8 and invoke an error in a client that was expecting valid
UTF-8, now unmatched surrogate pairs are replaced with the unknown UTF-8
character. To restore the old functionality simply have NODE_INVALID_UTF8
environment variable set.

* child_process: do not set args before throwing (Greg Sabia Tucker)

* child_process: spawn() does not throw TypeError (Greg Sabia Tucker)

* constants: export O_NONBLOCK (Fedor Indutny)

* crypto: improve memory usage (Alexis Campailla)

* fs: close file if fstat() fails in readFile() (cjihrig)

* lib: name EventEmitter prototype methods (Ben Noordhuis)

* tls: fix performance issue (Alexis Campailla)

10 years agohttp: add 308 status_code, see RFC7238
Yazhong Liu [Sat, 7 Jun 2014 14:01:46 +0000 (22:01 +0800)]
http: add 308 status_code, see RFC7238

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agofs: remove duplicate check
Brian White [Sat, 7 Jun 2014 15:53:23 +0000 (11:53 -0400)]
fs: remove duplicate check

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agov8: shift heap space for aslr on 64bit
Timothy J Fontaine [Thu, 5 Jun 2014 22:55:48 +0000 (15:55 -0700)]
v8: shift heap space for aslr on 64bit

Previously we were only shifting the address space for ASLR on 32bit
processes, apply the same shift for 64bit so processes don't
get artificially limited native heap.

10 years agonpm: upgrade to v1.4.14
Timothy J Fontaine [Thu, 5 Jun 2014 22:18:15 +0000 (15:18 -0700)]
npm: upgrade to v1.4.14

10 years agosrc: replace usage of String::Utf8Value
Timothy J Fontaine [Thu, 10 Apr 2014 00:33:33 +0000 (17:33 -0700)]
src: replace usage of String::Utf8Value

v8::String::Utf8Value previously could allow invalid surrogates when
interpreting values.

10 years agostring_bytes: Guarantee valid utf-8 output
Felix Geisendörfer [Mon, 20 Jan 2014 08:47:19 +0000 (09:47 +0100)]
string_bytes: Guarantee valid utf-8 output

Previously v8's WriteUtf8 function would produce invalid utf-8 output
when encountering unmatched surrogate code units [1]. The new
REPLACE_INVALID_UTF8 option fixes that by replacing invalid code points
with the unicode replacement character.

[1]: JS Strings are defined as arrays of 16 bit unsigned integers. There
is no unicode enforcement, so one can easily end up with invalid unicode
code unit sequences inside a string.

10 years agodeps/v8: Apply REPLACE_INVALID_UTF8 patch
Felix Geisendörfer [Mon, 20 Jan 2014 08:43:43 +0000 (09:43 +0100)]
deps/v8: Apply REPLACE_INVALID_UTF8 patch

- https://codereview.chromium.org/121173009/
- https://code.google.com/p/v8/source/detail?r=18683

Note: The v8 test case did not cleanly apply, so it's missing from this
patch. I'm assuming this is not a problem if the v8 test suite is not
part of the node build / test system. If that's the case I'll fix it.
Otherwise the test case will be integrated once v8 is upgraded.

10 years agostring_decoder: Add more comments
Felix Geisendörfer [Tue, 13 May 2014 15:42:48 +0000 (17:42 +0200)]
string_decoder: Add more comments

10 years agostring_decoder: Fix failures from new test cases
Felix Geisendörfer [Tue, 13 May 2014 15:36:40 +0000 (17:36 +0200)]
string_decoder: Fix failures from new test cases

This patch simplifies the implementation of StringDecoder, fixes the
failures from the new test cases, and also no longer relies on v8's
WriteUtf8 function to encode individual surrogates.

10 years agostring_decoder: Improve test coverage
Felix Geisendörfer [Tue, 13 May 2014 15:30:25 +0000 (17:30 +0200)]
string_decoder: Improve test coverage

The test cases are still essentially the same, but now all possible ways
of writing a buffer into the decoder are tested, which has exposed a few
failing scenarios that had not been discovered so far!

10 years agostream: start old-mode read in a next tick
Fedor Indutny [Fri, 16 May 2014 09:10:34 +0000 (13:10 +0400)]
stream: start old-mode read in a next tick

Calling `.read()` in the same tick with `.on('data', ...)` may cause
users missing `error` events, because no `error` listeners were set yet.

fix #7618

10 years agohttp: don't default OPTIONS to chunked encoding
Nick Muerdter [Wed, 4 Jun 2014 03:49:38 +0000 (21:49 -0600)]
http: don't default OPTIONS to chunked encoding

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agotest: fix event-emitter-method-names
Fedor Indutny [Thu, 5 Jun 2014 14:46:55 +0000 (07:46 -0700)]
test: fix event-emitter-method-names

10 years agoMerge branch 'v0.10'
Fedor Indutny [Thu, 5 Jun 2014 14:28:39 +0000 (07:28 -0700)]
Merge branch 'v0.10'

Conflicts:
ChangeLog
lib/events.js
lib/tls.js
src/node_constants.cc
src/node_crypto.cc
src/node_crypto.h
src/node_version.h

10 years agodeps: update openssl to 1.0.1h
Fedor Indutny [Thu, 5 Jun 2014 14:09:35 +0000 (07:09 -0700)]
deps: update openssl to 1.0.1h

10 years agotest: remove duplicate tests
Michael Kebe [Thu, 15 May 2014 15:56:04 +0000 (17:56 +0200)]
test: remove duplicate tests

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agobench: fix buffers/buffer-base64-encode benchmark
Ben Noordhuis [Wed, 4 Jun 2014 13:25:09 +0000 (15:25 +0200)]
bench: fix buffers/buffer-base64-encode benchmark

The test is supposed to measure the performance of the base64 encoder
so move the Buffer#write() calls out of the benchmark section.

The overhead of the calls isn't terrible (about 1-3%) but having
unrelated activity in a micro-benchmark is never a good idea.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agodoc: fixed wording in child_process
Chris Barber [Fri, 30 May 2014 21:25:52 +0000 (14:25 -0700)]
doc: fixed wording in child_process

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agosrc: replace CONTAINER_OF with type-safe function
Ben Noordhuis [Tue, 27 May 2014 21:31:31 +0000 (23:31 +0200)]
src: replace CONTAINER_OF with type-safe function

Replace the CONTAINER_OF macro with a template function that is as
type-safe as a reinterpret_cast<> of an arbitrary pointer can be made.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agofs: close file if fstat() fails in readFile()
cjihrig [Wed, 28 May 2014 22:34:04 +0000 (18:34 -0400)]
fs: close file if fstat() fails in readFile()

Currently, if fstat() fails in readFile(), the callback
is invoked without closing the file. This commit closes
the file before calling back.

Closes #7697

10 years agofs: close file if fstat() fails in readFile()
cjihrig [Wed, 28 May 2014 22:34:04 +0000 (18:34 -0400)]
fs: close file if fstat() fails in readFile()

Currently, if fstat() fails in readFile(), the callback
is invoked without closing the file. This commit closes
the file before calling back.

Closes #7697

10 years agonet: Ensure consistent binding to IPV6 if address is absent
Raymond Feng [Tue, 27 May 2014 22:26:13 +0000 (15:26 -0700)]
net: Ensure consistent binding to IPV6 if address is absent

See https://github.com/joyent/node/issues/7675
net.server.listen() behaves inconsistently depending on whether the port
number is provided.

1. port === 0 && host == '' (i.e. false-y), node creates an AF_INET
socket but does not call bind().

2. port > 0 && host == '', node creates an AF_INET6 socket and calls
bind().

The fix makes 1 consistent with 2.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agodoc: Add a README for benchmark tests
Raymond Feng [Fri, 23 May 2014 03:57:31 +0000 (20:57 -0700)]
doc: Add a README for benchmark tests

The README.md documents how to run node core benchmark tests and
how to write new tests.

10 years agobenchmark: Add a test to measure Buffer.slice perf
Raymond Feng [Fri, 23 May 2014 03:37:47 +0000 (20:37 -0700)]
benchmark: Add a test to measure Buffer.slice perf

Buffer.slice can be expensive. One regression was reported by https://github.com/joyent/node/issues/7633. The method should be benchmarked.

10 years agosmalloc: rework double free bug fix
Ben Noordhuis [Fri, 23 May 2014 13:27:51 +0000 (15:27 +0200)]
smalloc: rework double free bug fix

Rework the fix from commit 6810132 in a way that removes ~60 lines of
code.

The bug was introduced in commit e87ceb2 (mea culpa) and is at its core
a pointer aliasing bug where sometimes two independent pointers existed
that pointed to the same chunk of heap memory.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
10 years agotls: fix performance issue
Alexis Campailla [Fri, 23 May 2014 18:55:34 +0000 (14:55 -0400)]
tls: fix performance issue

See https://github.com/orangemocha/node-connection-drop

I have pinpointed the performance degradation to
https://github.com/joyent/node/commit/ac2263b77f3f346458d06fc019de27e24c63cee0

This change brings performance back to the orginal levels.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agosrc: kill isolate on exit
Ben Noordhuis [Thu, 22 May 2014 23:08:27 +0000 (01:08 +0200)]
src: kill isolate on exit

Otherwise it's not possible to check from inside a destructor if V8 is
still alive with v8::V8::IsDead().  In V8 3.25, that function returns
true until the last isolate is destroyed.

This used to work in v0.10 and is a standard trick to dispose persistent
handles conditionally.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
10 years agosmalloc: prevent double free on dispose()
Trevor Norris [Fri, 23 May 2014 10:42:46 +0000 (03:42 -0700)]
smalloc: prevent double free on dispose()

dispose() free's the memory when executed and sets the external array
data to NULL and length to zero.

To prevent the same memory from being free'd twice when the object is
garbage collected we first check if the object's external array data
length == 0. Since alloc() passes NULL to
SetIndexedPropertiesToExternalArrayData() if length == 0 there's no
opportunity for memory leak.

10 years agosrc: NODE_UNIXTIME_V8 needs to use an Isolate
Rohini Harendra [Sat, 17 May 2014 05:36:56 +0000 (05:36 +0000)]
src: NODE_UNIXTIME_V8 needs to use an Isolate

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agolint: lib/_http_client.js
Timothy J Fontaine [Thu, 22 May 2014 19:55:03 +0000 (12:55 -0700)]
lint: lib/_http_client.js

10 years agotest: fix up pummel/test-net-pingpong
Ben Noordhuis [Thu, 22 May 2014 11:00:55 +0000 (13:00 +0200)]
test: fix up pummel/test-net-pingpong

Fix up a bad assumption in pummel/test-net-pingpong, namely that binding
to 'localhost' or '' means that incoming connections will have an IPv4
address.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agochild_process: don't throw on EMFILE/ENFILE
Ben Noordhuis [Wed, 21 May 2014 11:47:21 +0000 (13:47 +0200)]
child_process: don't throw on EMFILE/ENFILE

EMFILE and ENFILE mean 'out of file descriptors'.  It's a run-time error
and as such should emit an error on the child process object, not throw
an exception.

Fixes #7453.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agohttp: Optimize queued client aborts
Kevin Decker [Wed, 30 Apr 2014 13:20:25 +0000 (09:20 -0400)]
http: Optimize queued client aborts

Avoid sending unsent data and destroying otherwise legitimate sockets
for requests that are aborted while still in the agent queue. This
reduces stress on upstream systems who will likely respond to the
request but client app already knows that it will be dropped on the
floor and also helps avoid killing keep-alive connections.

10 years agobuild: disable v8 handle zapping
Ben Noordhuis [Sun, 18 May 2014 12:58:43 +0000 (14:58 +0200)]
build: disable v8 handle zapping

See also commit e7bfbaf.  Don't depend on deps/v8/build/features.gypi
to disable handle zapping, be explicit about it.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agodoc: document url `slashes` property
Yazhong Liu [Wed, 7 May 2014 10:59:23 +0000 (18:59 +0800)]
doc: document url `slashes` property

Slashes should be documented, because 3rd-party protocols -- those
postfixed with `://` -- would incorrectly `format` and `parse` if they
didn't set/get the `slashes` option.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agoquerystring: custom encode and decode
fengmk2 [Tue, 29 Apr 2014 01:40:40 +0000 (09:40 +0800)]
querystring: custom encode and decode

Not all querystring are utf-8 encoding, make querystring can be used
to encode / decode `non-utf8` encoding string if necessary.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agochild_process: add path to spawn ENOENT Error
Ryan Cole [Mon, 28 Apr 2014 01:25:02 +0000 (20:25 -0500)]
child_process: add path to spawn ENOENT Error

Add a file property to the ENOENT Error returned from ChildProcess's
spawn function.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agocontexify: fix infinite recursion in delete cb
Fedor Indutny [Fri, 16 May 2014 11:32:43 +0000 (15:32 +0400)]
contexify: fix infinite recursion in delete cb

Do not ever call `Delete()` on `proxy_global_`, it will invoke
`GlobalPropertyDeleteCallback` and cause crash because of the infinite
recursion.

fix #7529

10 years agodoc: clarify `end` vs `finish` in streams
Calvin Metcalf [Tue, 13 May 2014 15:52:38 +0000 (11:52 -0400)]
doc: clarify `end` vs `finish` in streams

Adds a section to the transform stream docs to clarify the
difference between the `end` event and the `finish` events.
Also clarifies the wording on the `end` event.

10 years agov8: backport no handle zapping for release builds
jochen@chromium.org [Mon, 19 May 2014 15:27:49 +0000 (15:27 +0000)]
v8: backport no handle zapping for release builds

BUG=318206
LOG=y
R=danno@chromium.org

Review URL: https://codereview.chromium.org/295673002

git-svn-id: https://v8.googlecode.com/svn/branches/3.26@21367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

10 years agostring_bytes: ucs2 support big endian
Andrew Low [Tue, 8 Apr 2014 14:39:33 +0000 (10:39 -0400)]
string_bytes: ucs2 support big endian

64bit constants are keyed for x64 platforms only, add PowerPC based
platform constants.

Node's "ucs2" encoding wants LE character data stored in the Buffer, so
we need to reorder on BE platforms.  See
http://nodejs.org/api/buffer.html regarding Node's "ucs2" encoding
specification

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agotls_wrap: do not store TLSCallbacks in SSL_CTX
Fedor Indutny [Tue, 20 May 2014 09:26:37 +0000 (13:26 +0400)]
tls_wrap: do not store TLSCallbacks in SSL_CTX

Storing it in SSL_CTX is incorrect as it may go away and get destructed
earlier, also it'll yield invalid results in SelectSNIContextCallback.

Use `SSL_get_app_data()` instead.

fix #7484

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
10 years agotest: rewrite spawnsync test
Timothy J Fontaine [Tue, 13 May 2014 21:49:59 +0000 (14:49 -0700)]
test: rewrite spawnsync test

The spawnsync test was written wrong, the timeout can never fire before
the sync process has returned, the delta is immaterial and times when
it was succeeding are not reliable cases.

Instead verify that the timeout doesn't fire while the sync process is
happening.

10 years agonet: don't throw on net.Server.close()
cjihrig [Fri, 16 May 2014 02:48:27 +0000 (22:48 -0400)]
net: don't throw on net.Server.close()

When close() is called on a non-listening server, a synchronous
error is thrown. This commit causes the error to be passed to
the asynchronous callback function instead.

Signed-off-by: Fedor Indutny <fedor@indutny.com>