Commit Graph
3264 Commits
Author SHA1 Message Date
Julien Gilli 90d1147b8b cluster: centralize removal from workers list.
Currently, cluster workers can be removed from the workers list in three
different places:
- In the exit event handler for the worker process.
- In the disconnect event handler of the worker process.
- In the disconnect event handler of the cluster master.

However, handles for a given worker are cleaned up only in one of these
places: in the cluster master's disconnect event handler.

Because these events happen asynchronously, it is possible that the
workers list is empty before we even clean up one handle. This makes
the assert that makes sure that no handle is left when the workers
list is empty fail.

This commit removes the worker from the cluster.workers list only when
the worker is dead _and_ disconnected, at which point we're sure that
its associated handles are cleaned up.

Fixes #8191 and #8192.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-02 22:14:04 +04:00
Brian White fcfe820481 crypto: unsigned value can't be negative
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-02 17:41:30 +04:00
Brian White 16b0a3393e crypto: avoid memory leak
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-02 17:41:21 +04:00
Jackson Tian 92419f8762 src: reading/owner/onread/onconnection for tcp
Initialize fields to avoid Hidden Class creation in runtime.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-02 16:20:56 +04:00
Isaac Burns 53fc14c569 crypto: wrap ECDH constants in HAVE_OPENSSL
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-01 19:30:13 +04:00
Shigeki Ohtsu 0dfedb7127 tls, crypto: add DHE support
In case of an invalid DH parameter file, it is sliently discarded. To
use auto DH parameter in a server and DHE key length check in a
client, we need to wait for the next release of OpenSSL-1.0.2.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-29 00:36:48 +04:00
Fedor Indutny 6e453fad87 crypto: introduce ECDH 2014-08-29 00:27:09 +04:00
Jackson Tian f7d6147e43 src: Add function name for .byteLength/.compare
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-27 14:13:31 +04:00
Fedor Indutny 6adf3ecebb crypto: allow padding in RSA methods
Reviewed-By: Trevor Norris <trevnorris@gmail.com>
2014-08-27 00:24:57 +04:00
Fedor Indutny 8a7d7f8b2b crypto: fix memory leak in Connection::New
Do not create `SSL` instance twice, `SSL_new` is called from `SSLBase`
constructor anyway.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-23 23:22:23 +04:00
Ben Noordhuis 437c2f4383 node: add missing Isolate::Scope at startup
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-08-19 10:28:06 -07:00
Yazhong Liu 7be96f5285 src: add missing Isolate arguments
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-08-19 10:23:20 -07:00
Cheng Zhao 44743eaf24 src: change kIsolateSlot to 3
The slot 0 and 1 had already been taken by "gin" and "blink" in Chrome,
and the size of isolate's slots is 4 by default, so using 3 should hopefully
make node work independently when embedded into other application.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-13 13:58:51 +04:00
Trevor Norris 807acf7f98 src: require EventEmitter via NativeModule
Fixes a recent change causing test-process-kill-pid.js to fail.

Fixes: 931cbc1 "lib: don't use emitter.listeners(type).length"
Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-08-12 21:50:21 -07:00
Jackson Tian 931cbc175f lib: don't use emitter.listeners(type).length
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-08-12 15:57:13 -07:00
Trevor Norris 0718426506 node: set names for prototype methods
Fix issue where output of a native prototype method would simply print
[Function]. It will now print [Function: name].

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-08-11 17:10:43 -07:00
seishun 42bda05af8 crypto: add RSA encryption
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-11 22:00:34 +04:00
Alexis Campailla 93f3b640d0 windows: fix memory leak in WinapiErrnoException
Fix https://github.com/joyent/node/issues/2341

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-11 18:19:55 +04:00
Saúl Ibarra Corretgé 28eee0adb7 src: handle UV_EAGAIN in TryWrite
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-07 15:05:04 +04:00
Trevor Norris e643fe4c4b dns: fix GetAddrInfo assert
The method GetAddrInfo() is used by more than just dns.lookup(), and in
those cases a third argument isn't passed. This caused the following
check to abort:

  assert(args[3]->IsInt32());

Fixes: 4306786 "net: don't prefer IPv4 addresses during resolution"

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-08-04 18:19:45 -07:00
cjihrig 430678640c net: don't prefer IPv4 addresses during resolution
Currently the address resolution family defaults to IPv4. Instead remove
the preference and instead resolve to a family suitable for the host.

Expose the getaddrinfo flags and allow them to be passed.

Add documentation about new flags.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-08-04 16:57:18 -07:00
Jackson Tian 962e651476 process: improve process binding
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-02 20:14:46 +04:00
Fedor Indutny f310c0f16b Merge remote-tracking branch 'origin/v0.10' into master
Conflicts:
	doc/api/buffer.markdown
	lib/_stream_readable.js
	lib/assert.js
	lib/buffer.js
	lib/child_process.js
	lib/http.js
	lib/string_decoder.js
	lib/zlib.js
	node.gyp
	test/simple/test-buffer.js
	test/simple/test-https-foafssl.js
	test/simple/test-stream2-compatibility.js
	test/simple/test-tls-server-verify.js
2014-07-29 12:51:27 +04:00
Sam Roberts 832ec1cd50 process: throw TypeError if kill pid not a number
Currently, invalid usage such as:

    process.kill('SIGTERM')
    process.kill(null)
    process.kill(undefined);

all coerce the pid to 0, and signal the current process.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-28 18:30:26 +04:00
Shigeki Ohtsu 2bb4867312 tls: fix to send TLS Alert before socket destroyed
When TLS Alert is occured in handshake, ClearOut only write it into
wbio and does not flush to socket. TLS Alert should be written to
socket with EncOut before socket is destroyed within its error
callback.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-23 23:43:58 +04:00
Dean McNamee ba09409479 src: export additional startup functions
This allows embedders enough control to initialize node, run the
event loop, and cleanly exit (including calling handlers).

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-23 22:47:05 +04:00
Dean McNamee da30c0084a src: pass the v8::Context to CreateEnvironment
Pass in the v8::Context, instead of creating it
within CreateEnvironment.  This allows callers
to use a pre-existing context.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-13 23:07:46 +04:00
cjihrig c4e5fde362 child_process: copy spawnSync() cwd option to proper buffer
The spawnSync() cwd option was being copied to the incorrect
location. This commit copies to the correct location.

Closes #7824

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-12 12:46:16 +03:00
Fedor Indutny 832d4db5f2 contextify: remove useless header file
fix #7910
2014-07-08 21:43:48 +03:00
Andrius Bentkus a382c9a97c 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>
2014-07-02 20:59:27 -07:00
Fedor Indutny 9cbfd6ef51 constants: add O_NONBLOCK constant
It appears that it is defined unconditionally on all supported unixes.

fix #7867 #7855

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-07-02 12:49:59 -07:00
Fedor Indutny 7cb38309fe Revert "constants: export O_NONBLOCK"
This reverts commit 00890e43fb.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-07-02 12:49:59 -07:00
Fedor Indutny 47ee9a48a8 Revert "src: fix _XOPEN_SOURCE redefinition warning"
This reverts commit 885142a5ed.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-07-02 12:49:59 -07:00
Yazhong Liu 6b09f9cd41 node: fix #7841 by overlooking the spare sourceline
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-06-27 16:09:52 +04:00
Oguz Bastemur c94afdccf3 util.h: interface compatibility
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-06-27 14:22:01 +04:00
Saúl Ibarra Corretgé 35b9580cd8 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>
2014-06-27 04:02:19 +04:00
Fedor Indutny c047127410 contextify: throw timeout error properly
fix #7509
2014-06-12 18:30:41 -07:00
Fedor Indutny d5198768de watchdog: terminate one specific isolate 2014-06-12 18:30:26 -07:00
Fedor Indutny eef0715db5 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>
2014-06-11 16:10:11 -07:00
Fedor Indutny ca55037380 tls_wrap: fix small obvious memory leak
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-06-11 16:05:38 -07:00
Timothy J Fontaine 1a09da6ec2 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
2014-06-10 19:36:04 -04:00
Timothy J Fontaine 1cb6f1a46a Now working on 0.10.30 2014-06-09 10:52:27 -07:00
Timothy J Fontaine ce82d6b847 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)
2014-06-09 10:04:36 -07:00
Timothy J Fontaine 535c7777ac src: replace usage of String::Utf8Value
v8::String::Utf8Value previously could allow invalid surrogates when
interpreting values.
2014-06-06 15:07:29 -07:00
Felix Geisendörfer 0da4c67165 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.
2014-06-06 15:07:29 -07:00
Fedor Indutny 9920ae67b5 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
2014-06-05 07:28:39 -07:00
Ben Noordhuis 820aaf5b3d 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>
2014-05-30 11:45:37 +01:00
Ben Noordhuis 4394c8a9b3 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>
2014-05-23 15:21:35 -07:00
Ben Noordhuis 6f952845a6 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>
2014-05-23 23:10:23 +04:00
Trevor Norris 681013223f 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.
2014-05-23 03:42:46 -07:00