Compare commits

..

3633 Commits

Author SHA1 Message Date
Paulo McNally
c681f8c994 doc: add link to workflow in api docs menu
Added link to workflow guidelines page in API docs' navigation menu.

Fixes https://github.com/joyent/node-website/issues/102.
2015-04-10 11:29:59 -07:00
James M Snell
02a549ed2b tls: make the --enable-legacy-cipher-list help less verbose
Per feedback on the commit, make the PrintHelp for
--enable-legacy-cipher-list less verbose.

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/14413
2015-04-08 12:00:19 -07:00
James M Snell
67d9a56251 tls: disable RC4, add --cipher-list command line switch
Disable RC4 in the default cipher list

Add the `--cipher-list` command line switch and `NODE_CIPHER_LIST`
environment variable to completely override the default cipher list.

Add the `--enable-legacy-cipher-list` and `NODE_LEGACY_CIPHER_LIST`
environment variable to selectively enable the default cipher list from
previous node.js releases.

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/joyent/node/pull/14413
2015-04-08 12:00:18 -07:00
Julien Gilli
7edfd5f6d1 Now working on 0.10.39 2015-03-23 14:44:18 -07:00
Julien Gilli
0b4e67f861 Merge branch 'v0.10.38-release' into v0.10 2015-03-23 14:43:55 -07:00
Julien Gilli
0b5731a63c 2015.03.23, Version 0.10.38 (Maintenance)
* openssl: upgrade to 1.0.1m (Addressing multiple CVEs)
2015-03-23 12:23:33 -07:00
Shigeki Ohtsu
4b69c72b8b openssl: fix keypress requirement in apps on win32
reapply b910613792dac946b295855963869933a9089044

PR: #9451
PR-URL: https://github.com/joyent/node/pull/9451
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-23 11:34:12 -07:00
Shigeki Ohtsu
1fc3fdf892 deps: remove unused backup file in openssl asm
deps/openssl/asm/x64-win32-masm/x86_64cpuid.asm.orig was accidentally
committed before.

PR: #9451
PR-URL: https://github.com/joyent/node/pull/9451
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-23 11:33:48 -07:00
Shigeki Ohtsu
15cdeb7d99 deps: remove vpaesni-x86_64.asm in x64-win32-masm
It is no longer used.

PR: #9451
PR-URL: https://github.com/joyent/node/pull/9451
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-23 11:33:30 -07:00
Fedor Indutny
63377ec3c3 deps: fix openssl assembly error on ia32 win32
`x86masm.pl` was mistakenly using .486 instruction set, why `cpuid` (and
perhaps others) are requiring .686 .

PR: #9451
PR-URL: https://github.com/joyent/node/pull/9451
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-23 11:33:13 -07:00
Shigeki Ohtsu
2b21c45f75 deps: separate sha256/sha512-x86_64.pl for openssl
sha256-x86_64.pl does not exist in the origin openssl distribution. It
was copied from sha512-x86_64.pl and both sha256/sha512 scripts were
modified so as to generates only one asm file specified as its key
hash length.

PR: #9451
PR-URL: https://github.com/joyent/node/pull/9451
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-23 11:32:50 -07:00
Shigeki Ohtsu
10717f659b deps: replace all headers in openssl
change all openssl/include/openssl/*.h to include resolved symbolic
links and openssl/crypto/opensslconf.h to refer config/opensslconf.h

PR: #9451
PR-URL: https://github.com/joyent/node/pull/9451
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-23 11:32:34 -07:00
James M Snell
c6e8a2c920 deps: upgrade to openssl-1.0.1m
Extract the tarball into deps/openssl/openssl

PR: #9451
PR-URL: https://github.com/joyent/node/pull/9451
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-23 11:31:29 -07:00
Julien Gilli
4332c77bf7 Now working on 0.10.38 2015-03-11 21:13:15 -07:00
Julien Gilli
50c23fb381 Merge branch 'v0.10.37-release' into v0.10 2015-03-11 21:12:00 -07:00
Julien Gilli
7d6b5b1d5b 2015.03.11, Version 0.10.37 (Maintenance)
* uv: update to 0.10.36 (CVE-2015-0278)

* domains: fix stack clearing after error handled (Jonas Dohse)

* buffer: reword Buffer.concat error message (Chris Dickinson)

* console: allow Object.prototype fields as labels (Julien Gilli)

* V8: log version in profiler log file (Ben Noordhuis)

* http: fix performance regression for GET requests (Florin-Cristian Gavrila)
2015-03-11 16:30:44 -07:00
Julien Gilli
219c80d099 build: allow custom PackageMaker path
Make PACKAGEMAKER customizable because PackageMaker is not necessarily
installed in /Developer on OSX anymore.

PR: #9377
PR-URL: https://github.com/joyent/node/pull/9377
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
2015-03-11 16:25:36 -07:00
Jonas Dohse
f2a45caf2e domains: fix stack clearing after error handled
caeb67735b introduced a regression where
the domains stack would not be cleared after an error had been handled
by the top-level domain.

This change clears the domains stack regardless of the position of the
active domain in the stack.

PR: #9364
PR-URL: https://github.com/joyent/node/pull/9364
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-10 23:22:16 -07:00
Tyler Anton
51fe319faf docs: add return value for sync fs functions
Clarify that synchronous functions in fs with no return value return
undefined.

Specify that fs.openSync() returns an integer and fs.existsSync()
returns true or false.

Fixes #9313

PR: #9359
PR-URL: https://github.com/joyent/node/pull/9359
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-10 16:33:57 -07:00
Julien Gilli
a5be84fe9b url: revert reslove urls with . and ..
This reverts commit ad0684807c.

Initially, this bug fix targeted master, and I pushed to have it
included in v0.10. In retrospect, I'm not sure it should have made into
v0.10 as it seems it could break a lot of existing working code.

In my opinion, this change is still a bug fix, and it is not backward
incompatible per se. However, I'm not sure that taking the risk to break
a lot of users with a new 0.10.x release that would include this fix is
reasonable, especially now that 0.10.x releases are entering
maintenance mode.

PR-URL: https://github.com/joyent/node/pull/9257
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2015-03-06 12:44:06 -08:00
Saúl Ibarra Corretgé
dcff5d565c deps: update libuv to 0.10.36
PR: #9274
PR-URL: https://github.com/joyent/node/pull/9274
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-06 11:37:40 -08:00
Florin-Cristian Gavrila
8bcd0a4c4a http: fix performance regression for GET requests
A significant performance regressions has been introduced in 1fddc1f for
GET requests which send data through response.end(). The number of
requests per second dropped to somewhere around 6% of their previous
level.

The fix consists of removing a part of the lines added by 1fddc1f,
lines which were supposed to affect only HEAD requests, but interfered
with GET requests instead.

The lines removed would not have affected the behaviour in the case of
a HEAD request as this._hasBody would always be false. Therefore, they
were not required to fix the issue reported in #8361.

Fixes #8940.

PR: #9026
PR-URL: https://github.com/joyent/node/pull/9026
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-03-05 11:16:52 -08:00
Chris Dickinson
d01a900078 buffer: reword Buffer.concat error message
this brings the error messaging in line with
other node TypeError messages.

fixes joyent/node#7766.

PR: #8723
PR-URL: https://github.com/joyent/node/pull/8723
Reviewed-By: James M Snell <jasnell@users.noreply.github.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2015-03-04 17:44:53 -08:00
Julien Gilli
c8239c08d7 console: allow Object.prototype fields as labels
This is a backport of 6c3647c38d from
v0.12 to v0.10.

Console.prototype.timeEnd() returns NaN if the timer label
corresponds to a property on Object.prototype. In v0.12, this was fixed
by using Object.create(null) to construct the _times object

However, the version of V8 in the v0.10 branch makes this fix not work
as expected. In v0.10, this commit changes the _times object into a
array of objects of the form:

{ label: someLabel, time: staringWallClockTime }

someLabel can thus be any string, including any string that represents
any Object.prototype field.

Fixes #9116.

PR: #9215
PR-URL: https://github.com/joyent/node/pull/9215
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2015-02-17 18:08:11 -08:00
Amir Saboury
ad0684807c url: reslove urls with . and ..
'.' and '..' are directory specs and resolving urls with or without the
hostname with '.' and '..' should add a trailing slash to the end of the
url.

Fixes: https://github.com/joyent/node/issues/8992
PR-URL: https://github.com/joyent/node/pull/9010
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2015-02-09 14:49:10 -07:00
Ben Noordhuis
431eb172f9 deps: log V8 version in profiler log file
Patch from issue 800293002 authored by ben@strongloop.com

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

PR-URL: https://github.com/joyent/node/pull/9043
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
2015-02-04 12:46:17 -07:00
Timothy J Fontaine
ff32b81516 Now working on 0.10.37 2015-01-26 12:28:48 -08:00
Timothy J Fontaine
6b264dd1f9 Merge branch 'v0.10.36-release' into v0.10 2015-01-26 12:28:08 -08:00
Timothy J Fontaine
09b482886b 2015.01.26, Version 0.10.36 (Stable)
* openssl: update to 1.0.1l

* v8: Fix debugger and strict mode regression (Julien Gilli)

* v8: don't busy loop in cpu profiler thread (Ben Noordhuis)
2015-01-26 10:28:23 -08:00
Timothy J Fontaine
6168fe6720 build: add win32 convenience build rule
PR-URL: https://github.com/joyent/node/pull/9085
PR: #9085

Reviewed-by: Julien Gilli <julien.gilli@joyent.com>
2015-01-23 15:17:05 -08:00
Fedor Indutny
9e387fb611 test: fix crypto-stream after openssl update
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-01-21 11:39:55 -08:00
Fedor Indutny
f5e9b6e84a build: remove vanished masm file from openssl build
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-01-21 11:39:54 -08:00
James M Snell
deef605085 deps: update openssl to 1.0.1l
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-01-21 11:39:54 -08:00
Fedor Indutny
b28c76e9d2 deps: update openssl to 1.0.1k
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2015-01-21 11:39:54 -08:00
Andrei Sedoi
e45c52c573 doc: use correct signature for assert()
The message argument is optional for both assert() and
assert.ok(). This commit makes message optional for assert().

PR-URL: https://github.com/joyent/node/pull/9003
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-01-20 10:39:10 -05:00
Robert Kowalski
0c50195071 docs: delete unused/duplicate css files
- `sh.css` already exists in `api_assets`
 - `sh_vim-dark.css` is unused, but used in the repo `node-website`
        now

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Signed-off-by: Julien Gilli <julien.gilli@joyent.com>
2015-01-14 15:26:48 -08:00
cjihrig
0a430b9aec test: backport use executable in spawn() test
Backport 10703774f0 from the v0.12 branch.

Currently, the test-child-process-spawn-typeerror.js is
calling execFile() on a JavaScript source file, which is
causing failures on Windows. This commit switches to calling
spawn() on an actual executable.

Fixes #8930.

Signed-off-by: Julien Gilli <julien.gilli@joyent.com>
2015-01-13 14:54:44 -08:00
Julien Gilli
31051e5c7b deps: revert backport b593aa8 from v8 upstream
This reverts commit 45f1330425.

45f1330425 was basically breaking
node-inspector. V8 landed a patch upstream that would probably fix these
issues (see https://codereview.chromium.org/813873007), but without the
ability to properly test it in the wild, it's safer to just revert the
breaking change.

Fixes #8948.

Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2015-01-13 11:25:09 -08:00
Ben Noordhuis
6ebd85e105 v8: don't busy loop in cpu profiler thread
Reduce the overhead of the CPU profiler by replacing sched_yield() with
nanosleep() in V8's tick event processor thread.  The former only yields
the CPU when there is another process scheduled on the same CPU.

Before this commit, the thread would effectively busy loop and consume
100% CPU time.  By forcing a one nanosecond sleep period rounded up to
the task scheduler's granularity (about 50 us on Linux), CPU usage for
the processor thread now hovers around 10-20% for a busy application.

PR-URL: https://github.com/joyent/node/pull/8789
Ref: https://github.com/strongloop/strong-agent/issues/3
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2015-01-12 16:49:07 -08:00
Timothy J Fontaine
fe2019699a Now working on 0.10.36 2014-12-23 17:31:00 -08:00
Timothy J Fontaine
cd6dff9728 Merge branch 'v0.10.35-release' into v0.10 2014-12-23 17:30:32 -08:00
Timothy J Fontaine
a363f61ca8 2014.12.22, Version 0.10.35 (Stable)
* tls: re-add 1024-bit SSL certs removed by f9456a2 (Chris Dickinson)

* timers: don't close interval timers when unrefd (Julien Gilli)

* timers: don't mutate unref list while iterating it (Julien Gilli)
2014-12-22 13:22:32 -08:00
James M Snell
102a861ec2 doc: clarify buffer api documentation
Better wording for start and end parameters, also document .length
should be considered readonly.

RE: #8857, #8859, #8913
PR: #8910
PR-URL: https://github.com/joyent/node/pull/8910

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
2014-12-22 12:24:28 -08:00
James M Snell
48536394c9 doc: clarify add/removeListener semantics
Clarify that adding or removing a listener is not idempotent.

RE: #8853
PR: #8911
PR-URL: https://github.com/joyent/node/pull/8911
Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
2014-12-22 12:12:48 -08:00
Julien Gilli
fd2cb7c611 timers: don't mutate unref list while iterating it
Commit 934bfe23a1 had introduced a
regression where node would crash trying to access a null unref timer if
a given unref timer's callback would remove other unref timers set to
fire in the future.

More generally, it makes the unrefTimeout function more solid by not
mutating the unrefList while traversing it.

Fixes #8897.

Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2014-12-22 11:45:31 -08:00
Chris Dickinson
1425ccd1b2 src: re-add 1024-bit SSL certs removed by f9456a2
this fixes a problem where connecting to AWS services
would report an untrusted cert error.

Fixes: https://github.com/joyent/node/issues/8894
PR-URL: https://github.com/joyent/node/pull/8904
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
2014-12-19 17:11:40 -08:00
Julien Gilli
78db74dd88 timers: don't close interval timers when unrefd
This change fixes a regression introduced by commit
0d051238be, which contained a typo that
would cause every unrefd interval to fire only once.

Fixes #8900.

Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-12-19 15:41:55 -08:00
Timothy J Fontaine
1b81ea8276 Now working on 0.10.35 2014-12-17 14:39:51 -08:00
Timothy J Fontaine
a6757fb9d0 Merge branch 'v0.10.34-release' into v0.10 2014-12-17 14:39:24 -08:00
Timothy J Fontaine
52795f8fcc 2014.12.17, Version 0.10.34 (Stable)
* uv: update to v0.10.30

* zlib: upgrade to v1.2.8

* child_process: check execFile args is an array (Sam Roberts)

* child_process: check fork args is an array (Sam Roberts)

* crypto: update root certificates (Ben Noordhuis)

* domains: fix issues with abort on uncaught (Julien Gilli)

* timers: Avoid linear scan in _unrefActive. (Julien Gilli)

* timers: fix unref() memory leak (Trevor Norris)

* v8: add api for aborting on uncaught exception (Julien Gilli)

* debugger: fix when using "use strict" (Julien Gilli)
2014-12-17 13:21:23 -08:00
Trevor Norris
afb488db86 Revert "src: reduce cpu profiler overhead"
This reverts commit 1eb1e0a9af.
2014-12-17 12:45:23 -08:00
Ben Noordhuis
1eb1e0a9af src: reduce cpu profiler overhead
Reduce the overhead of the CPU profiler by suppressing SIGPROF signals
when sleeping / polling for events. Avoids unnecessary wakeups when the
CPU profiler is active. Depends on https://github.com/libuv/libuv#15.

Ref: https://github.com/strongloop/strong-agent/issues/3
PR-URL: https://github.com/joyent/node/pull/8791
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-12-17 12:37:30 -08:00
cjihrig
f75a8ad723 test: remove redundant code in test
A block of asserts were duplicated in
test/simple/test-child-process-spawn-typeerror.js. This commit
removes the duplicated asserts.

Fixes: https://github.com/joyent/node/pull/8454
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2014-12-17 15:08:22 -05:00
Julien Gilli
542234ad98 doc: improve dns module's documentation
Make the difference between dns.lookup and other functions even clearer.

PR: #8747
Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
2014-12-17 11:54:31 -08:00
Julien Gilli
45f1330425 deps: backport b593aa8 from v8 upstream
Original commit message:

Enable "strict mode"; for debugger scripts

BUG=v8:3708

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

Cr-Commit-Position: refs/heads/master@{#25420}
2014-12-17 11:47:26 -08:00
Julien Gilli
0ff51c6e06 deps: backport 2ad2237 from v8 upstream
Original commit message:

Fix Unhandled ReferenceError in debug-debugger.js

This fixes following exception in Sky on attempt to set a breakpoint
"Unhandled: Uncaught ReferenceError: break_point is not defined"
I think this happens in Sky but not in Chrome because Sky scripts are executed in strict mode.

BUG=None
LOG=N
R=yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25415}
2014-12-17 11:47:26 -08:00
Shigeki Ohtsu
bddea12026 doc: Update LICENSE for zlib 1.2.8 2014-12-16 15:35:09 -08:00
Shigeki Ohtsu
710845cfd3 deps: fix zlib.gyp for zlib upgrade to 1.2.8
This adds new sources for gzip files and defines a new flag for mac and freebsd.
They are taken from third_party/zlib/zlib.gyp in Chromium repository.
2014-12-16 15:35:09 -08:00
Shigeki Ohtsu
33f74bbd90 deps: upgrade zlib to 1.2.8 2014-12-16 15:35:09 -08:00
Julien Gilli
934bfe23a1 timers: Avoid linear scan in _unrefActive.
Before this change, _unrefActive would keep the unrefList sorted when
adding a new timer.

Because _unrefActive is called extremely frequently, this linear scan
(O(n) at worse) would make _unrefActive show high in the list of
contributors when profiling CPU usage.

This commit changes _unrefActive so that it doesn't try to keep the
unrefList sorted. The insertion thus happens in constant time.

However, when a timer expires, unrefTimeout has to go through the whole
unrefList because it's not ordered anymore.

It is usually not large enough to have a significant impact on
performance because:
- Most of the time, the timers will be removed before unrefTimeout is
  called because their users (sockets mainly) cancel them when an I/O
  operation takes place.
- If they're not, it means that some I/O took a long time to happen, and
  the initiator of subsequents I/O operations that would add more timers
  has to wait for them to complete.

With this change, _unrefActive does not show as a significant
contributor in CPU profiling reports anymore.

Fixes #8160.
PR-URL: #8751

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
2014-12-16 11:44:23 -08:00
Trevor Norris
813114dab0 src: remove icu_config
ICU support in v0.12 generates a new icu_config.gypi. This was
accidentally committed after switching branches. The file has been removed
and added to .gitignore.

Fixes: 0d051238 "timers: fix unref() memory leak"
2014-12-15 15:36:00 -08:00
Steven R. Loomis
69b122a642 build: configure return exit status from gyp
Previously, 'configure' would not return an exit status
if gyp blows up. This can be tested via:

    date >> node.gyp ; ./configure && echo A-OK

You will get "A-OK" even though gyp had failed.

Signed-off-by: Julien Gilli <julien.gilli@joyent.com>
2014-12-15 13:55:11 -08:00
Julien Gilli
0603c8345b docs: clarify url.format documentation
The original documentation was slightly confusing. It seemed that the
list of items described the properties of the urlObj object, while it
was actually describing the formatting process. This change makes this
clearer.

Fixes #8796.

Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
2014-12-15 12:29:36 -08:00
silverwind
d230fa9eb7 doc: fix typo secureOptions in tls
Documentation mentioned 'securityOptions', where it should have read
'secureOptions'.

Fixes #8608.

Signed-off-by: Julien Gilli <julien.gilli@joyent.com>
2014-12-11 23:27:49 -08:00
Saúl Ibarra Corretgé
1c031c84d2 deps: update libuv to 0.10.30
PR-URL: https://github.com/joyent/node/pull/8849
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-12-09 12:41:46 -08:00
pkcs
8120015f40 doc: clearer log messages in net code samples
Code examples in documentation for net.createServer and
net.createConnection contained confusing log messages. This change makes
them clearer.

Signed-off-by: Julien Gilli <julien.gilli@joyent.com>
2014-12-08 15:23:22 -08:00
Alejandro Oviedo
f5cb330ab1 docs: fix streams example for write() after end()
Currently there's an example using http.ServerResponse stream, which
has a known bug and will not throw an error while writing after end().
Changed to a writable stream from fs which behaves as expected.

fix #8814

Signed-off-by: Julien Gilli <julien.gilli@joyent.com>
2014-12-06 19:27:05 -08:00
Brendan Ashworth
5e503f45d2 doc: fix grammar in tls and timers
Replace 'a' with 'an' where appropriate.
2014-12-05 14:12:48 -08:00
Fedor Indutny
8c868989be zlib: do not Unref() if wasn't Ref()ed
In very unlikely case, where `deflateInit2()` may return error (right
now happening only on exhausting all memory), the `ZCtx::Error()` will
be called and will try to `Unref()` the handle. But the problem is that
this handle was never `Ref()`ed, so it will trigger an assertion error
and crash the program.

Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: https://github.com/joyent/node/pull/8687
2014-12-04 18:10:13 +03:00
Ben Noordhuis
f9456a2d36 crypto: update root certificates
Update tools/certdata.txt to [0] (last updated on 2014-11-14) and
rebuild src/node_root_certs.h.

Refs joyent/node#8679 and joyent/node#8709.

[0] https://hg.mozilla.org/mozilla-central/raw-file/64206634959a/security/nss/lib/ckfw/builtins/certdata.txt
2014-12-04 16:57:48 +03:00
Ben Noordhuis
479b0b4e54 tools: customize mk-ca-bundle.pl
Remove unneeded functionality and tweak the generated output so we
can #include it in C++ source code.

This is a back-port of commit e159073 from the master branch.
2014-12-04 16:57:48 +03:00
Ben Noordhuis
3c9c920f57 tools: bundle mk-ca-bundle.pl from upstream curl
This is a back-port of commit 5ab863d from the master branch.
2014-12-04 16:57:48 +03:00
Trevor Norris
0d051238be timers: fix unref() memory leak
The destructor isn't being called for timers that have been unref'd.

Fixes: https://github.com/joyent/node/issues/8364
Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-11-26 12:27:57 -08:00
Sam Roberts
3a08b7c3e0 doc: cover stdio option in child_process
- Add hyperlinks from spawn options to subsections detailing what
those options do.
- Clarify some verbiage around ChildProcess.prototype.std{in,out,err}.
- Remove second-person pronoun.

PR-URL: https://github.com/joyent/node/pull/8639
Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
2014-11-18 19:28:46 -08:00
Trevor Norris
a1b2875afd lint: fix lint issues
Forgot to fix these before landing the patch.

Fixes: e17c5a72
2014-11-18 16:42:10 -08:00
Julien Gilli
caeb67735b domains: fix issues with abort on uncaught
Do not abort the process if an error is thrown from within a domain, an
error handler is setup for the domain and --abort-on-uncaught-exception
was passed on the command line.

However, if an error is thrown from within the top-level domain's error
handler and --abort-on-uncaught-exception was passed on the command
line, make the process abort.

Fixes: https://github.com/joyent/node/issues/8631
Fixes: https://github.com/joyent/node/issues/8630
PR-URL: https://github.com/joyent/node/pull/8666
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-11-18 16:39:39 -08:00
Trevor Norris
fbff7054a4 v8: add api for aborting on uncaught exception
Add v8::Isolate::SetAbortOnUncaughtException() so the user can be
notified when an uncaught exception has bubbled.

PR-URL: https://github.com/joyent/node/pull/8666
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-11-18 16:37:54 -08:00
Sam Roberts
8032a21025 test: test all spawn parameter positions
PR-URL: https://github.com/joyent/node/pull/8454
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-11-18 16:20:31 -08:00
Sam Roberts
70dafa7b62 child_process: check fork args is an array
Optional fork args should be type-checked with same behaviour as the
equivalent argument to spawn.

PR-URL: https://github.com/joyent/node/pull/8454
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-11-18 16:20:21 -08:00
Sam Roberts
e17c5a72b2 child_process: check execFile args is an array
execFile and spawn have same API signature with respect to optional arg
array and optional options object, they should have same behaviour with
respect to argument validation.

PR-URL: https://github.com/joyent/node/pull/8454
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-11-18 16:20:06 -08:00
Sam Roberts
2ff29cc7e3 test: use assert.throw to test exceptions
The test wasn't checking directly that an assertion was thrown. Instead,
it was checking that spawn did not sucessfully spawn a non-existent
command.

However, the command chosen, dir, exists in GNU coreutils, so it exists
on Linux (though not on BSD derived OS X). The test as written passed on
Linux, even with the TypeError it is supposed to be checking for deleted
from spawn(). It would also pass on Windows if a ls.exe existed.

The approach is unnecessarily obscure, assert.throw() is for asserting
code throws, using it is more clear and works regardless of what
commands do or do not exist.

PR-URL: https://github.com/joyent/node/pull/8454
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-11-18 16:19:52 -08:00
Sam Roberts
13a992b1c2 doc: document the fds behind stdin/out/err
Its common knowledge on unix, but node documentation depends on knowing
this, as it exposes both streams named after stdio, and the fd numbers,
so make this explicit.

Fixes: https://github.com/joyent/node/pull/8624
PR-URL: https://github.com/joyent/node/pull/8454
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-11-18 16:19:21 -08:00
Julien Gilli
5ff59453a4 doc: clarify dns.lookup vs dns.resolve
Clarify and emphasize the differences between dns.lookup and the rest of
the functions in the dns module.

PR-URL: https://github.com/joyent/node/pull/8726
Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
2014-11-14 12:33:34 -08:00
Eric Mill
88bd95cfef doc: update openssl commands to use best practices
This updates key size to 2048 and default hash function to sha256.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/8690
2014-11-11 20:39:57 +03:00
Fedor Indutny
d435f4b3eb Merge remote-tracking branch 'joyent/v0.10' into v0.10 2014-11-04 00:11:23 -05:00
Emmanuel Odeke
523929c927 repl: Private Buffer object in lib/* files
Fixes usage of global object 'Buffer' in lib/* files by ensuring that
each file does an explicit require('buffer').Buffer.  Previously, when
running a repl, due to usage of global 'Buffer', any redefinition of
Buffer would cause a crash eg var Buffer = {}.

Fixes: https://github.com/joyent/node/issues/8588
PR-URL: https://github.com/joyent/node/pull/8603
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-10-25 00:36:04 -07:00
Timothy J Fontaine
ea69dd7584 Now working on 0.10.34 2014-10-23 12:13:05 -07:00
Timothy J Fontaine
e59eca58ad Merge branch 'v0.10.33-release' into v0.10 2014-10-23 12:12:52 -07:00
Julien Gilli
8d045a30e9 tests: add TLS tests matrix
Add a test that goes through the whole matrix of:
- command line options (--enable-ssl*)
- secureOptions
- secureProtocols

and makes sure that compatible test setups actually work as expected.

The test works by spawning two processes for each test case: one client
and one server. The test passes if a SSL/TLS connection from the client
to the server is successful and the test case was supposed to pass, or
if the connection couldn't be established and the test case was supposed
to fail.

The test is currently located in the directory 'test/external' because
it has external dependencies.
2014-10-23 10:45:12 -07:00
Timothy J Fontaine
69080f5474 tls: enforce secureOptions on incoming clients
Reuse the secureProtocol and secureOptions of the server when creating
the secure context for incoming clients.
2014-10-23 10:45:04 -07:00
Timothy J Fontaine
b9283cf9d1 tls: honorCipherOrder should not degrade defaults
Specifying honorCipherOrder should not change the SSLv2/SSLv3 defaults
for a TLS server.

Use secureOptions logic in both lib/tls.js and lib/crypto.js
2014-10-23 10:44:56 -07:00
Timothy J Fontaine
fe2e8a4a24 2014.10.20, Version 0.10.33 (Stable)
* openssl: Update to 1.0.1j (Addressing multiple CVEs)

* uv: Update to v0.10.29

* child_process: properly support optional args (cjihrig)

* crypto: Disable autonegotiation for SSLv2/3 by default (Fedor Indutny,
Timothy J Fontaine, Alexis Campailla)

This is a behavior change, by default we will not allow the negotiation to
SSLv2 or SSLv3. If you want this behavior, run Node.js with either
`--enable-ssl2` or `--enable-ssl3` respectively.

This does not change the behavior for users specifically requesting
`SSLv2_method` or `SSLv3_method`. While this behavior is not advised, it is
assumed you know what you're doing since you're specifically asking to use
these methods.
2014-10-20 17:43:37 -07:00
Timothy J Fontaine
35443862a2 uv: Update to v0.10.29 2014-10-20 16:13:29 -07:00
Fedor Indutny
1349b680ba crypto: allow forcing SSLv2/v3 via secureProtocol
Force-enable SSLv2/v3 when `secureProtocol` is explicitly set
to `SSLv2_method` or `SSLv3_method`.

see discussion at #8551
2014-10-20 14:35:18 -07:00
Calvin Metcalf
7dbc024c85 doc: add note about key derivation
adds a note to the crypto docs passing along
the advice that openssl gives about what
key derivation function they recommend.

PR-URL: https://github.com/joyent/node/pull/8580
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-10-20 13:41:15 +04:00
Timothy J Fontaine
6c8593d456 crypto: move disaling SSLv2/3 into JavaScript 2014-10-17 15:16:26 -07:00
Timothy J Fontaine
226c98649d doc: clarify poodle mitigation 2014-10-17 15:15:45 -07:00
Timothy J Fontaine
b259f245f8 docs: update api location 2014-10-17 15:14:45 -07:00
Alexis Campailla
3139fa20d7 crypto: extra caution in setting ssl options
Always set ssl2/ssl3 disabled based on whether they are enabled in Node.
In some corner-case scenario, node with OPENSSL_NO_SSL3 defined could
be linked to openssl that has SSL3 enabled.
2014-10-16 18:45:47 +02:00
Timothy J Fontaine
3859fbdb7d test: fix test-net-listen-fd0 for pipes
In the case of a pipe'd input, i.e. from the CI the fd will be a PIPE
and when listen() is called it will return ENOTSOCK instead of EINVAL.

Backport: cd2d3aedaa
2014-10-15 18:48:34 -07:00
Timothy J Fontaine
2afa3d8a03 test: crypto-domains avoid spurious failures
The order of the callbacks is non-deterministic, so don't expect the
error messages to come back in the same order every time, instead just
verify they are expected messages.
2014-10-15 18:36:36 -07:00
Timothy J Fontaine
d601c76f4d crypto: allow runtime opt in using SSLv2/SSLv3
This change disables SSLv2/SSLv3 use by default, and introduces a
command line flag to opt into using SSLv2/SSLv3.

SSLv2 and SSLv3 are considered unsafe, and should only be used in
situations where compatibility with other components is required and
they cannot be upgrade to support newer forms of TLS.
2014-10-15 17:36:05 -07:00
Timothy J Fontaine
c1f4aacc75 build: revert change to disable ssl2 and ssl3 2014-10-15 14:49:41 -07:00
Fedor Indutny
707cc25011 test: fix test-crypto-stream
Because of constant-timeness change made in openssl-1.0.1j the error is
no longer returned from EVP_DecryptFinal_ex. Now it just return 0, and
thus the error message does not contain proper error code. Adapt to this
change, there is not much that we could do about it.
2014-10-15 14:07:00 -07:00
Fedor Indutny
e0e38c2f47 deps: update openssl to 1.0.1j 2014-10-15 14:06:03 -07:00
Fedor Indutny
d6712917f5 doc: document why SSL2/SSL3 is disabled
PR-URL: https://github.com/joyent/node/pull/8551
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2014-10-15 19:39:56 +04:00
Fedor Indutny
0ec78c961b configure: disable ssl2/ssl3 by default
PR-URL: https://github.com/joyent/node/pull/8551
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2014-10-15 19:39:40 +04:00
Swaagie
6a95e9f7e0 tls add secureOptions documentation
PR-URL: https://github.com/joyent/node/pull/8553
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-10-15 13:19:54 +04:00
Matthew Fitzsimmons
1524d48333 doc: update design to match nodejs.org 2014-10-13 14:17:39 -07:00
Timothy J Fontaine
641cea0926 doc: build branch versioned docs 2014-10-13 14:17:39 -07:00
Timothy J Fontaine
2b7c8a2f02 test: check for multi-localhost support 2014-10-13 14:17:39 -07:00
Fedor Indutny
d87ae24dfe hdr: always define NODE_WANT_INTERNALS
Otherwise the warning could be printed on some systems.

fix #8419
2014-09-26 10:31:10 +04:00
Calvin Metcalf
c8e0bdd7cf doc: document _transform callback takes 2 args
Expands the paragraph in the transform stream
implementation docs about the callback that is passed
to the _transform method to include details about how
two arguments may be passed, error and data.  A code
example is also included.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-23 15:53:58 +04:00
cjihrig
542ac7f3d2 child_process: properly support optional args
Currently, a TypeError is incorrectly thrown if the second argument is
an object. This commit allows the args argument to be properly omitted.

Fixes: https://github.com/joyent/node/issues/6068
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-09-17 15:13:34 -07:00
Timothy J Fontaine
84952da241 Now working on 0.10.33 2014-09-16 16:53:10 -07:00
Timothy J Fontaine
1a8b0e807f Merge branch 'v0.10.32-release' into v0.10 2014-09-16 16:52:57 -07:00
Timothy J Fontaine
0fe0d12155 2014.09.16, Version 0.10.32 (Stable)
* npm: Update to 1.4.28

* v8: fix a crash introduced by previous release (Fedor Indutny)

* configure: add --openssl-no-asm flag (Fedor Indutny)

* crypto: use domains for any callback-taking method (Chris Dickinson)

* http: do not send `0rnrn` in TE HEAD responses (Fedor Indutny)

* querystring: fix unescape override (Tristan Berger)

* url: Add support for RFC 3490 separators (Mathias Bynens)
2014-09-16 15:47:52 -07:00
Timothy J Fontaine
daca803e9e npm: Update to 1.4.28 2014-09-16 15:38:50 -07:00
Fedor Indutny
1fddc1fee8 http: do not send 0\r\n\r\n in TE HEAD responses
When replying to a HEAD request, do not attempt to send the trailers and
EOF sequence (`0\r\n\r\n`). The HEAD request MUST not have body.

Quote from RFC:

The presence of a message body in a response depends on both the
request method to which it is responding and the response status code
(Section 3.1.2).  Responses to the HEAD request method (Section 4.3.2
of [RFC7231]) never include a message body because the associated
response header fields (e.g., Transfer-Encoding, Content-Length,
etc.), if present, indicate only what their values would have been if
the request method had been GET (Section 4.3.1 of [RFC7231]).

fix #8361

Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
2014-09-16 15:24:19 -07:00
Chris Dickinson
6e689ece46 crypto: use domains for any callback-taking method
This adds domains coverage for pdbkdf2, pseudoRandomBytes, and randomBytes.
All others should be covered by event emitters.

Fixes #5801.

Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
2014-09-16 15:23:04 -07:00
Maciej Małecki
0664ddc093 doc: document process.env better
Fixes #6424.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-16 02:41:38 +04:00
Mathias Schreck
7c5fabe405 doc: fix modules require.resolve documentation
The behavior of the `node_modules` lookup algorithm was
changed in #1177, but the documentation was not updated completely
to describe the new behavior.

The pseudocode of the lookup algorithm did not metion that
`index.json` is tried to be loaded if you require a folder.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-15 17:17:05 +04:00
Fedor Indutny
627c1a92eb configure: add --openssl-no-asm flag
see #8062

Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2014-09-03 17:35:18 +04:00
Julien Gilli
8e60b4523c tests: add test for non-integer delay timers.
PR #8034 came with a test to make sure that timers expiry is based on
monotonic time and not on wall-clock time. However, a bug in the
implementation broke timers with non-integer delays. A fix for this
issue was provided with PR #8073, but it didn't come with a test.

Because #8073 fixed a subtle issue that could reappear in the future,
and because the impact of such an issue would be significant, I suggest
adding this test.

The test would timeout after 1 minute if the issue was reproduced.
Otherwise it will run very quickly.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-09-02 22:22:57 +04:00
Mathias Bynens
b869797a2d url: Add support for RFC 3490 separators
There is no need to split the host by hand in `url.js` – Punycode.js
takes care of it anyway. This not only simplifies the code, but also
adds support for RFC 3490 separators (i.e. not just U+002E, but U+3002,
U+FF0E, and U+FF61 as well).

Closes #6055.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-27 14:36:04 +04:00
Tristan Berger
0f2956192c querystring: fix unescape override
Documentation states that `querystring.unescape` may be overridden to
replace unescaper during parsing. However, the function was only
being used as a fallback for when the native decoder throws (on a
malformed URL). This patch moves the call to the native function and
the try/catch around it into querystring.unescape then has the parser
always invoke it, so that an override will always be used.

Fixes #4055

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-27 13:49:16 +04:00
Fedor Indutny
f39e608c6e gyp: use --export-dynamic on FreeBSD
Should help addons use OpenSSL functions.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-27 00:20:10 +04:00
Fedor Indutny
ada85d7307 deps: enable ARM assembly for OpenSSL
fix #8062
2014-08-27 00:18:55 +04:00
Fedor Indutny
3122e0eae6 deps: fix up v8 after fd80a3
fd80a31e06 has introduced a segfault
during redundant boundary check elimination (#8208).

The problem consists of two parts:

  1. Abscense of instruction iterator in
     `EliminateRedundantBoundsChecks`. It was present in recent v8, but
     wasn't considered important at the time of backport. However, since
     the function is changing instructions order in block, it is
     important to not rely at `i->next()` at the end of the loop.
  2. Too strict ASSERT in `MoveIndexIfNecessary`. It is essentially a
     backport of a45c96ab from v8's upstream. See
     https://github.com/v8/v8/commit/a45c96ab for details.

fix #8208
2014-08-22 14:19:08 +04:00
Timothy J Fontaine
adf2cfd54d Now working on 0.10.32 2014-08-19 18:12:30 -04:00
Timothy J Fontaine
3998914ec8 Merge branch 'v0.10.31-release' into v0.10 2014-08-19 18:12:21 -04:00
Timothy J Fontaine
7fabdc23d8 2014.08.19, Version 0.10.31 (Stable)
* v8: backport CVE-2013-6668

* openssl: Update to v1.0.1i

* npm: Update to v1.4.23

* cluster: disconnect should not be synchronous (Sam Roberts)

* fs: fix fs.readFileSync fd leak when get RangeError (Jackson Tian)

* stream: fix Readable.wrap objectMode falsy values (James Halliday)

* timers: fix timers with non-integer delay hanging. (Julien Gilli)
2014-08-19 11:19:52 -04:00
Timothy J Fontaine
6a11bfe74b npm: Update to v1.4.23 2014-08-19 11:17:36 -04:00
Fedor Indutny
d1dd0d6b38 gyp: preserve v8dbg syms on freebsd too 2014-08-18 17:58:36 +04:00
Fedor Indutny
ffd0116eda Revert "gyp: preserve v8dbg syms on freebsd too"
This reverts commit 181b8a5d3a.
2014-08-18 17:57:26 +04:00
Fedor Indutny
181b8a5d3a gyp: preserve v8dbg syms on freebsd too 2014-08-17 14:19:14 +04:00
Fedor Indutny
fd80a31e06 deps: backport 5f836c from v8 upstream
Original commit message:

    Fix Hydrogen bounds check elimination

    When combining bounds checks, they must all be moved before the first load/store
    that they are guarding.

    BUG=chromium:344186
    LOG=y
    R=svenpanne@chromium.org

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

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

fix #8070
2014-08-14 19:29:28 +04:00
Fedor Indutny
6b97c2e986 openssl: fix keypress requirement in apps on win32
Original source:

http://openssl.6102.n7.nabble.com/PATCH-s-client-Fix-keypress-requirement-with-redirected-input-on-Windows-td46787.html

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-08-13 09:26:53 -07:00
Fedor Indutny
5d824c89c9 deps: update openssl to v1.0.1i 2014-08-13 09:26:42 -07:00
Julien Gilli
b0277f35bd tests: fix child-process-fork-dgram on SmartOS.
Send messages until both the parent and the child process have received
at least one message. If at least one of them doesn't receive any
message, the test runner will make the test timeout.

Fixes #8046.
2014-08-07 16:06:59 -07:00
Maciej Małecki
d6b4766a78 doc: document arguments for 'error' event on a stream
Fixes #6361.
2014-08-07 12:19:33 -07:00
Jackson Tian
cc08106d62 fs: fix fs.readFileSync fd leak when get RangeError 2014-08-07 11:27:12 -07:00
Kevin Simper
70cc9968f6 doc: clarify factory methods for net.Socket 2014-08-06 14:46:18 -07:00
Timothy J Fontaine
53b4accb6e v8: Fix compliation with GCC 4.8
Supresses a very loud warning from GCC 4.8 about unused typedefs

Original url https://codereview.chromium.org/69413002
2014-08-04 15:11:36 -07:00
Julien Gilli
6f043940bd timers: fix timers with non-integer delay hanging.
When backporting f8193ab into v0.10, a regression was introduced. Timers
with non-integer timeout could trigger a infinite recursion with 100%
cpu usage. This commit backports 93b0624 which fixes the regression.

After backporting f8193ab, instead of using Date.now(), timers would use
Timer.now() to determine if they had expired. However, Timer.now() is
based on loop->time, which is not updated when a timer's remaining time
is > 0 and < 1. Timers would thus never timeout if their remaining time
was at some point > 0 and < 1.

With this commit, Timer.now() updates loop->time itself, and timers
always timeout eventually.

Fixes #8065 and #8068.
2014-08-04 12:00:40 -07:00
Sam Roberts
2fd7ee12d9 cluster: disconnect should not be synchronous
Callbacks in node are usually asynchronous, and should never be
sometimes synchronous, and sometimes asynchronous.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-08-02 00:41:13 -07:00
James Halliday
8e2cc69e78 stream: fix Readable.wrap objectMode falsy values
A streams1 stream will have its falsy values such as 0, false, or ""
eaten by the upgrade to streams2, even when objectMode is enabled.

Include test for said cases.

Reviewed-by: isaacs <i@izs.me>
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2014-08-01 13:01:23 -07:00
Jakob Gillich
92518892ec docs: fix non-string ignore note in path.resolve
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-07-31 22:59:30 +04:00
Timothy J Fontaine
4f2b08c523 Now working on 0.10.31 2014-07-31 11:12:08 -07:00
Timothy J Fontaine
98c69e892c Merge branch 'v0.10.30-release' into v0.10 2014-07-31 11:11:53 -07:00
Timothy J Fontaine
bc0ff830af 2014.07.31, Version 0.10.30 (Stable)
* uv: Upgrade to v0.10.28

* npm: Upgrade to v1.4.21

* v8: Interrupts must not mask stack overflow.

* Revert "stream: start old-mode read in a next tick" (Fedor Indutny)

* buffer: fix sign overflow in `readUIn32BE` (Fedor Indutny)

* buffer: improve {read,write}{U}Int* methods (Nick Apperson)

* child_process: handle writeUtf8String error (Fedor Indutny)

* deps: backport 4ed5fde4f from v8 upstream (Fedor Indutny)

* deps: cherry-pick eca441b2 from OpenSSL (Fedor Indutny)

* lib: remove and restructure calls to isNaN() (cjihrig)

* module: eliminate double `getenv()` (Maciej Małecki)

* stream2: flush extant data on read of ended stream (Chris Dickinson)

* streams: remove unused require('assert') (Rod Vagg)

* timers: backport f8193ab (Julien Gilli)

* util.h: interface compatibility (Oguz Bastemur)

* zlib: do not crash on write after close (Fedor Indutny)
2014-07-31 10:24:06 -07:00
Timothy J Fontaine
7169879879 uv: Upgrade to v0.10.28 2014-07-31 09:31:01 -07:00
Fedor Indutny
530af9cb8e v8: Interrupts must not mask stack overflow.
Backport of https://codereview.chromium.org/339883002
2014-07-31 09:26:09 -07:00
Timothy J Fontaine
1223cafea6 npm: Upgrade to v1.4.21 2014-07-31 09:05:30 -07:00
Maciej Małecki
4f1ae11a62 module: eliminate double getenv()
`process.env` access results in a synchronous `getenv` call. Cache the
first result instead and save one syscall.
2014-07-31 08:59:46 -07:00
Rod Vagg
9d281934df streams: remove unused require('assert') 2014-07-31 08:58:33 -07:00
Julien Gilli
befbbad051 timers: backport f8193ab
Original commit message:

 timers: use uv_now instead of Date.now

 This saves a few calls to gettimeofday which can be expensive, and
 potentially subject to clock drift. Instead use the loop time which
 uses hrtime internally.

In addition to the backport, this commit:
 - keeps _idleStart timers' property which is still set to
   Date.now() to avoid breaking existing code that uses it, even if
   its use is discouraged.
 - adds automated tests. These tests use a specific branch of
   libfaketime that hasn't been submitted upstream yet. libfaketime
   is git cloned if needed when running automated tests.

Signed-off-by: Timothy J Fontaine <tjfontaine@gmail.com>
2014-07-31 08:53:24 -07:00
Fedor Indutny
9f36c0d235 gyp: do not rm unused openssl syms on osx/linux
fix #8026

Reviewed-By: Fedor Indutny <fedor@indutny.com>
2014-07-31 11:52:01 +04:00
Fedor Indutny
38f6fcd822 buffer: fix sign overflow in readUIn32BE
`|` operation takes precendence on `+`, which will result in
`new Buffer('ffffffff', 16).readUInt32BE(0)` returning `-1` instead of
`ffffffff`.
2014-07-29 12:34:49 +04:00
Fedor Indutny
338ba2bc80 test: fix test-https-foafssl 2014-07-23 23:55:24 +04:00
Fedor Indutny
93390ffc20 test: fix test-tls-server-verify
fix #7963
2014-07-23 23:51:14 +04:00
Sam Roberts
96b166f291 doc: console.trace takes a message format
Documentation claimed it accepted a single label argument, as time and
timeEnd do, which was incorrect.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-23 23:09:41 +04:00
Fedor Indutny
eba7aae107 gyp: fix post-mortem in v0.11
Expose missing constants and keep symbols on OSX.
2014-07-23 18:56:49 +04:00
Fedor Indutny
3530fa9cd0 deps: backport 4ed5fde4f from v8 upstream
Original commit message:

    Fix x64 MathMinMax for negative untagged int32 arguments.

    An untagged int32 has zeros in the upper half even if it is negative.
    Using cmpq to compare such numbers will incorrectly ignore the sign.

    BUG=164442
    R=mvstanton@chromium.org

    Review URL: https://chromiumcodereview.appspot.com/11665007

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

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-18 14:57:18 +04:00
Fedor Indutny
1d3d8c0e55 gyp: do not let v8dbg_ slip away on osx
Pass `-force_load` to linker when linking to `libv8_base` to preserve
`v8dbg_` symbols, which are useful for debugging.
2014-07-17 15:16:29 +04:00
Fedor Indutny
9d9fc3fa30 lib: jslint string_decoder.js 2014-07-15 12:43:59 +04:00
Chris Dickinson
a96d6603b3 stream2: flush extant data on read of ended stream
A ReadableStream with a base64 StringDecoder backed by only
one or two bytes would fail to output its partial data before
ending. This fix adds a check to see if the `read` was triggered
by an internal `flow`, and if so, empties any remaining data.

fixes #7914.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-15 12:38:23 +04:00
Fedor Indutny
7f86baf5c7 child_process: handle writeUtf8String error
When handling `writeUtf8String` error, return after emitting it.
Otherwise a runtime failure can occur.

fix #7923
2014-07-12 12:35:26 +03:00
cjihrig
b87ca794e3 lib: remove and restructure calls to isNaN()
Switch condition order to check for null before calling isNaN().
Also remove two unnecessary calls to isNaN() that are already
covered by calls to isFinite(). This commit targets v0.10, as
opposed to #7891, which targets master (suggested by
@bnoordhuis). Closes #7840.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-10 15:21:50 +03:00
Maurice Butler
71fc4d9486 doc: added X.json to the LOAD_AS_FILE sudo code
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-07 12:00:10 +03:00
Sam Roberts
e2f2a20279 doc: fix console.assert docs, message is a format
Documentation for console.assert incorrectly described message as a
single message, but it is a format.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-07-07 08:44:40 +03:00
Fedor Indutny
11337db35f 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>
2014-07-03 00:46:17 +04:00
Trevor Norris
449ffecbb0 configure: fix v8 overriding commands on build
V8 seems to ignore the default value for want_separate_host_toolset and
would override it at build time. Instead always explicitly set the value.

Fixes #7833
2014-07-02 13:32:11 -07:00
Brian White
c7c904b1fc doc: fix createCipher description
Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-07-02 13:02:46 -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
Fedor Indutny
4128d4d2ba Revert "stream: start old-mode read in a next tick"
This reverts commit 2efe4ab761.
2014-06-30 13:06:35 +04:00
Fedor Indutny
a97bdef06d zlib: do not crash on write after close
fix #7767

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-06-27 17:02:02 +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
Nick Apperson
ee95e4f5f7 buffer: improve {read,write}{U}Int* methods
Increase the performance and simplify the logic of Buffer#write{U}Int*
and Buffer#read{U}Int* methods by placing the byte manipulation code
directly inline.

Also improve the speed of buffer-write benchmarks by creating a new
call directly to each method by using Function() instead of calling by
buff[fn].

Signed-off-by: Trevor Norris <trev.norris@gmail.com>

Conflicts:
	lib/buffer.js
2014-06-23 16:58:55 -07:00
Ben Noordhuis
72dcc26c7a doc: buffer: clarify typed array construction
It's possible to construct a typed array from a buffer but the buffer
is treated as an array, not a byte array as one might expect.

Fixes #7786.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-06-22 23:45:40 -07:00
Timothy J Fontaine
e22ea56647 node: update changelog to have proper npm version
fixes #7793
2014-06-16 19:16:13 -05:00
Timothy J Fontaine
361aa5344d 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.
2014-06-13 14:39:53 -07:00
Timothy J Fontaine
f6ba61bd15 node: signing the CLA is no longer a requirement 2014-06-11 11:51:53 -04:00
Timothy J Fontaine
1cb6f1a46a Now working on 0.10.30 2014-06-09 10:52:27 -07:00
Timothy J Fontaine
fc21bcb017 Merge branch 'v0.10.29-release' into v0.10 2014-06-09 10:51:53 -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
Brian White
7fd5a4d096 fs: remove duplicate check
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-06-08 10:01:23 -07:00
Timothy J Fontaine
e9170cbc3d 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.
2014-06-06 15:07:30 -07:00
Timothy J Fontaine
f051f31790 npm: upgrade to v1.4.14 2014-06-06 15:07:29 -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
Felix Geisendörfer
881ac26f27 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.
2014-06-06 15:07:29 -07:00
Felix Geisendörfer
80eff96829 string_decoder: Add more comments 2014-06-06 15:07:29 -07:00
Felix Geisendörfer
9fbd0f0f7d 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.
2014-06-06 15:07:29 -07:00
Felix Geisendörfer
22b839845c 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!
2014-06-06 15:07:29 -07:00
Fedor Indutny
2efe4ab761 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
2014-06-05 21:12:07 -07:00
Fedor Indutny
a7dd0e51f3 deps: update openssl to 1.0.1h 2014-06-05 07:11:23 -07:00
Chris Barber
715bb7f89f doc: fixed wording in child_process
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-31 10:09:02 +01:00
cjihrig
72cc66e503 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
2014-05-28 18:58:32 -07:00
Alexis Campailla
c862c03485 tls: fix performance issue
See https://github.com/orangemocha/node-connection-drop

I have pinpointed the performance degradation to
ac2263b77f

This change brings performance back to the orginal levels.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-23 23:41:30 +04:00
Yazhong Liu
e86c9421ef 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>
2014-05-22 09:27:03 -07:00
Calvin Metcalf
31150df92a 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.
2014-05-21 16:48:46 -07:00
Andrei Sedoi
1d90b5b78e configure: allow V8 snapshot for cross-compilation
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-16 13:15:25 +04:00
Alexis Campailla
c06495713a crypto: improve memory usage
ClientHelloParser used to contain an 18k buffer that was kept around
for the life of the connection, even though it was not needed in many
situations. I changed it to be deallocated when it's determined to
be no longer needed.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-16 01:33:08 +04:00
Greg Sabia Tucker
7bd08c5062 child_process: do not set args before throwing
No point in setting args and options if TypeError
is being thrown.

fix #7456

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-16 01:31:59 +04:00
Ben Noordhuis
885142a5ed src: fix _XOPEN_SOURCE redefinition warning
Fix the following compiler warning on systems where _XOPEN_SOURCE is
defined by default:

    ../src/node_constants.cc:35:0: warning: "_XOPEN_SOURCE" redefined
     #define _XOPEN_SOURCE 500

Move the (re)definition of _XOPEN_SOURCE to the top of the file while
we're here.  Commit 00890e4 adds a `#define _XOPEN_SOURCE 500` in order
to make <fcntl.h> expose O_NONBLOCK but it does so after other system
headers have been included.  If those headers include <fcntl.h>, then
the #include in node_constants.cc will be a no-op and O_NONBLOCK won't
be visible.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-14 15:33:18 +04:00
Greg Sabia Tucker
92875501d2 child_process: spawn() does not throw TypeError
Ensure TypeError is thrown, fix a bug where `env` option was
assuming the option was actually an object.

This case is especially bad because it then sets `env == null`
instead of using `process.env`.

Fix #7456

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-13 12:25:00 +04:00
Ben Noordhuis
17fbdc18b8 lib: name EventEmitter prototype methods
Before this commit the EventEmitter methods were anonymous functions.
V8 tries to infer names for anonymous functions based on the execution
context but it frequently gets it wrong and when that happens, the
stack trace is usually confusing and unhelpful.  This commit names all
methods so V8 can fall back to the method.name property.

The above gotcha applies to all anonymous functions but is exacerbated
for EventEmitter methods because those are invoked with a plenitude of
different receivers.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-05-07 12:11:57 -07:00
isaacs
120f7cf55f npm: upgrade to 1.4.10
* Don't set referer if already set
* fetch: Send referer and npm-session headers
* run-script: Support --parseable and --json
* list runnable scripts (Evan Lucas)
* Use marked instead of ronn for html docs
2014-05-05 18:20:40 -07:00
Fedor Indutny
00890e43fb constants: export O_NONBLOCK
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-05-02 22:54:08 +04:00
Fedor Indutny
a960d1707a deps: backport 23f2736a from v8 upstream
Original text:

    Fix corner case in x64 compare stubs.

    BUG=v8:2416

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

fix #7528
2014-05-02 22:53:27 +04:00
Timothy J Fontaine
bfe1fdb8ab Now working on 0.10.29 2014-05-02 07:46:15 -07:00
Timothy J Fontaine
d857d5ab09 Merge branch 'v0.10.28-release' into v0.10 2014-05-02 07:46:05 -07:00
Timothy J Fontaine
b148cbe09d 2014.05.01, Version 0.10.28 (Stable)
* npm: upgrade to v1.4.9
2014-05-01 17:47:47 -07:00
isaacs
dbec0a0cd8 npm: upgrade to v1.4.9
* Send referer header (with any potentially private stuff redacted)
* Fix critical typo bug in previous npm release
2014-05-01 16:30:33 -07:00
Timothy J Fontaine
1285008fca Now working on 0.10.28 2014-05-01 15:30:07 -07:00
Timothy J Fontaine
7abd826366 Merge branch 'v0.10.27-release' into v0.10 2014-05-01 15:29:52 -07:00
Timothy J Fontaine
cb7911f78a 2014.05.01, Version 0.10.27 (Stable)
* npm: upgrade to v1.4.8

* openssl: upgrade to 1.0.1g

* uv: update to v0.10.27

* dns: fix certain txt entries (Fedor Indutny)

* assert: Ensure reflexivity of deepEqual (Mike Pennisi)

* child_process: fix deadlock when sending handles (Fedor Indutny)

* child_process: fix sending handle twice (Fedor Indutny)

* crypto: do not lowercase cipher/hash names (Fedor Indutny)

* dtrace: workaround linker bug on FreeBSD (Fedor Indutny)

* http: do not emit EOF non-readable socket (Fedor Indutny)

* http: invoke createConnection when no agent (Nathan Rajlich)

* stream: remove useless check (Brian White)

* timer: don't reschedule timer bucket in a domain (Greg Brail)

* url: treat  the same as / (isaacs)

* util: format as Error if instanceof Error (Rod Vagg)
2014-05-01 14:04:20 -07:00
isaacs
f76c3938d0 npm: upgrade to v1.4.8
* Check SHA before using files from cache
* adduser: allow change of the saved password
* Make `npm install` respect `config.unicode`
* Fix lifecycle to pass `Infinity` for config env value
* Don't return 0 exit code on invalid command
* cache: Handle 404s and other HTTP errors as errors
* bump tap dep, make tests stderr a bit quieter
* Resolve ~ in path configs to env.HOME
* Include npm version in default user-agent conf
* npm init: Use ISC as default license, use save-prefix for deps
* Many test and doc fixes
2014-05-01 11:09:00 -07:00
Timothy J Fontaine
1038959dbf uv: update to v0.10.27 2014-05-01 09:27:39 -07:00
Forrest L Norvell
793c76e5c6 docs: add cautionary note to emitter.removeAllListeners
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-29 14:15:10 +04:00
Ben Noordhuis
3f3a71e61e deps: fix v8 link error with glibc < 2.17
Commit f9ced08 switches V8 on Linux over from gettimeofday() to
clock_getres() and clock_gettime().  As of glibc 2.17, those functions
live in libc.  For older versions, we need to pull them in from librt.

Fixes the following link-time error;

    Release/obj.target/deps/v8/tools/gyp/libv8_base.a(platform-posix.o):
    In function `v8::internal::OS::Ticks()':
    platform-posix.cc:(.text+0x93c):
    undefined reference to `clock_gettime'
    platform-posix.cc:(.text+0x989):
    undefined reference to `clock_getres'

Fixes #7514.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-28 19:34:07 +04:00
Rod Vagg
250782d139 util: format as Error if instanceof Error
Conflicts:
	lib/util.js
	test/simple/test-util-format.js

This is a backport to fix #7253

Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-26 00:52:49 +04:00
Ben Noordhuis
f9ced08de3 deps: make v8 use CLOCK_REALTIME_COARSE
Date.now() indirectly calls gettimeofday() on Linux and that's a system
call that is extremely expensive on virtualized systems when the host
operating system has to emulate access to the hardware clock.

Case in point: output from `perf record -c 10000 -e cycles:u -g -i`
for a benchmark/http_simple bytes/8 benchmark with a light load of
50 concurrent clients:

    53.69%     node  node                 [.] v8::internal::OS::TimeCurrentMillis()
               |
               --- v8::internal::OS::TimeCurrentMillis()
                  |
                  |--99.77%-- v8::internal::Runtime_DateCurrentTime(v8::internal::Arguments, v8::internal::Isolate*)
                  |          0x23587880618e

That's right - over half of user time spent inside the V8 function that
calls gettimeofday().

Notably, nearly all system time gets attributed to acpi_pm_read(), the
kernel function that reads the ACPI power management timer:

    32.49%     node  [kernel.kallsyms]    [k] acpi_pm_read
               |
               --- acpi_pm_read
                  |
                  |--98.40%-- __getnstimeofday
                  |          getnstimeofday
                  |          |
                  |          |--71.61%-- do_gettimeofday
                  |          |          sys_gettimeofday
                  |          |          system_call_fastpath
                  |          |          0x7fffbbaf6dbc
                  |          |          |
                  |          |          |--98.72%-- v8::internal::OS::TimeCurrentMillis()

The cost of the gettimeofday() system call is normally measured in
nanoseconds but we were seeing 100 us averages and spikes >= 1000 us.
The numbers were so bad, my initial hunch was that the node process was
continuously getting rescheduled inside the system call...

v8::internal::OS::TimeCurrentMillis()'s most frequent caller is
v8::internal::Runtime_DateCurrentTime(), the V8 run-time function
that's behind Date.now().  The timeout handling logic in lib/http.js
and lib/net.js calls into lib/timers.js and that module will happily
call Date.now() hundreds or even thousands of times per second.
If you saw exports._unrefActive() show up in --prof output a lot,
now you know why.

That's why this commit makes V8 switch over to clock_gettime() on Linux.
In particular, it checks if CLOCK_REALTIME_COARSE is available and has
a resolution <= 1 ms because in that case the clock_gettime() call can
be fully serviced from the vDSO.

It speeds up the aforementioned benchmark by about 100% on the affected
systems and should go a long way toward addressing the latency issues
that StrongLoop customers have been reporting.

This patch will be upstreamed as a CR against V8 3.26.  I'm sending it
as a pull request for v0.10 first because that's what our users are
running and because the delta between 3.26 and 3.14 is too big to
reasonably back-port the patch.  I'll open a pull request for the
master branch once the CR lands upstream.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-24 14:02:05 -07:00
Julian Gruber
0ee99565f9 doc: fix missing link in net api
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-24 19:59:41 +04:00
Julian Gruber
b0fa931e07 doc: fix order in net api
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-24 19:59:41 +04:00
Fedor Indutny
4601e7c892 Revert "deps: backport b5135bbc from c-ares repo"
This reverts commit 896e19330a.

Proper handling of TXT records requires API change, we can't afford it
in v0.10.

See #7371 for details.
2014-04-24 10:19:30 +04:00
isaacs
75bc11cf12 npm: upgrade to 1.4.7
* isaacs, Robert Kowalski, Benjamin Coe: Test Improvements
* isaacs doc: Add canonical url
* isaacs view: handle unpublished packages properly
* Raynos (Jake Verbaten) do not log if silent
* Julian Gruber fix no such property error
* isaacs npmconf@0.1.14
* Thorsten Lorenz adding save-prefix configuration option
* isaacs npm-registry-client@0.4.7
* isaacs cache: treat missing versions as a 404
* isaacs cache: Save shasum, write resolved/etc data to cache
* isaacs cache: Always fetch root doc
* isaacs cache: don't repack unnecessarily from tmp
* Andrey Kislyuk Don't crash if shrinkwrap-dependencies were not passed in pkginfo
* Robert Kowalski fix link in faq
* Jean Lauliac Add a peerDependencies section in package.json doc
* isaacs read-installed@2.0.2
2014-04-15 15:31:36 -07:00
isaacs
9520adeb37 url: treat \ the same as /
See https://code.google.com/p/chromium/issues/detail?id=25916

Parse URLs with backslashes the same as web browsers, by replacing all
backslashes with forward slashes, except those that occur after the
first # character.
2014-04-15 15:30:43 -07:00
Fedor Indutny
1bd4f3a605 child_process: fix deadlock when sending handles
Fix possible deadlock, when handles are sent in both direction
simultaneously. In such rare cases, both sides may queue their
`NODE_HANDLE_ACK` replies and wait for them.

fix #7465
2014-04-14 20:15:09 +04:00
William Bert
bfb7de5e75 docs: fix links to streams
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-11 00:52:33 +04:00
Timothy J Fontaine
632c135622 src: use monotonic time for process.uptime()
`process.uptime()` interface will return the amount of time the
current process has been running. To achieve this it was caching the
`uv_uptime` value at program start, and then on the call to
`process.uptime()` returning the delta between the two values.

`uv_uptime` is defined as the number of seconds the operating system
has been up since last boot. On sunos this interface uses `kstat`s
which can be a significantly expensive operation as it requires
exclusive access, but because of the design of `process.uptime()` node
*had* to always call this on start. As a result if you had many node
processes all starting at the same time you would suffer lock
contention as they all tried to read kstats.

Instead of using `uv_uptime` to achieve this, the libuv loop already
has a concept of current loop time in the form of `uv_now()` which is
in fact monotonically increasing, and already stored directly on the
loop. By using this value at start every platform performs at least
one fewer syscall during initialization.

Since the interface to `uv_uptime` is defined as seconds, in the call
to `process.uptime()` we now `uv_update_time` get our delta, divide by
1000 to get seconds, and then convert to an `Integer`. In 0.12 we can
move back to `Number::New` instead and not lose precision.

Caveat: For some platforms `uv_uptime` reports time monotonically
increasing regardless of system hibernation, `uv_now` interface is
also monotonically increasing but may not reflect time spent in
hibernation.
2014-04-10 10:55:02 -07:00
Timothy J Fontaine
af69f88a9d build: make sure changelog.html is generated 2014-04-08 09:06:28 -07:00
Fedor Indutny
d6fd118727 deps: update openssl to 1.0.1g 2014-04-08 00:58:37 +04:00
Fedor Indutny
f2b297cc7c http: do not emit EOF non-readable socket
Socket may become not `readable`, but http should not rely on this
property and should not think that it means that no data will ever
arrive from it. In fact, it may arrive in a next tick and, since
`this.push(null)` was already called, it will result in a error like
this:

    Error: stream.push() after EOF
        at readableAddChunk (_stream_readable.js:143:15)
        at IncomingMessage.Readable.push (_stream_readable.js:123:10)
        at HTTPParser.parserOnBody (_http_common.js:132:22)
        at Socket.socketOnData (_http_client.js:277:20)
        at Socket.EventEmitter.emit (events.js:101:17)
        at Socket.Readable.read (_stream_readable.js:367:10)
        at Socket.socketCloseListener (_http_client.js:196:10)
        at Socket.EventEmitter.emit (events.js:123:20)
        at TCP.close (net.js:479:12)

fix #6784
2014-04-08 00:40:22 +04:00
Brian White
c2d32f4c0e doc: add missing space
Signed-off-by: Fedor Indutny <fedor@indutny.com>
2014-04-07 17:45:04 +04:00
Dominic Tarr
cdc093b31f docs: correct tls docs. server -> client
when a pfx file is passed to tls.connection,
it is the client private key, not the server's private key.
2014-04-02 15:34:16 +04:00
Goh Yisheng (Andrew)
47bed4828c doc: typo clean up in tls 2014-03-31 07:40:17 -07:00
Josh Dague
a9d22247ad build: windows signing should include timestamps
Previously the build artifacts did not include a signed timestamp, so
when the certificate expired the validation of the artifact would fail.
Now we sign against a timestamp server such that the artifact will
always be valid regardless of the disposition of the certificate.

Closes #7360 and #7059.
2014-03-27 11:54:13 -07:00
Ben Noordhuis
f68a116c3c src: ensure that openssl's PRNG is fully seeded
Ensure that OpenSSL has enough entropy (at least 256 bits) for its PRNG.

The entropy pool starts out empty and needs to fill up before the PRNG
can be used securely.

OpenSSL normally fills the pool automatically but not when someone
starts generating random numbers before the pool is full: in that case
OpenSSL keeps lowering the entropy estimate to thwart attackers trying
to guess the initial state of the PRNG.

When that happens, we wait until enough entropy is available, something
that normally should never take longer than a few milliseconds.

Fixes #7338.
2014-03-26 11:31:32 +04:00
Ben Noordhuis
70f198ddb1 src: seed V8's random number generator at startup
The default entropy source is /dev/urandom on UNIX platforms, which is
okay but we can do better by seeding it from OpenSSL's entropy pool.

On Windows we can certainly do better; on that platform, V8 seeds the
random number generator using only the current system time.

Fixes #6250.

NB: This is a back-port of commit 7ac2391 from the master branch that
for some reason never got back-ported to the v0.10 branch.

The default on UNIX platforms in v0.10 is different and arguably worse
than it is with master: if no entropy source is provided, V8 3.14 calls
srandom() with a xor of the PID and the current time in microseconds.

That means that on systems with a coarse system clock, the initial
state of the PRNG may be easily guessable.

The situation on Windows is even more dire because there the PRNG is
seeded with only the current time... in milliseconds.
2014-03-26 11:31:32 +04:00
isaacs
bd547d6598 npm: upgrade to 1.4.6
* Documentation upgrades
* Fix glob bug which prevents proper README publishing
* node-gyp upgrade to 0.13
* Documentation updates
* Add --save-exact to save an exact dep (instead of a range)
* alias 't' to 'test'
2014-03-25 17:42:22 -07:00
Ben Noordhuis
7989f42f86 build: fix g++ 4.8 build, disable -Werror
Turn off -Werror when building V8, it hits -Werror=unused-local-typedefs
with g++ 4.8.  The warning itself is harmless so don't abort the build.

This was originally implemented in commit d2ab314e back in 2011 but the
build process has gone through a few iterations since then, that change
no longer works.
2014-03-23 16:11:08 -07:00
Shuhei Kagawa
43a29f53ca doc: remove an unused arg in process.stdin.
The argument of process.stdin's readable event handler is not used.
2014-03-10 15:30:40 -07:00
Fedor Indutny
f0d870501e crypto: do not lowercase cipher/hash names
`crypto.getCiphers()` and `crypto.getHashes()` should prefer lower-case
variants of names, but should not introduce them.

fix #7282
2014-03-11 01:08:43 +04:00
Ben Noordhuis
6bd78fd770 deps: fix v8 valgrind warning
Fix the following valgrind warning:

    Conditional jump or move depends on uninitialised value(s)
        at 0x7D64E7: v8::internal::GlobalHandles::IterateAllRootsWithClassIds(v8::internal::ObjectVisitor*) (global-handles.cc:613)
        by 0x94DCDC: v8::internal::NativeObjectsExplorer::FillRetainedObjects() (profile-generator.cc:2849)
        # etc.

This was fixed upstream in r12903 and released in 3.15.2 but that commit
was never back-ported to the 3.14 branch that node.js v0.10 uses.

The code itself works okay; this commit simply shuffles the clauses in
an `if` statement to check that the node is in use before checking its
class id (which is uninitialized if the node is not in use.)
2014-03-07 03:29:00 +04:00
Fedor Indutny
5e06ce4fb9 child_process: fix sending handle twice
When sending a socket to a child process via IPC pipe,
`child_process.js` picks a raw UV handle from `_handle` property, sends
it, and assigns `null` to the property. Sending the same socket twice
was resulting in a runtime error, since we weren't handling the empty
`_handle` case.

In case of `null` `_handle` we should send just a plain text message
as passed it was passed to `.send()` and ignore the handle, letting
users handle such cases themselves instead of throwing the error at
runtime.

fix #5469
2014-03-05 09:36:35 -08:00
Benoit Vallée
a9d24fa40d test: test sending a handle twice
Added test-cluster-send-handle-twice.js testing to send a handle
twice to the parent process.
2014-03-05 09:36:32 -08:00
Ben Noordhuis
bd8a5755dc src: add default visibility to NODE_MODULE
It's currently not really possible to compile native add-ons with
-fvisibility=hidden because that also hides the struct containing
the module definition.

The NODE_MODULE() and NODE_MODULE_DECL() macros are structured in
a way that makes it impossible to add a visibility attribute manually
so there is no escape hatch there.

That's why this commit adds an explicit visibility attribute to
the module definition.  It doesn't help with node.js releases that
are already out there but at least it improves the situation going
forward.
2014-03-05 15:26:09 +04:00
Greg Brail
6eb4d1d15c timer: don't reschedule timer bucket in a domain
If two timers run on the same tick, and the first timer uses a domain,
and then catches an exception and disposes of the domain, then the
second timer never runs. (And even if the first timer does not dispose
of the domain, the second timer could run under the wrong domain.)

This happens because timer.js uses "process.nextTick()" to schedule
continued processing of the timers for that tick. However, there was
an exception inside a domain, then "process.nextTick()" runs under
the domain of the first timer function, and will do nothing if
the domain has been disposed.

To avoid this, we temporarily save the value of "process.domain"
before calling nextTick so that it does not run inside any domain.
2014-03-03 17:46:49 -08:00
Timothy J Fontaine
06453a94a7 src: domain should not replace nextTick function
Previously if you cached process.nextTick and then require('domain')
subsequent nextTick() calls would not be caught because enqueued
functions were taking the wrong path. This keeps nextTick to a single
function reference and changes the implementation details after domain
has been required.
2014-03-03 16:27:58 -08:00
Nathan Rajlich
47abdd9c43 test: add agent: null http client request test
This is just the test portion from #7012 / #7189,
but targetted for the v0.10 branch.
2014-02-26 11:39:53 -08:00
Nathan Rajlich
0a01a42e87 http: invoke createConnection when no agent
This makes it so that the user may pass in a
`createConnection()` option, and they don't have
to pass `agent: false` at the same time.

Also adding a test for the `createConnection` option,
since none was in place before.

See #7014.
2014-02-26 11:14:32 -08:00
Mike Pennisi
aae51ecf7d assert: Ensure reflexivity of deepEqual
Ensure that the behavior of `assert.deepEqual` does not depend on
argument ordering  when comparing an `arguments` object with a
non-`arguments` object.
2014-02-25 20:32:49 +04:00
Brian White
70ea5bac43 stream: remove useless check 2014-02-24 15:08:11 +04:00
Nicolas Talle
1efe6837b2 doc: update assert.markdown
Update assert.throws() and assert.doesNotThrow() docs
2014-02-23 18:09:26 +04:00
Fedor Indutny
e0c5302590 installer: copy node.d only with node_use_dtrace 2014-02-21 01:03:03 +04:00
Fedor Indutny
a6f89ccd76 dtrace: workaround linker bug on FreeBSD 2014-02-21 00:56:17 +04:00
Fedor Indutny
b7776fb192 configure: allow --with-dtrace on freebsd 2014-02-21 00:46:26 +04:00
Fedor Indutny
b940e0fd86 gyp: specialize node.d for freebsd
`node.d` should use `psinfo.d` instead of `procfs.d` and have statically
defined architecture on FreeBSD.
2014-02-21 00:46:26 +04:00
Timothy J Fontaine
085db9dd6c tools: update to support separate website repo 2014-02-18 18:57:45 -08:00
Timothy J Fontaine
ae418f974d Now working on v0.10.27 2014-02-18 16:43:12 -08:00
Timothy J Fontaine
0206925b0d Merge branch 'v0.10.26-release' into v0.10 2014-02-18 16:40:23 -08:00
Timothy J Fontaine
cc56c62ed8 build: readd missing installer resources
This were accidentally moved during the website refactor
2014-02-18 15:34:29 -08:00
Timothy J Fontaine
31c510ca88 2014.02.18, Version 0.10.26 (Stable)
* uv: Upgrade to v0.10.25 (Timothy J Fontaine)

* npm: upgrade to 1.4.3 (isaacs)

* v8: support compiling with VS2013 (Fedor Indutny)

* cares: backport TXT parsing fix (Fedor Indutny)

* crypto: throw on SignFinal failure (Fedor Indutny)

* crypto: update root certificates (Ben Noordhuis)

* debugger: Fix breakpoint not showing after restart (Farid Neshat)

* fs: make unwatchFile() insensitive to path (iamdoron)

* net: do not re-emit stream errors (Fedor Indutny)

* net: make Socket destroy() re-entrance safe (Jun Ma)

* net: reset `endEmitted` on reconnect (Fedor Indutny)

* node: do not close stdio implicitly (Fedor Indutny)

* zlib: avoid assertion in close (Fedor Indutny)
2014-02-18 14:55:58 -08:00
Anton Khlynovskiy
1fa5cff4f2 docs: clarify process.stdin and old mode 2014-02-18 13:52:14 -08:00
Pedro Ballesteros
1d734a75b5 doc: stdout blocking or non-blocking behaviour
Makes clear that the behaviour of stdout is blocking
in Linux/Unix even when they refer to pipes.
2014-02-18 13:36:00 -08:00
Timothy J Fontaine
3e6e63406d test: make test-net-error-twice less racey 2014-02-18 13:10:09 -08:00
Timothy J Fontaine
c2aea3747d uv: Upgrade to v0.10.25 2014-02-18 13:04:29 -08:00
Raynos
abbde2fafa doc: mention objectMode for Writable streams 2014-02-18 10:29:04 -08:00
Farid Neshat
562b015170 debugger: Fix breakpoint not showing after restart
The reason this wasn't working was because after restart, when restoring
breakpoints the scripts wasn't loaded, so the breakpoint.script was
undefined. As a fix I added another check to use breakpoint.scriptReq
instead of breakpoint.script, which is the same except when the
breakpoint is a function.

fixes #7027
2014-02-17 20:47:46 -08:00
isaacs
217bb0c964 npm: upgrade to 1.4.3 2014-02-17 19:37:33 -08:00
Fedor Indutny
829a9b8cba zlib: introduce pending close state
zlib should not crash in `close()` if the write is still in progress.

fix #7101
2014-02-18 01:11:05 +04:00
Timothy J Fontaine
86b8d84811 doc: re-add node.1 man page
The man page was accidentally removed in 37376de for the website
refactor, bring it back.

Fixes #7117
2014-02-14 11:01:49 -08:00
isaacs
55543d3c45 npm: Upgrade to v1.4.0
- Removes 'npm publish -f'
- Documentation
- Bug-fixes
- Update license etc to refer to npm, Inc. rather than @isaacs personally
2014-02-13 16:35:41 -08:00
Timothy J Fontaine
37376debe5 website: move website to joyent/node-website
The website will no longer be living in the source repository instead
it can be found at http://github.com/joyent/node-website
2014-02-13 15:54:07 -08:00
Christian
b222374b07 doc: changed timer id to object
fix #7074
2014-02-13 02:18:10 +04:00
Fedor Indutny
dee5270a6c net: do not re-emit stream errors
fix #7015
2014-02-10 10:59:52 -08:00
Timothy J Fontaine
5c832e44c3 src: refactor buffer bounds checking
Consolidate buffer bounds checking logic into Buffer namespace and use
it consistently throughout the source.
2014-02-08 15:31:27 -08:00
isaacs
2e8bb57fe3 npm: upgrade to 1.3.26 2014-02-08 15:10:43 -08:00
Brian White
3595139b51 doc: fix diffieHellman.getGenerator() description 2014-02-09 02:42:41 +04:00
Fedor Indutny
d10a68736d Revert "dns: validate arguments in resolve"
This reverts commit 56e80a37e0.
2014-02-08 02:15:33 +04:00
Fedor Indutny
96379f83e0 Revert "dns: verify argument is valid function in resolve"
This reverts commit 2ee86c624e.
2014-02-08 02:15:29 +04:00
Kenan Sulayman
2ee86c624e dns: verify argument is valid function in resolve
Don't use argument as callback if it's not a valid callback function.
Throw a valid exception instead explaining the issue. Adds to #7070
("DNS — Throw meaningful error(s)").
2014-02-08 02:10:01 +04:00
Kenan Sulayman
56e80a37e0 dns: validate arguments in resolve
Mitigat  C++-land assertion error, add test accordingly.

fix #7070
2014-02-08 02:08:28 +04:00
Timothy J Fontaine
e3d8359021 website: update cla email address 2014-02-07 11:17:23 -08:00
iamdoron
1317032c97 fs: make unwatchFile() insensitive to path 2014-02-06 13:04:35 +04:00
Benjamin Waters
d2147c55c2 doc: fix references to error keyword
References for err.signal and err.code should be error.signal and
error.code.

Fixes joyent/node#6862
2014-02-04 12:50:24 +04:00
Ben Noordhuis
09c51d5e40 crypto: update root certificates
Update the list of root certificates in src/node_root_certs.h with
tools/mk-ca-bundle.pl and update src/node_crypto.cc to make use of
the new format.

Fixes #6013.
2014-02-04 01:42:52 +04:00
Maxime Quandalle
154d9d2163 doc: add an example about multiple extensions
`path.extname` returns only the last extension
2014-02-03 12:38:40 +04:00
Fedor Indutny
643a7d8c16 dtrace: fix arguments warning
Add enough arguments to `NODE_NET_SOCKET_READ()` and
`NODE_NET_SOCKET_WRITE()` stubs.
2014-02-01 00:45:55 +04:00
Fedor Indutny
fac8f396cc deps: backport 883637bd from latest v8
Original commit message:

  VS2013 contains a number of improvements, most notably the addition
  of all C99 math functions.

  I'm a little bit concerned about the change I had to make in
  cpu-profiler.cc, but I spent quite a bit of time looking at it and was
  unable to figure out any rational explanation for the warning. It's
  possible it's spurious. Since it seems like a useful warning in
  general   though, I chose not to disable globally at the gyp level.

  I do think someone with expertise here should probably try to
  determine if this is a legitimate warning.

  BUG=288948
  R=dslomov@chromium.org

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

NOTE: Path applied without `cpu-profiler.cc` changes because in our
version it was looking totally different.
2014-02-01 00:45:55 +04:00
Fedor Indutny
e796e11087 node: do not ever close stdio
Even if stdio streams are opened as file streams, we should not ever try
to close them. This could be accomplished by passing `autoClose: false`
in options on their creation.
2014-01-30 21:26:19 +04:00
Timothy J Fontaine
a98d541733 blog: Post for v0.11.11 2014-01-28 19:48:54 -08:00
Wyatt Preul
8c05570258 docs: clarify origin in agent.maxSockets section 2014-01-29 03:39:54 +04:00
Jun Ma
d2de8ba34d net: make Socket destroy() re-entrance safe
So that we are free to call socket.destroy() in error event handler.

fix #6769
2014-01-27 22:12:29 +04:00
Fedor Indutny
b4c4e0bbaa crypto: throw on SignFinal failure
fix #6963
2014-01-26 22:24:57 +04:00
Fedor Indutny
00efcb4cd7 net: reset endEmitted on reconnect
fix #6908
2014-01-25 12:20:45 -08:00
Fedor Indutny
896e19330a deps: backport b5135bbc from c-ares repo
Original commit message:

    ares_parse_txt_reply: return a ares_txt_reply node for each sub-string

    Previously, the function would wrongly return all substrings merged into
    one.

fix #6931
2014-01-25 12:20:41 -08:00
Fedor Indutny
0ec3770767 doc: readline document TTY utils
fix #6933
2014-01-25 12:10:44 -08:00
Scott González
9975ff603b doc: fix typo in readline 2014-01-24 18:56:46 +04:00
isaacs
485fcf9c63 npm: Upgrade to v1.3.25 2014-01-23 13:04:49 -08:00
Alexis Campailla
42cd468901 test: fix http-incoming-pipelined-socket-destroy
The test was calling server.close() after write on the socket
had completed. However the fact that the write had completed was
not valid indication that the server had received the data.

This would result in a premutaure closing of the server and
an ECONNRESET event on the client.
2014-01-23 12:42:56 -08:00
Alexis Campailla
5d4f4ee310 test: fix http-many-ended-pipelines server close
The test was calling server.close() without waiting for the server
to have received all the requests. This would cause an ECONNRESET.
2014-01-23 12:42:36 -08:00
Timothy J Fontaine
5aebc73525 blog: Post for v0.10.25 2014-01-23 11:44:32 -08:00
Timothy J Fontaine
eb7c7be7da Now working on 0.10.26 2014-01-23 11:44:32 -08:00
Timothy J Fontaine
24d05f21be Merge branch 'v0.10.25-release' into v0.10 2014-01-23 11:44:14 -08:00
Timothy J Fontaine
b0e5f195df src: lint lib/net.js 2014-01-22 21:05:51 -08:00
Timothy J Fontaine
bc2f31ae1d 2014.01.23, Version 0.10.25 (Stable)
* uv: Upgrade to v0.10.23

* npm: Upgrade to v1.3.24

* v8: Fix enumeration for objects with lots of properties

* child_process: fix spawn() optional arguments (Sam Roberts)

* cluster: report more errors to workers (Fedor Indutny)

* domains: exit() only affects active domains (Ryan Graham)

* src: OnFatalError handler must abort() (Timothy J Fontaine)

* stream: writes may return false but forget to emit drain (Yang Tianyang)
2014-01-22 21:03:08 -08:00
Timothy J Fontaine
8b7ec73331 uv: Upgrade to v0.10.23 2014-01-22 20:47:12 -08:00
Fedor Indutny
25f9e92813 gyp: fix non-ninja build 2014-01-20 18:39:05 +04:00
isaacs
f645c40fcd npm: Upgrade to v1.3.24 2014-01-19 21:13:20 -08:00
Timothy J Fontaine
1d57a5caa4 blog: nodejs v0.12 roadmap update 2014-01-16 14:43:29 -08:00
Fedor Indutny
61c0d571bf gyp: fix ninja build on linux
fix #6679
2014-01-16 17:11:04 +00:00
Sam Roberts
abe02553f2 doc: clarify Windows signal sending emulation 2014-01-16 08:41:04 -08:00
Sam Roberts
67e9298fb6 child_process: fix spawn() optional arguments
Spawn's arguments were documented to be optional, as they are for the
other similar child_process APIs, but the code was missing. Result was
`child_process.spawn('node', {})` errored when calling slice() on an
Object, now it behaves as the documentation said it would.
2014-01-16 07:35:12 -08:00
Sam Roberts
198ed0bd0d doc: describe child_process.fork() silent option 2014-01-16 07:35:12 -08:00
Sam Roberts
549be1caa8 doc: child_process.execFile arguments are optional 2014-01-16 07:35:12 -08:00
Ryan Graham
7f81ca2c47 domains: exit() only affects active domains
domain.create().exit() should not clear the domain stack if the domain
instance does not exist within the stack.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
2014-01-15 12:27:10 -08:00
isaacs
e7f7e2aeca blog: TJ is the new node core project lead 2014-01-15 09:03:45 -08:00
Fedor Indutny
a05dae2ced gyp: fix build with python 2.6
fix #6859
2014-01-13 22:03:40 -08:00
Fedor Indutny
346b59e4a3 deps: update gyp to 1eae492b 2014-01-13 22:03:40 -08:00
Sam Roberts
7bd6e33318 doc: streams must be open to be passed to child
spawn stdio options can be a 'stream', but the following code
fails with "Incorrect value for stdio stream: [object Object]",
despite being a stream. The problem is the test isn't really
for a stream, its for an object with a numeric `.fd` property,
and streams do not have an fd until their async 'open' event
has occurred. This is reasonable, but was not documented.

    child_process.spawn('date', [], {stdio: [
      'ignore',
      fs.createWriteStream('out.txt',{flags:'a'}),
      'ignore']})
2014-01-13 21:36:56 +00:00
Alexis Campailla
1b74892807 test: close debug client in test-debugger-client
Killing the debuggee without first closing the socket can result
in an ECONNRESET error.
2014-01-13 13:16:25 -08:00
Timothy J Fontaine
8753bb3859 src: return empty set on ENOSYS for interfaces
If node was compiled with --no-ifaddrs to support older operating
systems, don't throw instead simply return an empty object

Fixes #6846
2014-01-12 10:04:21 -08:00
svenpanne@chromium.org
196184d332 v8: backport codereview.chromium.org/11362182
Keep the number of descriptors below
DescriptorArray::kMaxNumberOfDescriptors even for accessors

Review URL: https://codereview.chromium.org/11362182
2014-01-10 23:32:08 +00:00
gluxon
56913d2cde doc: Fix argument typo in SimpleProtocol example 2014-01-10 08:42:34 -08:00
Timothy J Fontaine
270c2deb84 src: OnFatalError handler must abort()
We are in an unrecoverable state if v8 throws a FatalError, actually
ask the operating system to dump core in this case.

Fixes #6836
2014-01-09 14:01:53 -08:00
Lorenz Leutgeb
fc7e217a30 doc: fix typo in cluster page 2014-01-08 23:39:02 +04:00
Timothy J Fontaine
30b3bc2f7c uv: Upgrade to v0.10.22 2014-01-07 14:05:58 -08:00
isaacs
1be9365930 npm: Upgrade to 1.3.23 2014-01-06 17:02:07 -08:00
ayanamist
b922b5e90d stream: writes may return false but forget to emit drain
If a write is above the highWaterMark, _write still manages to
fully send it synchronously, _writableState.length will be adjusted down
to 0 synchronously with the write returning false, but 'drain' will
not be emitted until process.nextTick.

If another small write which is below highWaterMark is issued before
process.nextTick happens, _writableState.needDrain will be reset to false,
and the drain event will never be fired.

So we should check needDrain before setting it up, which prevents it
from inproperly resetting to false.
2014-01-05 19:44:45 +04:00
Timothy J Fontaine
aa56d9d354 blog: Post for v0.11.10 2013-12-31 16:24:58 -08:00
Maciej Małecki
5a8de857f0 doc: document that process.send is synchronous
Ref #2598
2013-12-31 14:52:43 -08:00
Timothy J Fontaine
ffb718b5a3 doc: clarify process on exit safe usage 2013-12-31 14:48:20 -08:00
Ron Korving
3917232030 docs: process.on('exit') receives exit code
The fact that the "exit" event passes the exit code as an argument
as omitted from the documentation. This adds the explanation and
augments the example code to show that.
2013-12-31 14:38:09 -08:00
Timothy J Fontaine
6f8aa24d1e test: fix test-cluster-eaccess to work on windows 2013-12-31 11:57:13 -08:00
Fedor Indutny
3e9f2e61db cluster: report more errors to workers
Some errors for listening and binding to a socket were not properly
delivered to workers.

fix #6767
2013-12-31 09:47:33 -08:00
Fedor Indutny
cb5da7b443 deps: update gyp to 828ce09 2013-12-30 15:52:47 -08:00
Dav Glass
34b9280da4 doc: Fix missing backtick in debugger doc 2013-12-30 11:44:13 -08:00
Lev Gimelfarb
d2d56d04f8 build: add settings for VS 2013 to vcbuild.bat
Search for VS2013 compiler 1st, before falling back to older ones. This
allows compiling using the latest VS2013.
2013-12-28 16:58:01 +04:00
isaacs
7f82faee30 npm: Upgrade to v1.3.22 2013-12-25 19:15:23 -08:00
T.C. Hollingsworth
55b0bd639d build: install common.gypi along with headers
node-gyp requires this file
2013-12-20 11:03:06 -08:00
Timothy J Fontaine
f84c7a2776 blog: Post for v0.10.24 2013-12-19 09:05:14 -08:00
Timothy J Fontaine
00e28ee6a8 Now working on 0.10.25 2013-12-19 09:05:14 -08:00
Timothy J Fontaine
696ae46fd7 Merge branch 'v0.10.24-release' into v0.10 2013-12-19 09:03:45 -08:00
Timothy J Fontaine
b7fd6bc899 2013.12.18, Version 0.10.24 (Stable)
* uv: Upgrade to v0.10.21

* npm: upgrade to 1.3.21

* v8: backport fix for CVE-2013-{6639|6640}

* build: unix install node and dep library headers (Timothy J Fontaine)

* cluster, v8: fix --logfile=%p.log (Ben Noordhuis)

* module: only cache package main (Wyatt Preul)
2013-12-18 15:49:45 -08:00
Timothy J Fontaine
9371be0aa1 uv: Upgrade to v0.10.21 2013-12-18 15:42:46 -08:00
Ben Noordhuis
2eaef9f6da cluster, v8: fix --logfile=%p.log
The %p is replaced with the current PID.  This used to work in node.js
v0.9.7 but it seems to have been lost somewhere along the way.

This commit makes the fix from 6b713b52 ("cluster: make --prof work for
workers") work again.  Without it, all log data ends up in a single
file and is unusable because the addresses are all wrong.
2013-12-18 15:36:12 -08:00
Timothy J Fontaine
32478acf94 build: unix install node and dep library headers
Restores functionality from v0.8 where module authors may not be
relying on gyp for building their modules.
2013-12-18 15:06:20 -08:00
isaacs
2a741f2d12 npm: upgrade to 1.3.21 2013-12-17 14:33:52 -08:00
isaacs
e10c223eb6 npm: upgrade to 1.3.20
The 1.3.19 release had a critical bug: any packages published with it
could not be installed, because the shasum would be incorrect.

Thankfully, 1.3.19 was published using 1.3.19, so could not be installed
by any users!  However, if it goes out as part of a Node.js release,
then obviously that would be a problem.
2013-12-17 09:04:30 -08:00
isaacs
97738994e0 npm: Upgrade to 1.3.19 2013-12-16 23:09:16 -08:00
jkummerow@chromium.org
39e2426b20 v8: backport fix for CVE-2013-{6639|6640}
Quoting CVE-2013-6639:

    The DehoistArrayIndex function in hydrogen-dehoist.cc in Google V8
    before 3.22.24.7, as used in Google Chrome before 31.0.1650.63,
    allows remote attackers to cause a denial of service (out-of-bounds
    write) or possibly have unspecified other impact via JavaScript code
    that sets the value of an array element with a crafted index.

Quoting CVE-2013-6640:

    The DehoistArrayIndex function in hydrogen-dehoist.cc in Google V8
    before 3.22.24.7, as used in Google Chrome before 31.0.1650.63,
    allows remote attackers to cause a denial of service (out-of-bounds
    read) via JavaScript code that sets a variable to the value of an
    array element with a crafted index.

Like 6b92a7, this is unlikely to affect node.js because it only runs
local, trusted code.  However, if there exists some module somewhere
that populates an array index with remotely provided data this could
very well be used to crash a remote server running node.  Defense in
depth and all.

This is a backport of upstream commit r17801. Original commit log:

    Limit size of dehoistable array indices

    LOG=Y
    BUG=chromium:319835,chromium:319860
    R=dslomov@chromium.org

    Review URL: https://codereview.chromium.org/74113002
2013-12-14 02:55:29 +04:00
Wyatt Preul
1d5e797445 module: only cache package main 2013-12-12 09:38:47 -08:00
Timothy J Fontaine
7dca8d714f blog: Post for v0.10.23 2013-12-11 22:11:19 -08:00
Timothy J Fontaine
bb1575b4c4 Now working on 0.10.24 2013-12-11 22:11:19 -08:00
Timothy J Fontaine
593672c33d Merge branch 'v0.10.23-release' into v0.10 2013-12-11 22:11:06 -08:00
Timothy J Fontaine
0462bc2356 2013.12.12, Version 0.10.23 (Stable)
* uv: Upgrade to v0.10.20 (Timothy J Fontaine)

* npm: Upgrade to 1.3.17 (isaacs)

* gyp: update to 78b26f7 (Timothy J Fontaine)

* build: include postmortem symbols on linux (Timothy J Fontaine)

* crypto: Make Decipher._flush() emit errors. (Kai Groner)

* dgram: fix abort when getting `fd` of closed dgram (Fedor Indutny)

* events: do not accept NaN in setMaxListeners (Fedor Indutny)

* events: avoid calling `once` functions twice (Tim Wood)

* events: fix TypeError in removeAllListeners (Jeremy Martin)

* fs: report correct path when EEXIST (Fedor Indutny)

* process: enforce allowed signals for kill (Sam Roberts)

* tls: emit 'end' on .receivedShutdown (Fedor Indutny)

* tls: fix potential data corruption (Fedor Indutny)

* tls: handle `ssl.start()` errors appropriately (Fedor Indutny)

* tls: reset NPN callbacks after SNI (Fedor Indutny)
2013-12-11 21:20:06 -08:00
Nicolas Kaiser
4bc2ec90d7 doc: fix typos in node.1 2013-12-11 20:41:36 -08:00
Mathias Bynens
f89a7185b7 doc: mention binary as deafult for Hash strings 2013-12-11 20:39:22 -08:00
Gabriel Farrell
04d52270b6 doc: "finish" event is on the writable stream 2013-12-11 20:29:17 -08:00
Timothy J Fontaine
910bc3c02d uv: Upgrade v0.10.20 2013-12-11 20:24:36 -08:00
Timothy J Fontaine
4ec189b250 gyp: update to 78b26f7 2013-12-11 20:06:11 -08:00
isaacs
a22de4f7ee npm: Upgrade to 1.3.17 2013-12-11 10:20:26 -08:00
Fedor Indutny
f16edd2632 fs: report correct path when EEXIST
When `symlink`, `link` or `rename` report EEXIST, ENOTEMPTY or EPERM -
the destination file name should be included in the error message,
instead of source file name.

fix #6510
2013-12-10 23:17:00 +04:00
Fedor Indutny
4a2792cd2f tls: emit 'end' on .receivedShutdown
NOTE: Also removed `.receivedShutdown` method of `Connection` it wasn't
documented anywhere, and was rewritten with `true` after receiving
`close_notify`.

fix #6638
2013-12-10 22:56:01 +04:00
Timothy J Fontaine
92bbd60a3f build: only whole archive on static v8 builds
Closes #6629
2013-12-10 10:11:28 -08:00
Timothy J Fontaine
2905884b63 build: pass --no-parallel by default to gyp
gyp by default now tries to process gyp files in parallel by using
python's multiprocessing module, but it has problems on oddball
platforms. We don't have many files or complex dependency chains that
would benefit from parallel processing so disable by deafult

fixes #6640
2013-12-06 21:07:46 -08:00
Timothy J Fontaine
b5e161989c build: ./configure pass positional args to gyp
use `--` to specify the arguments you want to pass directly to gyp.

for example: `./configure -- --no-parallel -Dsome_define=foo`

fixes #6370
2013-12-06 21:07:00 -08:00
Yazhong Liu
5cfee927cd doc: mention execArgv in setupMaster 2013-12-06 10:45:40 -08:00
Fedor Indutny
796834bf18 doc: document 'error' event for stream.Writable
fix #5255
2013-12-06 10:26:49 -08:00
Kai Groner
98be8df571 crypto: Make Decipher._flush() emit errors.
When Decipher processes a stream using an incorrect key, the
DecipherFinal() method throws an unhandled exception at the end of the
stream.
2013-12-04 19:52:15 +04:00
isaacs
b371d4ae8f blog: bnoordhuis departure 2013-12-04 01:00:07 -08:00
Fedor Indutny
60f777d343 tls: fix pool usage race
When calling `encOut` in loop, `maybeInitFinished()` may invoke
`clearOut`'s loop, leading to the writing of interleaved data
(encrypted and cleartext) into the one shared pool.

Move `maybeInitFinished()` out of the loop and add assertion for
future.
2013-12-02 15:18:04 -08:00
Yazhong Liu
bd7fa92de4 doc: list execArgv option for child_process.fork() 2013-12-02 13:41:30 -08:00
Gabriel Falkenberg
94c4ba9dd3 doc: change constant to consistent 2013-12-02 13:31:23 -08:00
Sam Roberts
8aac118b69 process: document kill(0), disallow kill(O_RDWR)
The null signal test existed, but only tested the case where the target
process existed, not when it did not exist.

Also clarified that SIGUSR1 is reserved by Node.js only for receiveing,
its not at all reserved when sending a signal with kill().

kill(pid, 'O_RDWR'), or any other node constant, "worked". I fixed this
by also checking for 'SIG'. The same as done in the isSignal() function.
Now the signal names supported by process.kill() are the same as those
supported by process.on().
2013-12-02 10:41:37 -08:00
Fedor Indutny
9b8fcff435 tls: reset NPN callbacks after SNI
SNI callback selects a new SSL_CTX for the connection, which doesn't
have NPN callbacks set up.
2013-12-02 14:48:14 +04:00
Timothy J Fontaine
6877e64fa8 build: include postmortem symbols on linux
Previously we were building the symbols, but the linker was garbage
collecting the symbols because they weren't used. Inform the linker
that we want to keep all symbols from v8 around.
2013-12-01 18:57:43 -08:00
Yazhong Liu
fcfaa392ae doc: net: fix typo in example code 2013-11-30 14:05:45 +01:00
Michael Ridgway
a32b8787a4 doc: http: document ServerResponse 'finish' event 2013-11-28 22:35:25 +01:00
Nikolai Vavilov
207a3e10f8 doc: http: properly document callback argument 2013-11-28 22:31:11 +01:00
Ben Noordhuis
658aeb2ca0 stream_wrap: don't call Number::New()
Replace call to Number::New() with a call to Integer::NewFromUnsigned().

Profiling a Real World(TM) application with perf(1) suggests that the
conversion of its argument from integer to double is disproportionally
costly: over 60% of CPU cycles accountable to WriteStringImpl() are
attributable to the conversion.

After changing it to Integer::NewFromUnsigned(), WriteStringImpl()
has dropped from the 'most costly functions' top ten altogether.
2013-11-27 03:53:45 +01:00
isaacs
90655a998e blog: npm outage postmortem 2013-11-26 07:27:59 -08:00
Linus Unnebäck
953d7184ec doc: clarify child_process error behaviour
Clarify that an 'error' event may or may not be followed by an 'exit'
event and that it's not safe to make assumptions either way.
2013-11-23 15:46:50 +01:00
Jeremy Martin
71aabedad4 events: fix TypeError in removeAllListeners
Check that `listeners` is actually an array before trying to manipulate it
because it won't be if no regular event listeners have been registered yet
but there are 'removeListener' event listeners.
2013-11-22 17:42:34 +01:00
Timothy J Fontaine
a34bbaf31b blog: Post for v0.11.9 2013-11-20 16:45:27 -08:00
isaacs
c1452f4c6f npm: Upgrade to v1.3.15 2013-11-20 11:08:52 -08:00
Fedor Indutny
88dc1fcb62 crypto: randomBytes is non-blocking
Add NOTE section in documentation, mentioning that `randomBytes` won't
block when entropy sources are drained.

fix #6372
2013-11-19 13:15:50 +04:00
Fedor Indutny
fce0eb416b events: do not accept NaN in setMaxListeners 2013-11-19 13:14:01 +04:00
Fedor Indutny
5885f464f0 net: fix new net.Socket documentation
`Socket` no longer accepts `type` option, and also accepts `readable`,
`writable` options.

fix #6541
2013-11-19 12:50:16 +04:00
Fedor Indutny
5ce50ece16 dgram: fix abort when getting fd of closed dgram
v8's `messages.js` file's `CallSiteGetMethodName` is running through all
object properties and getter to figure out method name of function that
appears in stack trace. This run-through will also read `fd` property of
`UDPWrap` instance's javascript object, making `UNWRAP()` fail.

As a simple alternative to the test case above, one could just keep
reference to the dgram handle and try accessing `handle.fd` after it has
been fully closed.

fix #6536
2013-11-19 12:44:06 +04:00
Ben Noordhuis
1394d5856b doc: add nodejs.vn to community page
Node.js.  It's not just for SF hipsters anymore.
2013-11-15 16:29:30 +01:00
Ben Noordhuis
a763db8fc0 doc: sort community page links alphabetically
This commit introduces some long lines but it's HTML so it's okay.
2013-11-15 16:24:47 +01:00
Fedor Indutny
65b127572f tls: handle ssl.start() errors 2013-11-13 17:09:25 +04:00
Tim Wood
c9d93f3431 events: don't call once twice
Emitting an event within a `EventEmitter#once` callback of the same
event name will cause subsequent `EventEmitter#once` listeners of the
same name to be called multiple times.

    var emitter = new EventEmitter();

    emitter.once('e', function() {
      emitter.emit('e');
      console.log(1);
    });

    emitter.once('e', function() {
      console.log(2);
    });

    emitter.emit('e');

    // Output
    // 2
    // 1
    // 2

Fix the issue, by calling the listener method only if it was not
already called.
2013-11-13 03:21:04 +04:00
Timothy J Fontaine
ac9cf00252 blog: Post for v0.10.22 2013-11-12 12:53:45 -08:00
Timothy J Fontaine
9142dc676f Now working on 0.10.23 2013-11-12 12:53:45 -08:00
Timothy J Fontaine
36f2bf22b5 Merge branch 'v0.10.22-release' into v0.10 2013-11-12 12:53:28 -08:00
Timothy J Fontaine
cbff8f091c 2013.11.12, Version 0.10.22 (Stable)
* npm: Upgrade to 1.3.14

* uv: Upgrade to v0.10.19

* child_process: don't assert on stale file descriptor events (Fedor Indutny)

* darwin: Fix "Not Responding" in Mavericks activity monitor (Fedor Indutny)

* debugger: Fix bug in sb() with unnamed script (Maxim Bogushevich)

* repl: do not insert duplicates into completions (Maciej Małecki)

* src: Fix memory leak on closed handles (Timothy J Fontaine)

* tls: prevent stalls by using read(0) (Fedor Indutny)

* v8: use correct timezone information on Solaris (Maciej Małecki)
2013-11-12 12:22:12 -08:00
Timothy J Fontaine
16934d9210 src: add HandleScope in HandleWrap::OnClose
Fixes a 4 byte leak on handles closing. AKA The Walmart leak.

MakeCallback doesn't have a HandleScope. That means the callers scope
will retain ownership of created handles from MakeCallback and related.
There is by default a wrapping HandleScope before uv_run, if the caller
doesn't have a HandleScope on the stack the global will take ownership
which won't be reaped until the uv loop exits.

If a uv callback is fired, and there is no enclosing HandleScope in the
cb, you will appear to leak 4-bytes for every invocation. Take heed.

cc @hueniverse
2013-11-12 11:23:19 -08:00
Timothy J Fontaine
ac799ba0af uv: Upgrade to v0.10.19 2013-11-12 10:57:57 -08:00
yangguo@chromium.org
007393a09d v8: use correct timezone information on Solaris
`timezone` variable contains the difference, in seconds, between UTC and
local standard time (see `man 3 localtime` on Solaris).

Call to `tzset` is required to apply contents of `TZ` variable to
`timezone` variable.

BUG=v8:2064

Review URL: https://chromiumcodereview.appspot.com/10967066
Patch from Maciej Małecki <me@mmalecki.com>.

This is a back-port of upstream commit r12802 and a forward port of
commit 9fa953d from the v0.8 branch.  V8 3.22 in the master branch
contains the patch so no further forward-porting is necessary.
2013-11-12 15:15:32 +01:00
Maciej Małecki
568072ceae repl: do not insert duplicates into completions
Fix invalid `hasOwnProperty` function usage.

For example, before in the REPL:

```
> Ar<Tab>
Array

Array        ArrayBuffer
```

Now:

```
> Ar<Tab>
Array

ArrayBuffer
```

Fixes #6255.
Closes #6498.
2013-11-11 15:45:09 -08:00
Timothy J Fontaine
2010985354 gyp: update to bebdcea 2013-11-10 15:15:34 -08:00
Ben Noordhuis
3dcc9b93e1 v8: unbreak make native build
The security fix from commit 6b92a713 also back-ported the test case.
Said test case relies on API that is only available in newer versions
of V8 and, as a result, broke the `make native` and `make <arch.mode>`
builds.  This commit reverts that part of the back-port.  Fixes the
following build error:

  ../test/cctest/test-api.cc: In function ‘void TestRegress260106()’:
  ../test/cctest/test-api.cc:17712:34: error: ‘class v8::Context’ has
  no member named ‘GetIsolate’
2013-11-09 22:27:22 +01:00
Fedor Indutny
ac2263b77f tls: prevent stalls by using read(0)
Do not `.push()` the same data as just passed to `.ondata()`, it
may be read by 'data' event listeners.

fix #6277
2013-11-09 02:07:36 +04:00
isaacs
8f221bc43d npm: Upgrade to 1.3.14 2013-11-08 13:41:24 -08:00
Fedor Indutny
0be5a94c56 doc: encoding is ignored if input is a Buffer
NOTE: it wasn't in 0.8

fixes #6386
2013-11-07 11:02:19 -08:00
isaacs
849c92fec7 doc: Correct and add several items
Several names/urls were out of date, and some really
awesome stuff was missing.
2013-10-31 13:36:00 -07:00
Sam Roberts
155df9ca76 doc: document node signal handling
Partly lifted from uv.h, partly from observation of node.cc.
2013-10-31 21:19:04 +01:00
Timothy J Fontaine
9f7f9d1240 blog: Post for v0.11.8 2013-10-30 09:09:04 -07:00
Ben Noordhuis
0c5981b226 doc: dgram: reword dgram.Socket#send() docs
Make it clear that the address argument is not really optional and fix
some Engrish and long lines while we're here.

Fixes #6433.
2013-10-29 10:32:15 +01:00
isaacs
4b5e6a38df npm@1.3.13 2013-10-28 14:10:47 -07:00
Phillip Alexander
977c54adb5 doc: fs: clarify fs.symlink Windows specific args 2013-10-27 21:02:19 +01:00
Ryan Graham
5ac6f4de13 doc: improve module documentation
Expands on when to use module.exports vs. exports. This is a recurring
question on mailing list and continues to confuse new devs.
2013-10-27 11:47:11 +01:00
Sam Roberts
a60f67192f doc: fix missing backtick in 2e16037 2013-10-25 23:40:46 +02:00
Brian White
21265e20d3 doc: streams: document default objectMode setting 2013-10-25 10:33:22 -07:00
Maxim Bogushevich
9c6e06bed3 debugger: Fix bug in sb() with unnamed script
setBreakpoint() cause error when unnamed script is loaded
2013-10-25 13:17:35 +04:00
isaacs
f6f176e108 npm@1.3.12 2013-10-24 09:22:13 -07:00
Ben Noordhuis
808a968409 build: fix test-gc weakref build rule
Make the build rule depend on the build artifact (weakref.node) itself
rather than the directory it's built in.  Depending on the directory
means that a build failure won't trigger a rebuild on the next
invocation because the directory's timestamp has been updated.

This is a back-port of commit 1189571 from the master branch that
hopefully fixes the following CI error:

    executing:  make test/gc/node_modules/weak/build/
    make: *** No rule to make target `test/gc/node_modules/weak/build/'.
    Command exited with non-zero: make test/gc/node_modules/weak/build/
    Build step 'Execute NodeJS script' marked build as failure
2013-10-24 16:31:31 +02:00
Zarko Stankovic
eb291de00e doc: add nodejs.rs to the community page 2013-10-24 16:17:56 +02:00
Ben Noordhuis
91a0e52c03 src: IsInt64() should return bool, not int 2013-10-23 13:26:25 +02:00
isaacs
97813ae58d blog: HTTP server DoS vulnerability details
CVE-2013-4450
2013-10-22 10:56:03 -07:00
Timothy J Fontaine
028e524bce blog: Post for v0.10.21 2013-10-18 15:46:02 -07:00
Timothy J Fontaine
2649ae8395 blog: Post for v0.8.26 2013-10-18 15:43:55 -07:00
Timothy J Fontaine
85b2aaea3d Now working on 0.10.22 2013-10-18 15:40:32 -07:00
Timothy J Fontaine
7940833773 Merge branch 'v0.10.21-release' into v0.10 2013-10-18 15:39:56 -07:00
Timothy J Fontaine
e2da042844 2013.10.18, Version 0.10.21 (Stable)
* uv: Upgrade to v0.10.18

* crypto: clear errors from verify failure (Timothy J Fontaine)

* dtrace: interpret two byte strings (Dave Pacheco)

* fs: fix fs.truncate() file content zeroing bug (Ben Noordhuis)

* http: provide backpressure for pipeline flood (isaacs)

* tls: fix premature connection termination (Ben Noordhuis)
2013-10-18 14:26:27 -07:00
Timothy J Fontaine
5e41c022af crypto: clear errors from verify failure
OpenSSL will push errors onto the stack when a verify fails, which can
disrupt TLS and other routines if we don't clear the error stack

Fixes #6304
2013-10-18 14:14:21 -07:00
Timothy J Fontaine
8fc48bcf4c uv: Upgrade to v0.10.18 2013-10-18 13:52:15 -07:00
isaacs
b97c28f59e http: provide backpressure for pipeline flood
If a client sends a lot more pipelined requests than we can handle, then
we need to provide backpressure so that the client knows to back off.
Do this by pausing both the stream and the parser itself when the
responses are not being read by the downstream client.

Backport of 085dd30
2013-10-16 17:12:34 -07:00
Timothy J Fontaine
f051b8919f http_parser: expose pause/resume method for parser 2013-10-16 17:12:34 -07:00
Sam Roberts
2e16037201 doc: cluster documentation cleanup and corrections
- fixed some incomprehensible wording ("event assigned to..."?)
- removed undocumented and unnecessary process properties from example
- corrected the docs on the default for the exec setting
- described when workers are removed from cluster.workers
- described addressType, which was documented as existing, but not what
  values it might have
- spell out more clearly the limitations of setupMaster
- describe disconnect in sufficient detail that why a child does or does
  not exit can be understood
- clarify which cluster functions and events are available on process or
  just on the worker, as well as which are not available in children,
- don't describe events as the same, when they have receive different
  arguments
- fix misleading disconnect example: since disconnect already calls
  close on all servers, doing it again in the example is a no-op, not
  the "force close" it was claimed to be
- document the error event, not catching it will kill your node
- describe suicide better, it is important, and a bit unintuitive
  (process.exit() is not suicide?)
- use worker consistently throughout, instead of child.
2013-10-16 15:10:13 -07:00
Sam Roberts
ed186c971c doc: child_process corrections and cleanups
- Make explicit that .disconnected is set before the disconnect event,
  and it is not allowed to send messages after calling .disconnect(),
  even while waiting for a delayed disconect event.
- Remove obsolete claim that explicit exit is required
- Describe silent: in the options for fork()
- Describe .connected as the property it is, not just as an aside in
  the disconnect() method
2013-10-16 15:10:13 -07:00
Ben Noordhuis
5bc5210b92 doc: http: reword IncomingMessage 'close' event
The bit that says "before response.end() was called or able to flush"
doesn't apply to incoming streams.

Fixes #6359.
2013-10-16 12:56:13 +02:00
Ben Noordhuis
5ef03bc3ee doc: http: add cross-links for easier clicking
Make it a little easier to navigate the http module documentation by
turning class names and methods into links to the appropriate section.
2013-10-16 12:56:03 +02:00
Ben Noordhuis
9a3a0ccc50 doc: expand os.loadavg() section
Add a short explanation of what the load average is and why it's
unavailable on Windows.

Also sneak in a fix for a typo that I introduced in commit 56c5806.
2013-10-15 10:17:23 +02:00
Ben Noordhuis
56c5806da3 doc: document os.loadavg() behavior on windows
The load average is a very UNIX-y concept.  That's why os.loadavg()
always returns zeros on Windows.  Mention that in the documentation.
2013-10-14 12:14:51 +02:00
Dave Pacheco
720675e7db test: use proper findjsobjects output format
Closes #6329
2013-10-10 15:45:25 -07:00
Ben Noordhuis
ff1efdd6ee doc: net: remove bad net.Server description
net.Server is not an instance of net.Socket so don't say it is.
2013-10-10 14:34:16 +02:00
Ben Noordhuis
51cdce8322 doc: addon: fix object instantiation examples
* Extend examples to show how to handle non-constructor invocation in
  constructor callback functions.

* Fix up examples to initialize member variables at object construction.

* Fix up a few naming inconsistencies.

Fixes #5701.
2013-10-10 14:09:39 +02:00
isaacs
9c65387673 blog: Remove wp-to-markdown script 2013-10-09 14:00:32 -07:00
Ben Noordhuis
9777890f5d tls: fix premature connection termination
Destroying the TLS session implies destroying the underlying socket but
before this commit, that was done with net.Socket#destroy() rather than
net.Socket#destroySoon().  The former closes the connection right away,
even when there is still data to write.  In other words, sometimes the
final TLS record got truncated.

Fixes #6107.
2013-10-09 19:25:47 +02:00
Dave Pacheco
98c57c7c07 dtrace: backport two byte string fix
This is a partial backport of 5921158

Re #6309
Closes #6319
2013-10-09 08:49:39 -07:00
Ben Noordhuis
b011811a9f fs: fix fs.truncate() file content zeroing bug
fs.truncate() and its synchronous sibling are implemented in terms of
open() + ftruncate().  Unfortunately, it opened the target file with
mode 'w' a.k.a. 'write-only and create or truncate at open'.

The subsequent call to ftruncate() then moved the end-of-file pointer
from zero to the requested offset with the net result of a file that's
neatly truncated at the right offset and filled with zero bytes only.

This bug was introduced in commit 168a5557 but in fairness, before that
commit fs.truncate() worked like fs.ftruncate() so it seems we've never
had a working fs.truncate() until now.

Fixes #6233.
2013-10-08 11:35:12 +02:00
Ben Noordhuis
d97ea06d88 doc: add warning to fs.exists() documentation
Warn against the open-if-exists anti-pattern, it's susceptible to
race conditions.
2013-10-05 14:54:57 +02:00
Ben Noordhuis
b7f36e187d doc: link to pre-built binaries, add install note
lLnk to http://nodejs.org/download/ and add a short primer on how to
extract the tarballs.

Fixes #6292.
2013-10-01 08:37:32 +02:00
Timothy J Fontaine
a63079f34c blog: Post for v0.10.20 2013-09-30 15:06:14 -07:00
Timothy J Fontaine
d537992d57 Now working on 0.10.21 2013-09-30 15:06:14 -07:00
Timothy J Fontaine
451497c81e Merge branch 'v0.10.20-release' into v0.10 2013-09-30 15:06:02 -07:00
Timothy J Fontaine
d7234c8d50 2013.09.30, Version 0.10.20 (Stable)
* tls: fix sporadic hang and partial reads (Fedor Indutny)
  - fixes "npm ERR! cb() never called!"
2013-09-30 13:52:48 -07:00
Ben Noordhuis
994ce4c99f src: turn uv_pipe_open() failures into exceptions
uv_pipe_open() is unlikely to fail but when it does, the failure should
not be quietly ignored.  Raise the error as an exception.

See joyent/libuv#941.
2013-09-28 10:35:57 +02:00
Fedor Indutny
671b5be6e9 tls: fix sporadic hang and partial reads
Do not decrement size in read loop, its used later, when comparing to
`bytesRead`.

fix #6270

NOTE: Original patch contributed by @roadrunner2
2013-09-27 23:47:13 +04:00
Timothy J Fontaine
cfa03ad2e3 blog: add missing shasums for v0.10.19 release 2013-09-24 15:16:44 -07:00
Timothy J Fontaine
9135c7fea8 blog: Post for v0.10.19 2013-09-24 15:10:22 -07:00
Timothy J Fontaine
093efafce3 Now working on 0.10.20 2013-09-24 15:10:22 -07:00
Timothy J Fontaine
cb150406c8 Merge branch 'v0.10.19-release' into v0.10 2013-09-24 15:10:10 -07:00
Timothy J Fontaine
6b5e6a5a3e 2013.09.24, Version 0.10.19 (Stable)
* uv: Upgrade to v0.10.17

* npm: upgrade to 1.3.11

* readline: handle input starting with control chars (Eric Schrock)

* configure: add mips-float-abi (soft, hard) option (Andrei Sedoi)

* stream: objectMode transforms allow falsey values (isaacs)

* tls: prevent duplicate values returned from read (Nathan Rajlich)

* tls: NPN protocols are now local to connections (Fedor Indutny)
2013-09-24 14:10:33 -07:00
Timothy J Fontaine
55546f55d4 uv: Upgrade to v0.10.17 2013-09-24 13:46:19 -07:00
Eric Schrock
35ae696822 readline: handle input starting with control chars
Handle control characters only when there is a single byte in the
stream, otherwise fall through to the standard multibyte handling.
2013-09-23 14:22:37 -07:00
Ben Noordhuis
7c554a5cd0 doc: document reserved status of SIGUSR1
Fixes #1212.
2013-09-19 12:31:52 +02:00
Nathan Rajlich
5bda2bed37 doc: fix typos in the tls NPNProtocols option 2013-09-16 13:57:34 -07:00
Nathan Rajlich
afabdf0e15 doc: specify the format of the ca tls option 2013-09-16 13:57:00 -07:00
Nathan Rajlich
7196742852 tls: don't push() incoming data when ondata is set
Otherwise the data ends up "on the wire" twice, and
switching between consuming the stream using `ondata`
vs. `read()` would yield duplicate data, which was bad.
2013-09-13 10:08:35 -07:00
Ben Noordhuis
9fad8e5dc4 doc: fix blog link in blog posts and README
Apparently Joyent decommissioned joyeur.com but at least they saved the
contents of the blog.  Update the links in the README and the nodejs.org
blog posts.

Hat tip to Eugen Pirogoff (@eugenpirogoff) for pointing it out.

Fixes #6224.
2013-09-13 14:55:08 +02:00
Fedor Indutny
1c3863abfd tls: fix setting NPN protocols
The NPN protocols was set on `require('tls')` or `global` object instead
of being a local property. This fact lead to strange persistence of NPN
protocols, and sometimes incorrect protocol selection (when no NPN
protocols were passed in client options).

fix #6168
2013-09-09 18:18:05 +04:00
Andrei Sedoi
3546825b14 configure: add mips-float-abi (soft, hard) option 2013-09-07 22:25:50 +02:00
isaacs
ebeae2df51 npm: upgrade to 1.3.11 2013-09-07 14:31:04 -05:00
isaacs
1be09dfc25 npm: upgrade to v1.3.10 2013-09-05 17:13:50 -07:00
isaacs
1da7bcc22c stream: objectMode transforms allow falsey values
Closes #6183
2013-09-05 13:19:23 -07:00
Bert Belder
6301613ff5 uv: upgrade to v0.10.16 2013-09-05 16:50:47 +02:00
Timothy J Fontaine
8b05206665 blog: Post for v0.11.7 2013-09-04 15:27:06 -07:00
Timothy J Fontaine
9c19c1e19c blog: Post for v0.10.18 2013-09-04 11:25:19 -07:00
Timothy J Fontaine
65ed79a6dc Now working on 0.10.19 2013-09-04 11:25:19 -07:00
Timothy J Fontaine
86d881f888 Merge branch 'v0.10.18-release' into v0.10 2013-09-04 11:25:04 -07:00
Timothy J Fontaine
67a1f0c52e 2013.09.04, Version 0.10.18 (Stable)
* uv: Upgrade to v0.10.15

* stream: Don't crash on unset _events property (isaacs)

* stream: Pass 'buffer' encoding with decoded writable chunks (isaacs)
2013-09-04 10:51:53 -07:00
Kyle Robinson Young
95794641d2 doc: fix writable.write link 2013-09-04 10:25:51 +02:00
isaacs
00a1d3633c benchmark: Fix execArgv handling
Bug in 01f3b46 causes the same benchmark to be run repeatedly.

Not so useful for the compare scripts.
2013-08-31 17:58:17 -07:00
isaacs
01f3b468a9 benchmark: Support passing v8 flags to benchmarks
The better to test --use-strict effects on performance.

(Spoiler: it has no measurable effect on performance.)
2013-08-31 10:36:44 -07:00
isaacs
fbb963b5d5 stream: check _events before _events.error
This fixes the regression introduced by 5458079, which breaks the
net/net-pipe benchmark script.

Closes #6145
2013-08-28 09:35:39 -07:00
isaacs
02eb9c834a doc: Adjust util stability index to 'API Frozen'
Closes #6087
2013-08-27 19:52:49 -07:00
isaacs
a3da3e7312 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
2013-08-27 14:53:06 -07:00
Bert Belder
5508236c49 uv: update to v0.10.15 2013-08-23 19:02:14 +02:00
Timothy J Fontaine
3f1dba18b2 tools: script release steps after jenkins build 2013-08-21 16:59:15 -07:00
Timothy J Fontaine
92e4375173 tools: script to report [un]stable build 2013-08-21 16:55:27 -07:00
Timothy J Fontaine
1d27987dab blog: Post for v0.10.17 2013-08-21 16:38:30 -07:00
Timothy J Fontaine
3c66b15789 Now working on 0.10.18 2013-08-21 16:37:43 -07:00
Timothy J Fontaine
fcf180327b Merge branch 'v0.10.17-release' into v0.10 2013-08-21 16:37:31 -07:00
Timothy J Fontaine
469a4a5091 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)
2013-08-21 15:00:56 -07:00
Timothy J Fontaine
e445fbda1f uv: Upgrade v0.10.14 2013-08-21 14:44:20 -07:00
Timothy J Fontaine
985695e4d6 blog: v0.11.6 2013-08-21 14:26:32 -07:00
isaacs
8a9434c4ef doc: Mention python dep in downloads page
Closes #3604
2013-08-21 11:11:02 -07:00
Ben Noordhuis
8d42c6344b 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.
2013-08-21 03:40:43 +02:00
Fedor Indutny
af6a2339c5 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
2013-08-21 16:15:08 +04:00
Gil Pedersen
e04c8a8ee4 fs: use correct self reference for autoClose test 2013-08-20 17:10:18 +02:00
isaacs
26a8c0c6b8 doc: Minor typos in dgram doc
a/an usage.  Thanks @KenanSulayman
2013-08-19 17:55:58 -07:00
Duan Yao
9456cf8fe2 doc: Add callback parameter to dgram socket.bind()
Also, describe more details of bind().
2013-08-19 16:33:38 -07:00
ChrisWren
2385fbbc3a doc: fixed syntax error in stream.Transform 2013-08-19 16:10:05 -07:00
Edward Hutchins
31a27ca72d Added documentation for process.execArgv 2013-08-19 15:53:09 -07:00
Eivind Uggedal
732f8b9641 doc: add missing word in Transform stream intro 2013-08-19 15:45:35 -07:00
isaacs
545807918e 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.
2013-08-19 09:26:49 -07:00
Ben Noordhuis
0c2960ef4a 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.
2013-08-17 17:11:02 +02:00
Daniel Chatfield
5453619eb2 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.
2013-08-17 15:35:09 +02:00
isaacs
a66d2400a0 blog: v0.10.16 2013-08-16 12:47:54 -07:00
isaacs
0e043528a1 Now working on v0.10.17 2013-08-16 12:47:29 -07:00
isaacs
e679739b63 Merge branch 'v0.10.16-release' into v0.10 2013-08-16 12:46:56 -07:00
isaacs
50b4c905a4 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)
2013-08-16 08:32:38 -07:00
isaacs
5abdef790c npm: Upgrade to 1.3.8 2013-08-16 08:19:31 -07:00
Ben Noordhuis
f55aca6515 crypto: fix memory leak in randomBytes() error path
This is the conceptual back-port of commit ec54873 from the master
branch.
2013-08-16 16:50:01 +02:00
isaacs
255650f4d9 http: Handle hex/base64 encodings properly
This is a backport of 6d3d60aced39d59eaa5e705b7d822c227d0d3dae for
v0.10.
2013-08-15 15:01:28 -07:00
Timothy J Fontaine
b1acb2ebd6 blog: Post for v0.11.5 2013-08-06 17:14:53 -07:00
Eran Hammer
23d92ec88e stream: Fix double pipe error emit
If an error listener is added to a stream using once() before it is
piped, it is invoked and removed during pipe() but before pipe() sees it
which causes it to be emitted again.

Fixes #4155 #4978
2013-08-06 08:15:13 -07:00
isaacs
366baedfd8 doc: Update LICENSE for npm's Artistic 2.0 2013-08-05 13:56:05 -07:00
mstarzinger@chromium.org
6b92a71321 v8: back-port fix for CVE-2013-2882
Quoting the CVE:

    Google V8, as used in Google Chrome before 28.0.1500.95, allows
    remote attackers to cause a denial of service or possibly have
    unspecified other impact via vectors that leverage "type confusion."

Likely has zero impact on node.js because it only runs local, trusted
code but let's apply it anyway.

This is a back-port of upstream commit r15665. Original commit log:

    Use internal array as API function cache.

    R=yangguo@chromium.org
    BUG=chromium:260106
    TEST=cctest/test-api/Regress260106

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

Fixes #5973.
2013-08-05 18:17:24 +02:00
Forrest L Norvell
231092d236 doc: document domain.enter() and domain.exit()
Adds the documentation requested in #5017.
2013-08-05 13:11:38 +02:00
Sam Roberts
6a7be99703 doc: fs.open, fix flag/mode confusion, etc.
Flags and modes aren't the same, symlinks are followed in all of the
path but the last component, docs should say something about what the
mode argument is for and when its used, fs.openSync should point to the
function that contains the docs for its args, as fs.writeSync does.
2013-08-05 12:26:09 +02:00
isaacs
bea9dfa14c npm: Upgrade to 1.3.7 2013-08-02 14:55:22 -07:00
Ben Noordhuis
9e1eb361e8 test: future-proof simple/test-event-emitter-memory-leak
Run the garbage collector before running the actual test. It doesn't
matter now but if in the future something in node.js core creates a lot
of reclaimable garbage, that will break the test's expectation.
2013-08-01 16:14:14 +02:00
Ben Noordhuis
98db7babcc test: fix pummel/test-net-connect-memleak
* Run the garbage collector before creating the big array. It doesn't
  matter now but if in the future something in node.js core creates
  a lot of reclaimable garbage, that will break the test's expectation.

* The first RSS check was being done too late. The garbage collector
  might have run before the check, throwing off the 'reclaimed memory'
  calculation.

* Due to changes in how V8 represents the big array internally, the
  actual memory usage is just below 256 MB on x64. Update the test's
  expectation.
2013-08-01 16:07:46 +02:00
Ben Noordhuis
fc6f8a6943 events: fix memory leak, don't leak event names
Before this commit, events were set to undefined rather than deleted
from the EventEmitter's backing dictionary for performance reasons:
`delete obj.key` causes a transition of the dictionary's hidden class
and that can be costly.

Unfortunately, that introduces a memory leak when many events are added
and then removed again. The strings containing the event names are never
reclaimed by the garbage collector because they remain part of the
dictionary.

That's why this commit makes EventEmitter delete events again. This
effectively reverts commit 0397223.

Fixes #5970.
2013-08-01 14:52:06 +02:00
Ben Noordhuis
3398cce193 http: improve chunked res.write(buf) performance
Avoid a costly buffer-to-string operation. Instead, allocate a new
buffer, copy the chunk header and data into it and send that.

The speed difference is negligible on small payloads but it really
shines with larger (10+ kB) chunks. benchmark/http/end-vs-write-end
with 64 kB chunks gives 45-50% higher throughput. With 1 MB chunks,
the difference is a staggering 590%.

Of course, YMMV will vary with real workloads and networks but this
commit should have a positive impact on CPU and memory consumption.

Big kudos to Wyatt Preul (@wpreul) for reporting the issue and providing
the initial patch.

Fixes #5941 and #5944.
2013-07-31 13:23:06 +02:00
Wyatt Preul
6359e017ac docs: Warning about consuming response 2013-07-30 15:06:20 -07:00
Ben Noordhuis
6327d67be3 crypto: fix assert() on malformed hex input
Use the StringBytes::IsValidString() function introduced in commit
dce26cc to ensure that the input string meets the expectations of the
other StringBytes functions before processing it further.

Fixes the following assertion:

    Assertion failed: (str->Length() % 2 == 0 && "invalid hex string
    length"), function StorageSize, file ../../src/string_bytes.cc,
    line 301.

Fixes #5725.
2013-07-30 14:34:19 +02:00
Ben Noordhuis
dce26ccea1 string_bytes: add StringBytes::IsValidString()
Performs a quick, non-exhaustive check on the input string to see if
it's compatible with the specified string encoding.

Curently it only checks that hex strings have a length that is a
multiple of two.
2013-07-30 14:32:47 +02:00
Ben Noordhuis
4881a6a9a3 doc: clarify fs.read() offset argument 2013-07-28 00:05:10 +02:00
Andrew Chilton
767c5bf01d doc: add nodejs.geek.nz to the community page 2013-07-27 16:02:05 +02:00
Rod Vagg
df1673202c doc: add nodejs.org.au to community listing 2013-07-27 12:25:59 +02:00
Ben Noordhuis
e4363145ba test: fix simple/test-setproctitle
The title shouldn't be too long; libuv's uv_set_process_title() out of
security considerations no longer overwrites envp, only argv, so the
maximum title length is possibly quite short.

Fixes #5908.
2013-07-25 12:29:20 +02:00
Timothy J Fontaine
180f987147 blog: Post for v0.10.15 2013-07-25 17:03:21 -07:00
Timothy J Fontaine
33267337fa Now working on 0.10.16 2013-07-25 17:03:03 -07:00
Timothy J Fontaine
272525714d Merge branch 'v0.10.15-release' into v0.10 2013-07-25 17:02:38 -07:00
Timothy J Fontaine
2426d65af8 2013.07.25, Version 0.10.15 (Stable)
* src: fix process.getuid() return value (Ben Noordhuis)
2013-07-25 16:26:15 -07:00
Ben Noordhuis
015ec05272 src: fix process.getuid() return value
And process.getgid() too.

Commit ed80638 changed fs.chown() and fs.fchown() to only accept
unsigned integers. Make process.getuid() and process.getgid() follow
suit.

This commit should unbreak npm on OS X - it's hitting the new 'uid must
be an unsigned int' check when installing as e.g. user 'nobody' (which
has an UID of -2 in /etc/passwd or 4294967294 when cast to an uid_t.)

Fixes #5904.
2013-07-26 00:29:03 +02:00
Ben Noordhuis
0de5b831e2 doc: document tls.Server 'secureProtocol' option 2013-07-25 23:21:54 +02:00
Timothy J Fontaine
0256edc43e blog: Post for v0.10.14 2013-07-25 13:54:55 -07:00
Timothy J Fontaine
90c448de23 Now working on 0.10.15 2013-07-25 13:54:16 -07:00
Timothy J Fontaine
e2a598b5f2 Merge branch 'v0.10.14-release' into v0.10 2013-07-25 13:53:45 -07:00
Timothy J Fontaine
fdf57f811f 2013.07.25, Version 0.10.14 (Stable)
* uv: Upgrade to v0.10.13

* npm: Upgrade to v1.3.5

* os: Don't report negative times in cpu info (Ben Noordhuis)

* fs: Handle large UID and GID (Ben Noordhuis)

* url: Fix edge-case when protocol is non-lowercase (Shuan Wang)

* doc: Streams API Doc Rewrite (isaacs)

* node: call MakeDomainCallback in all domain cases (Trevor Norris)

* crypto: fix memory leak in LoadPKCS12 (Fedor Indutny)
2013-07-25 11:49:01 -07:00
Timothy J Fontaine
5c81f41e70 uv: Upgrade to v0.10.13 2013-07-25 10:48:29 -07:00
isaacs
4bf5211820 doc: explicitly set industry logo height 2013-07-24 13:37:20 -07:00
isaacs
ff0de45929 npm: Upgrade to v1.3.5 2013-07-24 13:23:44 -07:00
Ben Noordhuis
e20811a628 src: os: use Number::New() for CPU info
The return values from uv_cpu_info() don't necessarily fit in a 32 bits
signed integer.

Fixes #5732.
2013-07-23 17:12:17 +02:00
Ben Noordhuis
ed806385bf fs: uids and gids must be unsigned ints
Before this commit, fs.chown() and fs.fchown() coerced the uid and gid
arguments to signed integers which is wrong because uid_t and gid_t are
unsigned on most all platforms and IDs that don't fit in a signed
integer do exist.

This commit changes the aforementioned functions to take unsigned ints
instead.  No test because we can't assume the system has [GU]IDs that
large.

This change depends on joyent/libuv@d779eb5.

Fixes #5890.
2013-07-23 13:36:46 +02:00
Ben Noordhuis
14f45ba739 test: move two tests from simple/ to internet/
Fixes #5876.
2013-07-20 12:36:33 +02:00
Ben Noordhuis
e0c4fba0ac doc: events: clarify 'newListener' emitter state
Ditto for the 'removeListener' event.
2013-07-18 20:49:24 +02:00
Shuan Wang
48a4600c56 url: Fix edge-case when protocol is non-lowercase
When using url.parse(), path and pathname usually return '/' when there
is no path available. However when you have a protocol that contains
non-lowercase letters and the input string does not have a trailing
slash, both path and pathname will be undefined.
2013-07-17 15:59:28 -07:00
isaacs
04e0324f6a doc: style the 'type' fields in API docs 2013-07-16 10:49:54 -07:00
isaacs
db5776cf8b doc: Streams API Doc Rewrite
The Streams API doc is now broken up into 3 sections:

1. API for Consumers
2. API for Implementors
3. Details and Extras

This addresses one of the biggest points of confusion for new users who
start to consume streams, and get the impression that they have to do
lots of extra work and implement classes and such, just to get some data
out of a file.
2013-07-16 10:49:54 -07:00
isaacs
e48536f4cd tls: Trivial use_strict fix 2013-07-14 20:08:07 -07:00
Timothy J Fontaine
875dd37a93 blog: v0.11.4 is unstable not stable 2013-07-12 17:05:53 -07:00
Timothy J Fontaine
21dd5f4ea9 blog: v0.11.4 release 2013-07-12 15:12:49 -07:00
isaacs
5e86519199 npm: Upgrade to 1.3.4 2013-07-12 13:14:50 -07:00
isaacs
ff8a4058bf npm: Upgrade to 1.3.3 2013-07-12 08:56:26 -07:00
Trevor Norris
6d91bd3707 node: call MakeDomainCallback in all domain cases
Previously there was no way to pass a Function callback directly to
MakeCallback and support domains. The check has been added so that users
never have to worry about supporting domains while using MakeCallback.
2013-07-10 10:46:48 -07:00
Fedor Indutny
610269295b crypto: fix memory leak in LoadPKCS12
X509_STORE_add_cert increment reference of passed `x509` cert,
`X509_free` must be called to avoid memory leak.

This is a back-port of commit c1db1ec from the master branch.
2013-07-10 10:10:29 +02:00
Ben Noordhuis
8a65df9baa test: fix up indentation, replace tabs with spaces 2013-07-10 09:48:57 +02:00
isaacs
b3b8e74dbf tools: Add next/prev version scripts 2013-07-09 15:58:15 -07:00
Timothy J Fontaine
f1bb5dca85 blog: Post for v0.10.13 2013-07-09 14:29:16 -07:00
Timothy J Fontaine
8a7e2b9da6 Now working v0.10.14 2013-07-09 14:28:37 -07:00
Timothy J Fontaine
8d9897d735 Merge branch 'v0.10.13-release' into v0.10 2013-07-09 14:28:05 -07:00
Timothy J Fontaine
e32660a984 2013.07.09, Version 0.10.13 (Stable)
* uv: Upgrade to v0.10.12

* npm: Upgrade to 1.3.2

* windows: get proper errno (Ben Noordhuis)

* tls: only wait for finish if we haven't seen it (Timothy J Fontaine)

* http: Dump response when request is aborted (isaacs)

* http: use an unref'd timer to fix delay in exit (Peter Rust)

* zlib: level can be negative (Brian White)

* zlib: allow zero values for level and strategy (Brian White)

* buffer: add comment explaining buffer alignment (Ben Noordhuis)

* string_bytes: properly detect 64bit (Timothy J Fontaine)

* src: fix memory leak in UsingDomains() (Ben Noordhuis)
2013-07-09 13:51:24 -07:00
Timothy J Fontaine
5b6464f461 build: use separate env vars for signing 2013-07-09 13:50:45 -07:00
isaacs
8bac8857f5 uv: Upgrade to v0.10.12 2013-07-09 13:20:38 -07:00
isaacs
f5602bda18 npm: Upgrade to 1.3.2 2013-07-09 13:09:02 -07:00
Timothy J Fontaine
91698f77e5 tls: only wait for finish if we haven't seen it
A pooled https agent may get a Connection: close, but never finish
destroying the socket as the prior request had already emitted finish
likely from a pipe.

Since the socket is not marked as destroyed it may get reused by the
agent pool and result in an ECONNRESET.

re: #5712 #5739
2013-07-09 10:55:10 -07:00
Nathan Rajlich
ed5324687e doc: fix bad markdown parsing in list 2013-07-08 11:25:40 -07:00
isaacs
99a7e78e77 http: Dump response when request is aborted
Fixes #5695
2013-07-08 09:20:40 -07:00
Tim Oxley
2d6d46172e doc: remove obsolete spawn() stdio options 2013-07-05 11:56:24 +02:00
Ben Noordhuis
806e300878 src: fix memory leak in UsingDomains()
UsingDomains() assigned process_tickCallback when it had already
been set by MakeCallback() a few frames down the call stack.

Dispose the handle first or we'll retain whatever is in the lexical
closure of the old process._tickCallback function.

Fixes #5795.
2013-07-05 02:20:39 +02:00
Timothy J Fontaine
4c38742dd8 test: fix tls-hello-parser-failure on smartos
Assert that when the client closes it has seen an error, this prevents
the test from timing out.

Also queue a second write in the case that we were able to send the
buffer before the other side closed the connection.
2013-07-01 17:41:38 -07:00
Peter Rust
16b59cbc74 http: use an unref'd timer to fix delay in exit
There was previously up to a second exit delay when exiting node
right after an http request/response, due to the utcDate() function
doing a setTimeout to update the cached date/time.

Fixing this should increase the performance of our http tests.
2013-07-01 16:02:25 -07:00
Brian White
dc3c2d12c8 zlib: level can be negative
This is a back-port of commit e945903 from the master branch.
2013-07-01 19:37:50 +02:00
Brian White
95dcd11dde zlib: allow zero values for level and strategy
This is a back-port of commit c9644fb from the master branch.
2013-07-01 19:37:29 +02:00
Ben Noordhuis
9290385057 doc: vm: update github issues link 2013-06-28 12:31:37 +02:00
Ben Noordhuis
cf6acf2a1a buffer: add comment explaining buffer alignment
Avoids alignment issues (unaligned loads/stores) on ARM. Originally
added in commit 285d8c6.

Fixes #3030.
2013-06-27 03:22:05 +02:00
isaacs
2a8c5ddc46 blog: v0.11.3 release 2013-06-26 17:06:51 -07:00
Ben Noordhuis
c1bf89df2e doc: tls: ECDH ciphers are not supported 2013-06-27 01:37:39 +02:00
Ben Noordhuis
a0b6df080d Revert "configure: fix cross-compilation host_arch_cc()"
Several people have reported cross-compiling build breakage, see e.g.
https://groups.google.com/forum/#!topic/nodejs/k8HzqpqPkJQ

Message-Id: <823c3bd1-e104-4409-86ad-0ab6de936fec@googlegroups.com>
Subject: [nodejs] nodejs 0.10.12 and Angstrom issues

This reverts commit acbdabb74b.
2013-06-25 12:47:24 +02:00
Ben Noordhuis
3fac4157fe doc: fs: synchronize watchFile/unwatchFile warning
One said "if available", the other "if possible". Now they both say
"if possible."
2013-06-24 11:18:24 +02:00
Timothy J Fontaine
a2c4ca09ed string_bytes: properly detect 64bit 2013-06-19 17:16:35 -07:00
Sam Roberts
5fc8efb87d doc: call console module 'console' not 'stdio'
The console module has always been called 'stdio' in the
table-of-contents, but nowhere else, since its name is
'console'. This makes it difficult to find.

This is a back-port of commit 226a20d from the master branch.
2013-06-18 22:50:19 +02:00
isaacs
67cb80158c blog: Release 0.10.12 2013-06-18 11:15:09 -07:00
isaacs
637acb2b34 Now working on 0.10.13 2013-06-18 11:14:57 -07:00
isaacs
59dde81926 Merge branch 'v0.10.12-release' into v0.10 2013-06-18 11:13:26 -07:00
isaacs
a088cf4f93 2013.06.18, Version 0.10.12 (Stable)
* npm: Upgrade to 1.2.32

* readline: make `ctrl + L` clear the screen (Yuan Chuan)

* v8: add setVariableValue debugger command (Ben Noordhuis)

* net: Do not destroy socket mid-write (isaacs)

* v8: fix build for mips32r2 architecture (Andrei Sedoi)

* configure: fix cross-compilation host_arch_cc() (Andrei Sedoi)
2013-06-18 09:50:53 -07:00
isaacs
9195455637 npm: Upgrade to 1.2.32 2013-06-18 09:42:42 -07:00
Yuan Chuan
18574bfaf1 readline: make ctrl + L clear the screen 2013-06-17 15:57:04 +02:00
Ben Noordhuis
41fc46e52f v8: add setVariableValue debugger command
Issue 2399 part 1: In debugger allow modifying local variable values
Issue 2399 part 2: In debugger allow modifying local variable values

Review URL: https://codereview.chromium.org/11415042
Review URL: https://codereview.chromium.org/11412310

This is a back-port of upstream svn commits r13122 and r13202.
2013-06-17 15:24:45 +02:00
isaacs
3c7945bda1 net: Do not destroy socket mid-write
The fix in e0519ace31 is overly zealous,
and can destroy a socket while there are still outstanding writes in
progress.

Closes GH-5688
2013-06-16 19:06:27 -07:00
Ben Noordhuis
10133aaa46 test: add https tls session reuse test
Check that TLS session resumptions work with HTTPS servers.

Regression test for #3901.
2013-06-15 20:35:59 +02:00
isaacs
5613803f8d blog: Add favicon to blog site 2013-06-14 10:26:50 -07:00
isaacs
fc71a63baf doc: Remove unnecessary sh script tags 2013-06-14 10:26:50 -07:00
Andrei Sedoi
cc517497e6 v8: fix build for mips32r2 architecture
This is a floating patch as a backport from v8 3.15.0
Committed: https://code.google.com/p/v8/source/detail?r=12833
2013-06-14 17:48:33 +02:00
Andrei Sedoi
acbdabb74b configure: fix cross-compilation host_arch_cc()
In case of cross-compilation host_arch_cc() function could return
target arch if CC was set to target arch compiler. Host arch
compiler should always be used in this case. This was broken
by commit 707863c.
2013-06-14 16:10:51 +02:00
isaacs
4bca631c1a doc: v0.8.25 changelog entry 2013-06-13 13:22:46 -07:00
isaacs
8765436025 blog: Release v0.8.25 2013-06-13 13:22:07 -07:00
isaacs
fc4b4059ff blog: Release 0.10.11 2013-06-13 11:37:18 -07:00
isaacs
17d00f1657 Now working on 0.10.12 2013-06-13 11:37:04 -07:00
isaacs
b45489af73 Merge branch 'v0.10.11-release' into v0.10 2013-06-13 11:36:41 -07:00
isaacs
d9d5bc4654 2013.06.13, Version 0.10.11 (Stable)
* uv: upgrade to 0.10.11

* npm: Upgrade to 1.2.30

* openssl: add missing configuration pieces for MIPS (Andrei Sedoi)

* Revert "http: remove bodyHead from 'upgrade' events" (isaacs)

* v8: fix pointer arithmetic undefined behavior (Trevor Norris)

* crypto: fix utf8/utf-8 encoding check (Ben Noordhuis)

* net: Fix busy loop on POLLERR|POLLHUP on older linux kernels (Ben Noordhuis, isaacs)
2013-06-13 10:35:30 -07:00
Veres Lajos
9a4e5937ee test: minor typo fixes 2013-06-13 13:33:06 +02:00
Andrei Sedoi
884b25356f openssl: add missing configuration pieces for MIPS 2013-06-13 13:27:58 +02:00
isaacs
e8500274e0 Revert "http: remove bodyHead from 'upgrade' events"
This reverts commit a40133d10c.

Unfortunately, this breaks socket.io.  Even though it's not strictly an
API change, it is too subtle and in too brittle an area of node, to be
done in a stable branch.

Conflicts:
	doc/api/http.markdown
2013-06-12 17:45:30 -07:00
Ben Noordhuis
48476273eb uv: upgrade to 0.10.11 2013-06-12 22:10:39 +02:00
isaacs
49d9ad9d81 npm: Upgrade to 1.2.30 2013-06-12 10:59:44 -07:00
Trevor Norris
5d4ac272c7 v8: fix pointer arithmetic undefined behavior
Clang branch release_33 would optimize out a != NULL check because of
some undefined behavior. This is a floating patch as a backport of that
fix.

Committed: http://code.google.com/p/v8/source/detail?r=13570
2013-06-11 14:39:25 -07:00
Ben Noordhuis
82b3524bce crypto: fix utf8/utf-8 encoding check
Normalize the encoding in getEncoding() before using it. Fixes a
"AssertionError: Cannot change encoding" exception when the caller
mixes "utf8" and "utf-8".

Fixes #5655.
2013-06-11 13:07:24 +02:00
Timothy J Fontaine
f1b878cafa build: add pkgsrc rule 2013-06-06 15:35:59 -07:00
isaacs
4d13fcf481 npm: Upgrade to 1.2.27 2013-06-06 14:44:48 -07:00
isaacs
e0519ace31 net: Destroy when not readable and not writable
This is only relevant for CentOS 6.3 using kernel version 2.6.32.

On other linuxes and darwin, the `read` call gets an ECONNRESET in that
case.  On sunos, the `write` call fails with EPIPE.

However, old CentOS will occasionally send an EOF instead of a
ECONNRESET or EPIPE when the client has been destroyed abruptly.

Make sure we don't keep trying to write or read more in that case.

Fixes #5504

However, there is still the question of what libuv should do when it
gets an EOF.  Apparently in this case, it will continue trying to read,
which is almost certainly the wrong thing to do.

That should be fixed in libuv, even though this works around the issue.
2013-06-05 08:06:35 -07:00
isaacs
6ada73383c Now working on v0.10.11 2013-06-04 14:38:41 -07:00
isaacs
59c8f59171 blog: Release v0.10.10 2013-06-04 14:38:29 -07:00
isaacs
fe0434ce1e Merge branch 'v0.10.10-release' into v0.10 2013-06-04 14:38:10 -07:00
isaacs
25e51c396a 2013.06.04, Version 0.10.10 (Stable)
* uv: Upgrade to 0.10.10

* npm: Upgrade to 1.2.25

* url: Properly parse certain oddly formed urls (isaacs)

* stream: unshift('') is a noop (isaacs)
2013-06-04 12:13:46 -07:00
isaacs
96c30df10c uv: Upgrade to 0.10.10 2013-06-04 12:11:03 -07:00
Ben Noordhuis
414a909d01 url: remove unused global variable 2013-06-04 11:43:42 -07:00
isaacs
f28f67cf75 npm: Upgrade to 1.2.25 2013-06-04 11:42:32 -07:00
isaacs
51226b84cf doc: ChangeLog update for v0.8.24 2013-06-04 11:22:14 -07:00
isaacs
e116ee7ba1 blog: 0.8 is maintenace, not stable 2013-06-04 11:19:10 -07:00
isaacs
0a763e35da blog: Release v0.8.24 2013-06-04 11:12:54 -07:00
isaacs
99fe35c67a blog: Release v0.10.9 2013-06-04 11:12:44 -07:00
isaacs
5dd91b0147 url: Set href to null by default 2013-06-03 16:02:51 -07:00
isaacs
5dc51d4e21 url: Properly parse certain oddly formed urls
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.
2013-06-03 15:56:16 -07:00
isaacs
df6ffc018e stream: unshift('') is a noop
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
2013-06-03 10:50:04 -07:00
isaacs
ce54f4ae50 Now working on v0.10.10 2013-05-30 11:28:07 -07:00
isaacs
8c1a04dbf6 Merge branch 'v0.10.9-release' into v0.10 2013-05-30 11:27:50 -07:00
isaacs
878ffdbe6a 2013.05.30, Version 0.10.9 (Stable)
* 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)
2013-05-30 10:31:07 -07:00
isaacs
c86afa5d2e npm: Upgrade to 1.2.24 2013-05-30 10:19:45 -07:00
Kiyoshi Nomo
36e90da6df doc: remove bufferSize option
`bufferSize` option has been removed in b0f6789.
2013-05-30 15:10:03 +02:00
Brian White
774b28fde7 repl: fix JSON.parse error check
Before this, entering something like:

> JSON.parse('066');

resulted in the "..." prompt instead of displaying the expected
"SyntaxError: Unexpected number"
2013-05-30 14:41:00 +02:00
Fedor Indutny
9ee86b718c tls: proper .destroySoon
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.
2013-05-30 13:50:13 +04:00
Ben Noordhuis
9826b15493 doc: sending dgram handles only works on unix 2013-05-29 16:35:01 +02:00
Daniel G. Taylor
675e85813f https: Add secureProtocol docs
Add `secureProtocol` parameter docs to the https.request method.
2013-05-28 21:43:37 +02:00
Daniel G. Taylor
30cb9fec91 tls: Add secureProtocol docs
Add `secureProtocol` parameter docs to the tls.connect method.
2013-05-28 21:40:52 +02:00
isaacs
f523f7041d uv: Upgrade to v0.10.9 2013-05-28 12:10:14 -07:00
Fedor Indutny
4f14221f03 tls: invoke write cb only after opposite read end
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
2013-05-28 22:27:07 +04:00
Fedor Indutny
fa170dd2b2 tls: ignore .shutdown() syscall error
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()`.
2013-05-28 20:14:44 +04:00
Rafael Henrique Moreira
28f4c15eb4 doc: add link to Brazilian Node community
Add a link to the Brazilian community portal.
2013-05-25 13:30:34 +02:00
Rafael Henrique Moreira
14b10c40ac doc: remove broken links on community page
Links to Node Manual and Node Bits both are broken, so this commit
removes them from the community page.
2013-05-25 13:30:30 +02:00
isaacs
f904d614bf blog: Post for v0.10.8 2013-05-24 15:45:59 -07:00
isaacs
ccb77e1c9d Now working on 0.10.9 2013-05-24 15:45:46 -07:00
isaacs
83a8943036 Merge branch 'v0.10.8-release' into v0.10 2013-05-24 15:44:04 -07:00
isaacs
30d9e9fdd9 2013.05.24, Version 0.10.8 (Stable)
* 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)
2013-05-24 15:06:33 -07:00
isaacs
179aa0a8f2 doc: Minor fixup in http doc re bodyHead 2013-05-24 15:06:12 -07:00
Fedor Indutny
f7ff8b4454 tls: retry writing after hello parse error
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.
2013-05-24 15:03:48 -07:00
isaacs
074e823a81 npm: Upgrade to 1.2.23 2013-05-24 14:41:43 -07:00
isaacs
1314c4aeeb uv: upgrade to 0.10.8 2013-05-24 14:41:00 -07:00
Nathan Zadoks
a40133d10c http: remove bodyHead from 'upgrade' events
Streams2 makes this unnecessary.
An empty buffer is provided for compatibility.
2013-05-24 14:34:32 -07:00
Timothy J Fontaine
007e63bb13 buffer: special case empty string writes
Prior to 119354f we specifically handled passing a zero length string
to write on a buffer, restore that functionality.
2013-05-23 16:32:04 -07:00
isaacs
a2f93cf77a http: Return true on empty writes, not false
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.
2013-05-23 15:21:17 -07:00
Timothy J Fontaine
e2385839d7 v8: re-apply floating patches 2013-05-23 14:00:20 -07:00
Timothy J Fontaine
dbe142c4ed v8: fix GetLocalizedMessage usage
As is the backport of the abort on uncaught exception wouldn't compile
because we it was passing in `this` when it was unnecessary.
2013-05-23 14:00:19 -07:00
Timothy J Fontaine
279361b277 v8: update to 3.14.5.9 2013-05-23 13:39:12 -07:00
Ben Noordhuis
fda2b319dc http: save roundtrips, convert buffers to strings
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.
2013-05-23 02:13:26 +02:00
Ben Noordhuis
89dcf22526 doc: the build requires gcc 4.2 or newer 2013-05-22 13:47:29 +02:00
Nathan Rajlich
99b737bd60 configure: respect the --dest-os flag consistently
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.
2013-05-21 18:38:11 -07:00
Timothy J Fontaine
a846d9388c net: use timers._unrefActive for internal timeouts 2013-05-21 16:40:31 -07:00
Timothy J Fontaine
f46ad012bc timers: internal unref'd timer for api timeouts
When an internal api needs a timeout, they should use
timers._unrefActive since that won't hold the loop open. This solves
the problem where you might have unref'd the socket handle but the
timeout for the socket was still active.
2013-05-21 16:40:30 -07:00
Trevor Norris
2cad7a69ce buffer: throw when writing beyond buffer
Previously one could write anywhere in a buffer pool if they accidently
got their offset wrong. Mainly because the cc level checks only test
against the parent slow buffer and not against the js object properties.
So now we check to make sure values won't go beyond bounds without
letting the dev know.
2013-05-20 15:23:23 -07:00
isaacs
3a2b5030ae crypto: Clear error after DiffieHellman key errors
Fixes #5499
2013-05-20 14:27:32 -07:00
Trevor Norris
d5d5170c35 string_bytes: strip padding from base64 strings
Because of variations in different base64 implementation, it's been
decided to strip all padding from the end of a base64 string and
calculate its size from that.
2013-05-20 13:40:58 -07:00
isaacs
f57ff787aa src: Remove superfluous static_cast 2013-05-17 16:58:05 -07:00
isaacs
77de207089 blog: Release 0.10.7 2013-05-17 14:38:02 -07:00
isaacs
bae6d089a4 Now working on 0.10.8 2013-05-17 14:37:44 -07:00
isaacs
cc7ec075e9 Merge branch 'v0.10.7-release' into v0.10 2013-05-17 14:37:28 -07:00
isaacs
d2fdae197a 2013.05.17, Version 0.10.7 (Stable)
* uv: upgrade to v0.10.7

* npm: Upgrade to 1.2.21

* crypto: Don't ignore verify encoding argument (isaacs)

* buffer, crypto: fix default encoding regression (Ben Noordhuis)

* timers: fix setInterval() assert (Ben Noordhuis)
2013-05-17 13:59:10 -07:00
Brandon Frohs
49300a4fa6 doc: Fix link to open issues on GitHub. 2013-05-17 13:56:24 -07:00
isaacs
199fa9f8dd crypto: Don't ignore verify encoding argument 2013-05-17 13:55:29 -07:00
Ben Noordhuis
f59ab10a64 buffer, crypto: fix default encoding regression
The default encoding is 'buffer'. When the input is a string, treat it
as 'binary'. Fixes the following assertion:

  node: ../src/string_bytes.cc:309: static size_t
  node::StringBytes::StorageSize(v8::Handle<v8::Value>, node::encoding):
  Assertion `0 && "buffer encoding specified but string provided"'
  failed.

Introduced in 64fc34b2.

Fixes #5482.
2013-05-16 17:25:24 +02:00
Ryuichi Okumura
4cd643ee2d doc: fix missing Class in header 2013-05-16 16:56:56 +02:00
Ryuichi Okumura
b06c82fd88 doc: fix the link to Stream document 2013-05-16 16:56:41 +02:00
Ben Noordhuis
22533c035d timers: fix setInterval() assert
Test case:

  var t = setInterval(function() {}, 1);
  process.nextTick(t.unref);

Output:

  Assertion failed: (args.Holder()->InternalFieldCount() > 0),
  function Unref, file ../src/handle_wrap.cc, line 78.

setInterval() returns a binding layer object. Make it stop doing that,
wrap the raw process.binding('timer_wrap').Timer object in a Timeout
object.

Fixes #4261.
2013-05-16 00:02:54 +02:00
Ryan Graham
1deeab29f2 doc: improve exports/module.exports consistency
While they reference the same object, they are only interchangeable
for updates, not assignment.
2013-05-15 21:06:32 +02:00
Ryan Graham
93391ae9cb doc: clarify exports and module.exports
When exporting a single function you must use `module.exports` instead
of the `exports` convenience reference.
2013-05-15 21:05:57 +02:00
Bert Belder
6bcf51e030 uv: upgrade to v0.10.7 2013-05-14 16:52:47 -07:00
isaacs
f564b6b58a uv: Upgrade to 0.10.6 2013-05-14 14:41:41 -07:00
isaacs
f7b10f5445 npm: Upgrade to 1.2.21 2013-05-14 14:37:59 -07:00
isaacs
ca38def146 blog: Release 0.10.6 2013-05-14 14:35:14 -07:00
isaacs
ef2b2a3f52 Now working on v0.10.7 2013-05-14 14:33:56 -07:00
isaacs
d855e9b125 Merge branch 'v0.10.6-release' into v0.10 2013-05-14 14:33:33 -07:00
isaacs
a241deb19a crypto: Pass encodings for Hmac digest 2013-05-14 13:51:43 -07:00
isaacs
5deb1672f2 2013.05.14, Version 0.10.6 (Stable)
* module: Deprecate require.extensions (isaacs)

* stream: make Readable.wrap support objectMode, empty streams (Daniel Moore)

* child_process: fix handle delivery (Ben Noordhuis)

* crypto: Fix performance regression (isaacs)

* src: DRY string encoding/decoding (isaacs)
2013-05-14 13:51:43 -07:00
isaacs
c1e8c8de1c crypto: Pass encodings to C++ for Sign/Verify 2013-05-14 13:51:43 -07:00
isaacs
430dc39e87 crypto: use StringBytes::Encode 2013-05-14 13:51:43 -07:00
isaacs
a1eacdf12a crypto: Pass strings to binding layer directly 2013-05-14 13:51:43 -07:00
isaacs
119354f735 buffer: DRY string encoding using StringBytes
This also templatizes the Buffer::*Slice functions, and the template
function probably cannot be safely used outside of Node.  However, it
also SHOULD not be used outside of Node, so this is arguably a feature
as well as a caveat.
2013-05-14 13:51:42 -07:00
isaacs
4e8cddddcb src: use StringBytes for DecodeWrite/DecodeBytes/Encode
Bonus: this makes node::Encode actually work properly with base64,
ucs2, hex, etc.
2013-05-14 13:51:42 -07:00
isaacs
69dac92c36 src: Use StringBytes in StreamWrap 2013-05-14 13:51:42 -07:00
isaacs
64fc34b270 src: Add StringBytes static util class
Four functions:

- StringBytes::StorageSize()
- StringBytes::Size()
- StringBytes::Write()
- StringBytes::Encode()
2013-05-14 13:51:24 -07:00
isaacs
3058f08e64 tools: remove unnecessary cpplint rules
We don't actually care about header order much, and since we never use
stl classes, 'string' isn't an issue for node ever.
2013-05-14 11:36:05 -07:00
isaacs
d5158574c6 stream: Make default encoding configurable
Pretty much everything assumes strings to be utf-8, but crypto
traditionally used binary strings, so we need to keep the default
that way until most users get off of that pattern.
2013-05-14 11:36:05 -07:00
isaacs
bdb78b9945 stream: don't create unnecessary buffers in Readable
If there is an encoding, and we do 'stream.push(chunk, enc)', and the
encoding argument matches the stated encoding, then we're converting from
a string, to a buffer, and then back to a string.  Of course, this is a
completely pointless bit of work, so it's best to avoid it when we know
that we can do so safely.
2013-05-14 11:36:04 -07:00
isaacs
0b8af89363 lint 2013-05-14 11:36:04 -07:00
isaacs
201baa273b benchmark: hash stream 2013-05-14 11:36:04 -07:00
isaacs
6a833a38f6 blog: Release v0.11.2 2013-05-14 11:35:43 -07:00
Benoit Vallée
dbe9f8da6b test: increase workers to 8 in cluster-disconnect
Increasing the number of workers from 2 to 8 makes this test
more likely to trigger race conditions. See #5330 for background.
2013-05-14 12:37:39 +02:00
Ben Noordhuis
f13a3fd2af doc: clarify subsystems in CONTRIBUTING.md 2013-05-14 12:31:38 +02:00
Ben Noordhuis
21bd456763 child_process: fix handle delivery
Commit 9352c19 ("child_process: don't emit same handle twice") trades
one bug for another.

Before said commit, a handle was sometimes delivered with messages it
didn't belong to.

The bug fix introduced another bug that needs some explaining. On UNIX
systems, handles are basically file descriptors that are passed around
with the sendmsg() and recvmsg() system calls, using auxiliary data
(SCM_RIGHTS) as the transport.

node.js and libuv depend on the fact that none of the supported systems
ever emit more than one SCM_RIGHTS message from a recvmsg() syscall.
That assumption is something we should probably address someday for the
sake of portability but that's a separate discussion.

So, SCM_RIGHTS messages are never coalesced. SCM_RIGHTS and normal
messages however _are_ coalesced. That is, recvmsg() might return this:

  recvmsg();  // { "message-with-fd", "message", "message" }

The operating system implicitly breaks pending messages along
SCM_RIGHTS boundaries. Most Unices break before such messages but Linux
also breaks _after_ them.  When the sender looks like this:

  sendmsg("message");
  sendmsg("message-with-fd");
  sendmsg("message");

Then on most Unices the receiver sees messages arriving like this:

  recvmsg();  // { "message" }
  recvmsg();  // { "message-with-fd", "message" }

The bug fix in commit 9352c19 assumes this behavior. On Linux however,
those messages can also come in like this:

  recvmsg();  // { "message", "message-with-fd" }
  recvmsg();  // { "message" }

In other words, it's incorrect to assume that the file descriptor is
always attached to the first message. This commit makes node wise up.

Fixes #5330.
2013-05-13 10:49:59 -07:00
isaacs
4b69bcfc66 doc: s/search.npmjs.org/npmjs.org/ 2013-05-09 15:15:39 -07:00
Timothy J Fontaine
72c58158f7 test: fix pummel/test-net-many-clients.js
client sockets no longer emit 'connect' event inside the
requestListener, update test-net-many-clients to reflect that
2013-05-08 19:31:45 -07:00
Robert Kowalski
dc92ff8585 doc: document stream.Writable 'error' event
Fixes #5255.
2013-05-08 18:15:50 -07:00
Daniel Moore
3b6fc600e2 stream: make Readable.wrap support empty streams
This makes Readable.wrap behave properly when the wrapped stream ends
before emitting any data events.
2013-05-08 11:59:40 -07:00
Daniel Moore
1ad93a6584 stream: make Readable.wrap support objectMode
Added a check to see if the stream is in objectMode before deciding
whether to include or exclude data from an old-style wrapped stream.
2013-05-08 11:59:28 -07:00
Timothy J Fontaine
cf87ee67ee test: don't use total_seconds() because of py2.6 2013-05-07 15:40:04 -07:00
Timothy J Fontaine
716176fa99 test: report test duration in TAP progress 2013-05-07 12:51:03 -07:00
Timothy J Fontaine
76cbd039b9 build: only use DESTDIR instead of PREFIX for pkg
Preserve default install prefix seen in process.config, but use DESTDIR
for installing to deliniate 32/64 versions, avoid conflicts with PREFIX
settings in config.mk
2013-05-06 10:10:05 -07:00
Kevin Locke
1c2b03dea5 doc: update options for exec and execFile
The stdio and customFds options are never used by exec or execFile,
remove them from the documentation for these functions.
2013-05-03 16:01:33 +02:00
Miroslav Bajtoš
418c9bc604 build: vcbuild.bat fix for Visual Studio 2012
Change vcbuild.bat to ignore VCINSTALLDIR environment variable,
always check for specific VS version and set GYP_MSVS_VERSION
accordingly. Otherwise GYP generates project files in format
that cannot be compiled by VS2012.
2013-05-03 11:32:32 +02:00
Sam Roberts
41cbdc5e64 doc: document return values of EventEmitter methods 2013-05-03 01:10:01 +02:00
isaacs
0e21d7b985 doc: link joyent logo in website footer 2013-05-02 09:48:33 -07:00
Miroslav Bajtoš
a32a243d5f debugger: breakpoints in scripts not loaded yet
When developer calls setBreakpoint with an unknown script name,
we convert the script name into regular expression matching all
paths ending with given name (name can be a relative path too).

To create such breakpoint in V8, we use type `scriptRegEx`
instead of `scriptId` for `setbreakpoint` request.

To restore such breakpoint, we save the original script name
send by the user. We use this original name to set (restore)
breakpoint in the new child process.

This is a back-port of commit 5db936d from the master branch.
2013-05-02 08:52:58 +02:00
Ben Noordhuis
2cf7e5de6f Revert "deps: downgrade openssl to v1.0.0f"
After much investigation it turns out that the affected servers are
buggy.  user-service.condenastdigital.com:443 in particular seems to
reject large TLS handshake records. Cutting down the number of
advertised ciphers or disabling SNI fixes the issue.

Similarly, passing { secureOptions: constants.SSL_OP_NO_TLSv1_2 }
seems to fix most connection issues with IIS servers.

Having to work around buggy servers is annoying for our users but not
a reason to downgrade OpenSSL. Therefore, revert it.

This reverts commit 4fdb8acdae.
2013-05-01 16:45:31 +02:00
isaacs
dda7b40204 doc: Fix require.extensions documentation
1. The stability index must come first, or it messes up the markdown
2. require.extensions is an Object, not an Array.

Close #5387
2013-04-30 07:40:43 -07:00
Ben Noordhuis
4fdb8acdae deps: downgrade openssl to v1.0.0f
Several people have reported issues with IIS and Resin servers (or maybe
SSL terminators sitting in front of those servers) that are fixed by
downgrading OpenSSL. The AESNI performance improvements were nice but
stability is more important. Downgrade OpenSSL from 1.0.1e to 1.0.0f.

Fixes #5360 (and others).
2013-04-29 12:12:33 +02:00
Ben Noordhuis
626d7abdb4 doc: cluster: s/server.destroy/server.close/
Fixes #5379.
2013-04-29 12:06:36 +02:00
isaacs
7bd8a5a2a6 doc: Deprecate require.extensions 2013-04-28 22:10:40 -07:00
Miroslav Bajtoš
8c2ad47f42 debugger: restart with custom debug port
Fixed a bug in debugger repl where `restart` command did not work
when a custom debug port was specified via command-line option
--port={number}.

File test/simple/helper-debugger-repl.js was extracted
from test/simple/test-debugger-repl.js
2013-04-26 21:10:05 +02:00
isaacs
8e56b4dd1c ChangeLog: Merge in v0.8
Close #5355
2013-04-23 14:43:46 -07:00
isaacs
72cf499b54 blog: Post for v0.10.5 2013-04-23 14:08:01 -07:00
isaacs
ec5577cf9d Now working on 0.10.6 2013-04-23 14:07:23 -07:00
isaacs
52aeb3f2fd Merge branch 'v0.10.5-release' into v0.10 2013-04-23 14:07:09 -07:00
isaacs
deeaf8fab9 2013.04.23, Version 0.10.5 (Stable)
* uv: Upgrade to 0.10.5 (isaacs)

* build: added support for Visual Studio 2012 (Miroslav Bajtoš)

* http: Don't try to destroy nonexistent sockets (isaacs)

* crypto: LazyTransform on properties, not methods (isaacs)

* assert: put info in err.message, not err.name (Ryan Doenges)

* dgram: fix no address bind() (Ben Noordhuis)

* handle_wrap: fix NULL pointer dereference (Ben Noordhuis)

* os: fix unlikely buffer overflow in os.type() (Ben Noordhuis)

* stream: Fix unshift() race conditions (isaacs)
2013-04-23 13:27:37 -07:00
Miroslav Bajtoš
0602fbb49c build: added support for Visual Studio 2012 2013-04-23 16:41:11 +02:00
isaacs
ff99cd5277 uv: Upgrade to 0.10.5 2013-04-22 17:39:22 -07:00
isaacs
c77747354c os: Fix uname() error handling on sunos
The uname function can return any non-negative int to indicate success.

Strange, but that's how it is documented.  This also fixes a similar
buffer overflow in the even more unlikely event that info.release is
> 255 characters, similar to how 78c5de5 did for info.sysname.
2013-04-22 11:00:52 -07:00
isaacs
01e2920219 http: Don't try to destroy nonexistent sockets
Fixes #3740

In the case of pipelined requests, you can have a situation where
the socket gets destroyed via one req/res object, but then trying
to destroy *another* req/res on the same socket will cause it to
call undefined.destroy(), since it was already removed from that
message.

Add a guard to OutgoingMessage.destroy and IncomingMessage.destroy
to prevent this error.
2013-04-22 09:54:04 -07:00
isaacs
1d794ec43e test: fix dgram-bind-default-address on osx
Allow the IPv4-mapped-as-IPv6 style address.
2013-04-22 08:56:29 -07:00
isaacs
4bf1d1007f crypto: LazyTransform on properties, not methods
It needs to apply the Transform class when the _readableState,
_writableState, or _transformState properties are accessed,
otherwise things like setEncoding and on('data') don't work
properly.

Also, the methods wrappers are no longer needed, since they're only
problematic because they access the undefined properties.
2013-04-21 09:33:10 -04:00
mscdex
c4379a5554 src: fix potential memory leak on early return 2013-04-20 23:30:21 -04:00
mscdex
2322580dfb src: don't initialize variable before assignment 2013-04-20 23:30:20 -04:00
isaacs
0b04abcb10 blog: v0.11.1 does not work on windows x64 2013-04-19 09:22:06 -07:00
isaacs
223f22a30d blog: Post about 0.11.1 2013-04-19 09:12:53 -07:00
isaacs
56e90dacb3 blog: Post about 0.10.4 2013-04-19 09:12:22 -07:00
Sean Silva
63466e5cae doc: document value of this inside listeners
Fixes #5326.
2013-04-19 11:58:18 +02:00
Ryan Doenges
6101eb184d assert: put info in err.message, not err.name
4716dc6 made assert.equal() and related functions work better by
generating a better toString() from the expected, actual, and operator
values passed to fail(). Unfortunately, this was accomplished by putting
the generated message into the error's `name` property. When you passed
in a custom error message, the error would put the custom error into
`name` *and* `message`, resulting in helpful string representations like
"AssertionError: Oh no: Oh no".

This commit resolves that issue by storing the generated message in the
`message` property while leaving the error's name alone and adding
a regression test so that this doesn't pop back up later.

Closes #5292.
2013-04-18 15:08:35 -07:00
Ben Noordhuis
a835a2fc47 website: add link to nightlies on download page 2013-04-18 22:06:04 +02:00
Trevor Norris
659fb238e7 crypto: fix return Local Handle w/o scope.Close()
A new String was being created and returned, but was not sent through
the scope.Close(), which caused it to be cleaned up before being
returned.
2013-04-18 01:30:36 +02:00
Ben Noordhuis
92023b4b37 dgram: fix no address bind()
I broke dgram.Socket#bind(port, cb) almost a year ago in 332fea5a but
it wasn't until today that someone complained and none of the tests
caught it because they all either specify the address or omit the
callback.

Anyway, now it works again and does what you expect: it binds the
socket to the "any" address ("0.0.0.0" for IPv4 and "::" for IPv6.)
2013-04-18 00:54:57 +02:00
Ben Noordhuis
2e70ddad9d test: make stdout-close-unref work in test runner
process.stdout isn't fully initialized yet by the time the test starts
when invoked with `python tools/test.py`. Use process.stdin instead and
force initialization with process.stdin.resume().
2013-04-18 00:02:51 +02:00
Kelly Gerber
36503b523d docs: update path.join() example for v0.10
The current example shows the behavior of v0.8. In v0.10 arguments
to path.join() must be strings; otherwise, an exception is thrown.
2013-04-17 00:04:17 +02:00
Ryan Graham
b02b93b2a2 doc: note a gotcha with http.Server sockets 2013-04-16 23:44:00 +02:00
Ben Noordhuis
ccd37226c6 handle_wrap: fix NULL pointer dereference
Fix a NULL pointer dereference in src/handle_wrap.cc which is really a
use-after-close bug.

The test checks that unref() after close() works on process.stdout but
this bug affects everything that derives from HandleWrap. I discovered
it because child processes would sometimes quit for no reason (that is,
no reason until I turned on core dumps.)
2013-04-16 23:11:03 +02:00
Stanislav Ochotnicky
7592615aaa test: preserve process.env after test-init exec
When LD_LIBRARY_PATH is overriden for custom builds we need to preserve
it for child processes. To be sure we preserve whole environment of
parent process and just add TEST_INIT variable to it.
2013-04-16 17:05:51 +02:00
Stanislav Ochotnicky
47198af55a test: preserve process.env in forked child_process
When LD_LIBRARY_PATH is overriden for custom builds we need to preserve
it for forked process. There are possibly other environment variables
that could cause test failures so we preserve whole environment of
parent process.
2013-04-16 17:05:51 +02:00
Ben Noordhuis
d58ee7e5c7 os: unbreak windows build
Windows doesn't have MAXHOSTNAMELEN. Introduced in afbadde.
2013-04-15 22:39:03 +02:00
Ben Noordhuis
afbaddecd3 os: handle 256 character hostnames
Fix a (rather academic) buffer overflow. MAXHOSTNAMELEN is 256 on most
platforms, which means the buffer wasn't big enough to hold the
trailing nul byte on a system with a maximum length hostname.
2013-04-15 21:13:29 +02:00
Ben Noordhuis
78c5de598b os: fix unlikely buffer overflow in os.type()
* Fix a buffer overflow that happens iff strlen(info.sysname) > 255.
* Check the return value of uname().
2013-04-15 20:57:14 +02:00
isaacs
8ee43006b8 build: Typo in tools/msvs/msi/product.wxs 2013-04-11 20:40:05 -07:00
isaacs
b0de1e4a41 stream: Fix unshift() race conditions
Fix #5272

The consumption of a readable stream is a dance with 3 partners.

1. The specific stream Author (A)
2. The Stream Base class (B), and
3. The Consumer of the stream (C)

When B calls the _read() method that A implements, it sets a 'reading'
flag, so that parallel calls to _read() can be avoided.  When A calls
stream.push(), B knows that it's safe to start calling _read() again.

If the consumer C is some kind of parser that wants in some cases to
pass the source stream off to some other party, but not before "putting
back" some bit of previously consumed data (as in the case of Node's
websocket http upgrade implementation).  So, stream.unshift() will
generally *never* be called by A, but *only* called by C.

Prior to this patch, stream.unshift() *also* unset the state.reading
flag, meaning that C could indicate the end of a read, and B would
dutifully fire off another _read() call to A.  This is inappropriate.
In the case of fs streams, and other variably-laggy streams that don't
tolerate overlapped _read() calls, this causes big problems.

Also, calling stream.shift() after the 'end' event did not raise any
kind of error, but would cause very strange behavior indeed.  Calling it
after the EOF chunk was seen, but before the 'end' event was fired would
also cause weird behavior, and could lead to data being lost, since it
would not emit another 'readable' event.

This change makes it so that:

1. stream.unshift() does *not* set state.reading = false
2. stream.unshift() is allowed up until the 'end' event.
3. unshifting onto a EOF-encountered and zero-length (but not yet
end-emitted) stream will defer the 'end' event until the new data is
consumed.
4. pushing onto a EOF-encountered stream is now an error.

So, if you read(), you have that single tick to safely unshift() data
back into the stream, even if the null chunk was pushed, and the length
was 0.
2013-04-11 16:12:48 -07:00
isaacs
440bc060b9 Now working on v0.10.5 2013-04-11 11:07:08 -07:00
isaacs
bf8ed11825 Merge branch 'v0.10.4-release' into v0.10 2013-04-11 11:06:37 -07:00
isaacs
22c7d134e2 lint 2013-04-11 11:06:20 -07:00
isaacs
50be39792a blog: Fix title for v0.8.23 release 2013-04-11 11:06:20 -07:00
isaacs
9712aa9f76 2013.04.11, Version 0.10.4 (Stable)
* uv: Upgrade to 0.10.4

* npm: Upgrade to 1.2.18

* v8: Avoid excessive memory growth in JSON.parse (Fedor Indutny)

* child_process, cluster: fix O(n*m) scan of cmd string (Ben Noordhuis)

* net: fix socket.bytesWritten Buffers support (Fedor Indutny)

* buffer: fix offset checks (Łukasz Walukiewicz)

* stream: call write cb before finish event (isaacs)

* http: Support write(data, 'hex') (isaacs)

* crypto: dh secret should be left-padded (Fedor Indutny)

* process: expose NODE_MODULE_VERSION in process.versions (Rod Vagg)

* crypto: fix constructor call in crypto streams (Andreas Madsen)

* net: account for encoding in .byteLength (Fedor Indutny)

* net: fix buffer iteration in bytesWritten (Fedor Indutny)

* crypto: zero is not an error if writing 0 bytes (Fedor Indutny)

* tls: Re-enable check of CN-ID in cert verification (Tobias Müllerleile)
2013-04-11 09:39:16 -07:00
isaacs
1ccae9cb1b npm: Upgrade to 1.2.18 2013-04-11 09:16:47 -07:00
isaacs
e5fdc4d6f1 uv: Upgrade to v0.10.4 2013-04-11 09:07:22 -07:00
Ben Noordhuis
212eb8a52e child_process: fix O(n*m) scan of cmd string
Don't scan the whole string for a "NODE_" substring, just check that
the string starts with the expected prefix.

This is a reprise of dbbfbe7 but this time for the child_process
module.
2013-04-11 13:53:18 +02:00
Ben Noordhuis
dbbfbe74ca cluster: fix O(n*m) scan of cmd string
Don't scan the whole string for a "NODE_CLUSTER_" substring, just check
that the string starts with the expected prefix. The linear scan was
causing a noticeable (but unsurprising) slowdown on messages with a
large .cmd string property.
2013-04-11 13:42:34 +02:00
Ben Noordhuis
cd96f0aba8 src: don't SetInternalField() in ObjectWrap dtor
Call SetPointerInInternalField(0, NULL) rather than
SetInternalField(0, Undefined()).

Fixes the following spurious NULL pointer dereference in debug builds:

  #0  0x03ad2821 in v8::internal::FixedArrayBase::length ()
  #1  0x03ad1dfc in v8::internal::FixedArray::get ()
  #2  0x03ae05dd in v8::internal::Context::global_object ()
  #3  0x03b6b87d in v8::internal::Context::builtins ()
  #4  0x03ae1871 in v8::internal::Isolate::js_builtins_object ()
  #5  0x03ab4fab in v8::CallV8HeapFunction ()
  #6  0x03ab4d4a in v8::Value::Equals ()
  #7  0x03b4f38b in CheckEqualsHelper ()
  #8  0x03ac0f4b in v8::Object::SetInternalField ()
  #9  0x06a99ddd in node::ObjectWrap::~ObjectWrap ()
  #10 0x06a8b051 in node::Buffer::~Buffer ()
  #11 0x06a8afbb in node::Buffer::~Buffer ()
  #12 0x06a8af5e in node::Buffer::~Buffer ()
  #13 0x06a9e569 in node::ObjectWrap::WeakCallback ()
2013-04-10 15:37:30 +02:00
Ben Noordhuis
0d5595ac60 Revert "crypto: use better memory BIO implementation"
This change shouldn't have landed in the stable branch. It's a feature,
not a bug fix.

This reverts commit 58f93ffc4a.
This reverts commit 8c8ebe49b6.
This reverts commit ba0f7b8066.
This reverts commit 21f3c5c367.
2013-04-10 13:54:15 +02:00
Fedor Indutny
c665b8e9ba net: fix socket.bytesWritten Buffers support
Buffer.byteLength() works only for string inputs. Thus, when connection
has pending Buffer to write, it should just use it's length instead of
throwing exception.
2013-04-10 14:51:10 +04:00
Ben Noordhuis
eeb4c3216d crypto: remove unused ClientHelloParser field 2013-04-10 01:39:00 +02:00
isaacs
67096fdb38 blog: Post for v0.8.23 2013-04-08 17:41:49 -07:00
Łukasz Walukiewicz
2e28832660 buffer: fix offset checks
Fixed offset checks in Buffer.readInt32LE() and Buffer.readInt32BE()
functions.
2013-04-08 16:17:38 -07:00
isaacs
c93af860a0 stream: call write cb before finish event
Since 049903e, an end callback could be called before a write
callback if end() is called before the write is done. This patch
resolves the issue.

In collaboration with @gne

Fixes felixge/node-formidable#209
Fixes #5215
2013-04-09 02:09:51 +04:00
isaacs
e4b716efaa http: Support write(data, 'hex')
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.

An unusual edge case, but certainly a bug.
2013-04-08 09:33:56 -07:00
Fedor Indutny
037bcac7ba crypto: dh secret should be left-padded
DH_compute_secret() may return key that is smaller than input buffer,
in such cases key should be left-padded because it is a BN (big number).

fix #5239
2013-04-08 19:45:35 +04:00
Rod Vagg
ccabd4a6fa process: expose NODE_MODULE_VERSION in process.versions 2013-04-08 16:48:18 +02:00
Fedor Indutny
21f3c5c367 crypto: move write_head in bio's Reset() method 2013-04-08 15:53:25 +04:00
Fedor Indutny
ba0f7b8066 crypto: fix changing buffers in bio
We should go to next buffer if *current* one is full, not the next one.
Otherwise we may hop through buffers and written data will become
interleaved, which will lead to failure.
2013-04-08 15:51:55 +04:00
Fedor Indutny
8c8ebe49b6 crypto: fix style issues in bio
Stop changing arguments, use local variables for things that change.
2013-04-08 15:51:51 +04:00
Andreas Madsen
fed8cff1d0 crypto: fix constructor call in crypto streams
When using some stream method on a lazy crypto stream, the transform
constructor wasn't called. This caused the internal state object to
be undefined.
2013-04-08 14:45:42 +04:00
Fedor Indutny
ff32ecd5bf net: account encoding in .byteLength 2013-04-08 11:48:46 +04:00
Ben Noordhuis
e8c01739cd doc: document linux pwrite() bug
On Linux, positional writes don't work when the file is opened in
append mode. The kernel ignores the position argument and always
appends the data to the end of the file.

To quote the man page:

  POSIX requires that opening a file with the O_APPEND flag should have
  no affect on the location at which pwrite() writes data.  However, on
  Linux, if a file is opened with O_APPEND, pwrite() appends data to the
  end of the file, regardless of the value of offset.
2013-04-08 00:43:30 +02:00
Fedor Indutny
eb39c9854a net: fix buffer iteration in bytesWritten 2013-04-08 01:17:40 +04:00
Fedor Indutny
77715edee8 crypto: zero is not an error if writing 0 bytes
fix #5128
2013-04-07 22:10:19 +04:00
Tobias Müllerleile
4108c31293 tls: Re-enable check of CN-ID in cert verification
RFC 6125 explicitly states that a client "MUST NOT seek a match
for a reference identifier of CN-ID if the presented identifiers
include a DNS-ID, SRV-ID, URI-ID, or any application-specific
identifier types supported by the client", but it MAY do so if
none of the mentioned identifier types (but others) are present.
2013-04-07 22:09:57 +04:00
Rafael Garcia
bd0d45818e stream: unused variable 2013-04-05 12:05:58 -07:00
Rafael Garcia
ea4f0b4a6b stream: remove vestiges of previous _transform API 2013-04-05 12:05:58 -07:00
isaacs
aeef9518c6 doc: Correct caveats for http Readables 2013-04-05 11:07:53 -07:00
Fedor Indutny
58f93ffc4a crypto: use better memory BIO implementation 2013-04-05 04:12:13 +04:00
isaacs
0f460b03f3 blog: Post about 0.10.3 2013-04-03 11:28:09 -07:00
isaacs
734a19060c Now working on 0.10.4 2013-04-03 11:28:04 -07:00
isaacs
d1c9c93ef0 Merge branch 'v0.10.3-release' into v0.10 2013-04-03 11:27:55 -07:00
Fedor Indutny
55d058e624 v8: cherry-pick 75311294 from upstream
Quote from commit message:

    Create a new HandleScope for each JSON-parsed object to avoid
    excessive growth.
2013-04-03 22:11:32 +04:00
isaacs
d4982f6f5e 2013.04.03, Version 0.10.3 (Stable)
* npm: Upgrade to 1.2.17

* child_process: acknowledge sent handles (Fedor Indutny)

* etw: update prototypes to match dtrace provider (Timothy J Fontaine)

* dtrace: pass more arguments to probes (Dave Pacheco)

* build: allow building with dtrace on osx (Dave Pacheco)

* http: Remove legacy ECONNRESET workaround code (isaacs)

* http: Ensure socket cleanup on client response end (isaacs)

* tls: Destroy socket when encrypted side closes (isaacs)

* repl: isSyntaxError() catches "strict mode" errors (Nathan Rajlich)

* crypto: Pass options to ctor calls (isaacs)

* src: tie process.versions.uv to uv_version_string() (Ben Noordhuis)
2013-04-03 10:30:57 -07:00
isaacs
88686aa410 http: Remove legacy ECONNRESET workaround code
Fix #5179
2013-04-03 10:18:42 -07:00
isaacs
d46ebffb66 npm: Upgrade to 1.2.17 2013-04-03 10:17:04 -07:00
isaacs
b319264d84 test: fork-getconnections stricter, less chatty 2013-04-03 10:01:50 -07:00
Fedor Indutny
5902bc45c5 child_process: acknowledge sent handles
Fix race-condition when multiple handles are sent and SCM_RIGHTS
messages are gets merged by OS by avoiding sending multiple handles at
once!

fix #4885
2013-04-03 09:56:48 -07:00
isaacs
4716dc662d assert: Simplify AssertError creation 2013-04-03 09:52:56 -07:00
Timothy J Fontaine
9f65b1edf7 etw: update prototypes to match dtrace provider
The DTrace probes were updated to accomodate platforms that can't
handle structs, update the prototypes for ETW but it's not necessary
to do anything with the new arguments as it's redundant information.
2013-04-03 09:52:56 -07:00
Ben Noordhuis
75463899c8 dtrace: check if _handle property is set
Check that _handle is an object before trying to read its `fd`
property, avoids bogus values.
2013-04-03 09:52:56 -07:00
Timothy J Fontaine
aca31e37f7 dtrace: actually use the _handle.fd value
When using the DTrace/systemtap subsystems it would be helpful to
actually have an fd associated with the requests and responses.
2013-04-03 09:52:56 -07:00
Dave Pacheco
bf22f99f3a dtrace: pass more arguments to probes
OSX and other DTrace implementations don't support dereferencing
structs in probes. To accomodate that pass members from the struct as
arguments so that DTrace is useful on those systems.
2013-04-03 09:52:56 -07:00
Dave Pacheco
ec69fcf425 build: allow building with dtrace on osx 2013-04-03 09:52:56 -07:00
Brian White
38106da7cd src: remove unused variables 2013-04-02 18:44:14 +02:00
isaacs
234fb122bb http client: Ensure socket cleanup on response end
If an http response has an 'end' handler that throws, then the socket
will never be released back into the pool.

Granted, we do NOT guarantee that throwing will never have adverse
effects on Node internal state.  Such a guarantee cannot be reasonably
made in a shared-global mutable-state side-effecty language like
JavaScript.  However, in this case, it's a rather trivial patch to
increase our resilience a little bit, so it seems like a win.

There is no semantic change in this case, except that some event
listeners are removed, and the `'free'` event is emitted on nextTick, so
that you can schedule another request which will re-use the same socket.
From the user's point of view, there should be no detectable difference.

Closes #5107
2013-04-02 20:34:08 +04:00
Andrew Hart
db8ce89fe4 test: test intended code-paths
The tests did not agree with the test comments. Tests first and second
were both testing the !state.reading case. Now second tests the
state.reading && state.length case.

Fixes joyent/node#5183
2013-04-01 15:09:33 -07:00
isaacs
164d5b3465 tls: Destroy socket when encrypted side closes
The v0.8 Stream.pipe() method automatically destroyed the destination
stream whenever the src stream closed.  However, this caused a lot of
problems, and was removed by popular demand.  (Many userland modules
still have a no-op destroy() method just because of this.) It was also
very hazardous because this would be done even if { end: false } was
passed in the pipe options.

In v0.10, we decided that the 'close' event and destroy() method are
application-specific, and pipe() doesn't automatically call destroy().
However, TLS actually depended (silently) on this behavior.  So, in this
case, we should just go ahead and destroy the thing when close happens.

Closes #5145
2013-04-01 10:53:49 -07:00
Michael Hart
440dcae987 Ensure BAD domain example actually uses domain 2013-04-01 10:09:27 -07:00
Mitar
e5b90a14b8 querystring: Removing unnecessary binding
Binding of `http_parser` in querystring isn't used anywhere and should
be removed.
2013-04-01 14:30:34 +04:00
Nathan Rajlich
55ea7ccf70 repl: use more readable RegExp syntax for spaces
This is just a cosmetic change really, nothing major.
2013-03-30 13:35:36 -07:00
Nathan Rajlich
085f9d636b repl: isSyntaxError() catches "strict mode" errors
Closes #5178.
2013-03-30 13:10:30 -07:00
isaacs
7af075ee30 crypto: Pass options to ctor calls 2013-03-29 09:39:51 -07:00
isaacs
1d17ced200 blog: v0.11.0 release 2013-03-28 14:53:29 -07:00
isaacs
f1fa756681 blog: Update linux binary tarball shasums
I just accidentally the binary release.
2013-03-28 14:39:52 -07:00
isaacs
708e8589ea blog: Post about v0.10.2 2013-03-28 13:06:24 -07:00
isaacs
61d254ebdc Node working on 0.10.3 2013-03-28 13:06:24 -07:00
isaacs
8106dc3624 Merge branch 'v0.10.2-release' into v0.10 2013-03-28 13:05:37 -07:00
Ben Noordhuis
902d6cb6d7 src: tie process.versions.uv to uv_version_string() 2013-03-28 20:12:05 +01:00
isaacs
1e0de9c426 2013.03.28, Version 0.10.2 (Stable)
* npm: Upgrade to 1.2.15

* uv: Upgrade to 0.10.3

* tls: handle SSL_ERROR_ZERO_RETURN (Fedor Indutny)

* tls: handle errors before calling C++ methods (Fedor Indutny)

* tls: remove harmful unnecessary bounds checking (Marcel Laverdet)

* crypto: make getCiphers() return non-SSL ciphers (Ben Noordhuis)

* crypto: check randomBytes() size argument (Ben Noordhuis)

* timers: do not calculate Timeout._when property (Alexey Kupershtokh)

* timers: fix off-by-one ms error (Alexey Kupershtokh)

* timers: handle signed int32 overflow in enroll() (Fedor Indutny)

* stream: Fix stall in Transform under very specific conditions (Gil Pedersen)

* stream: Handle late 'readable' event listeners (isaacs)

* stream: Fix early end in Writables on zero-length writes (isaacs)

* domain: fix domain callback from MakeCallback (Trevor Norris)

* child_process: don't emit same handle twice (Ben Noordhuis)

* child_process: fix sending utf-8 to child process (Ben Noordhuis)
2013-03-28 12:07:52 -07:00
Bert Belder
1b5ec033ee deps: upgrade libuv to v0.10.3 2013-03-28 20:05:33 +01:00
isaacs
dea0634f60 npm: Upgrade to v1.2.15 2013-03-28 11:35:12 -07:00
Fedor Indutny
4580be0882 tls: handle SSL_ERROR_ZERO_RETURN
see #5004
2013-03-28 21:59:19 +04:00
wicked
39058bef07 setTimeout: do not calculate Timeout._when property
Dramatically improves Timer performance.
2013-03-28 10:40:15 -07:00
isaacs
929e4d9c9a stream: Emit readable on ended streams via read(0)
cc: @mjijackson
2013-03-28 10:27:18 -07:00
isaacs
eafa902632 stream: Handle late 'readable' event listeners
In cases where a stream may have data added to the read queue before the
user adds a 'readable' event, there is never any indication that it's
time to start reading.

True, there's already data there, which the user would get if they
checked However, as we use 'readable' event listening as the signal to
start the flow of data with a read(0) call internally, we ought to
trigger the same effect (ie, emitting a 'readable' event) even if the
'readable' listener is added after the first emission.

To avoid confusing weirdness, only the *first* 'readable' event listener
is granted this privileged status.  After we've started the flow (or,
alerted the consumer that the flow has started) we don't need to start
it again.  At that point, it's the consumer's responsibility to consume
the stream.

Closes #5141
2013-03-28 10:27:18 -07:00
isaacs
5ae26f3750 doc: Add 'don't ignore errors' section to domain
Also, an example program of using cluster and domain to handle errors
safely, with zero downtime, using process isolation.
2013-03-28 09:53:59 -07:00
Benjamin Ruston
024a8b0cb4 doc: debugger, dns, http: fix grammar 2013-03-28 16:50:37 +01:00
Ben Noordhuis
982877ec85 deps: upgrade libuv to 7514149 2013-03-28 00:28:45 +01:00
isaacs
61935bc167 test: Accept either kind of NaN
A llvm/clang bug on Darwin ia32 makes these tests fail 100% of
the time.  Since no one really seems to mind overly much, and we
can't reasonably fix this in node anyway, just accept both types
of NaN for now.
2013-03-27 09:47:16 -07:00
Fedor Indutny
ae86fa84fe tls: handle errors before calling C++ methods
Calling `this.pair.encrypted._internallyPendingBytes()` before
handling/resetting error will result in assertion failure:

../src/node_crypto.cc:962: void node::crypto::Connection::ClearError():
Assertion `handle_->Get(String::New("error"))->BooleanValue() == false'
failed.

see #5058
2013-03-27 16:26:24 +04:00
Benjamin Ruston
372911ffc7 doc: addon: fix grammar 2013-03-27 12:37:54 +01:00
Fedor Indutny
28c6e42ee7 openssl: disable HEARTBEAT TLS extension
Microsoft's IIS doesn't support it, and is not replying with ServerHello
after receiving ClientHello which contains it.

The good way might be allowing to opt-out this at runtime from
javascript-land, but unfortunately OpenSSL doesn't support it right now.

see #5119
2013-03-27 11:41:23 +04:00
Trevor Norris
f0b68892d4 domain: fix domain callback from MakeCallback
Since _tickCallback and _tickDomainCallback were both called from
MakeCallback, it was possible for a callback to be called that required
a domain directly to _tickCallback.

The fix was to implement process.usingDomains(). This will set all
applicable functions to their domain counterparts, and set a flag in cc
to let MakeCallback know domain callbacks always need to be checked.

Added test in own file. It's important that the test remains isolated.
2013-03-26 21:26:17 -07:00
Ben Noordhuis
a80a132b38 doc: child_process: document 'error' event
Fixes #5130.
2013-03-26 16:34:43 +01:00
Ben Noordhuis
0e08e147c7 doc: fix formatting in tty.markdown
Fixes #5135.
2013-03-26 16:09:51 +01:00
Timothy J Fontaine
fb6dd0c0b5 test: test name is the last elem, not second
When a test requires node to have parameters passed (--expose-gc) the
test name will be the last element in the command array, not the second.
2013-03-26 00:21:41 +01:00
Ben Noordhuis
9352c19885 child_process: don't emit same handle twice
It's possible to read multiple messages off the parent/child channel.
When that happens, make sure that recvHandle is cleared after emitting
the first message so it doesn't get emitted twice.
2013-03-25 23:07:30 +01:00
Ben Noordhuis
cfd0dca9ae crypto: make getCiphers() return non-SSL ciphers
Commit f53441a added crypto.getCiphers() as a function that returns the
names of SSL ciphers.

Commit 14a6c4e then added crypto.getHashes(), which returns the names of
digest algorithms, but that creates a subtle inconsistency: the return
values of crypto.getHashes() are valid arguments to crypto.createHash()
but that is not true for crypto.getCiphers() - the returned values are
only valid for SSL/TLS functions.

Rectify that by adding tls.getCiphers() and making crypto.getCiphers()
return proper cipher names.
2013-03-25 18:42:07 +01:00
Mathias Bynens
488b74d68b doc: mention process.*.isTTY under process 2013-03-25 13:54:32 +01:00
Ben Noordhuis
44843a6062 child_process: fix sending utf-8 to child process
In process#send() and child_process.ChildProcess#send(), use 'utf8' as
the encoding instead of 'ascii' because 'ascii' mutilates non-ASCII
input. Correctly handle partial character sequences by introducing
a StringDecoder.

Sending over UTF-8 no longer works in v0.10 because the high bit of
each byte is now cleared when converting a Buffer to ASCII. See
commit 96a314b for details.

Fixes #4999 and #5011.
2013-03-25 13:23:17 +01:00
Ben Noordhuis
05bd6b7bcd bench: add child process read perf benchmark 2013-03-25 13:16:07 +01:00
Ben Noordhuis
690a8cce41 deps: fix openssl build on windows
Commit 8632af3 ("tools: update gyp to r1601") broke the Windows build.

Older versions of GYP link to kernel32.lib, user32.lib, etc. but that
was changed in r1584. See https://codereview.chromium.org/12256017

Fix the build by explicitly linking to the required libraries.
2013-03-24 22:53:11 +01:00
isaacs
c0d500102a stream: Fix early end in Writables on zero-length writes
Doing this causes problems:

    z.write(Buffer(0));
    z.end();

Fix by not ending Writable streams while they're still in the process of
writing something.
2013-03-24 14:23:21 -07:00
Ben Noordhuis
8632af381e tools: update gyp to r1601
Among other things, this should make it easier for people to build
node.js on openbsd.
2013-03-24 15:03:09 +01:00
Ben Noordhuis
329b5388ba doc: update CONTRIBUTING.md
* Latest stable is v0.10 now.
* Add example of what the first line of the commit log should look like.
2013-03-24 13:28:46 +01:00
Alexey Kupershtokh
9fae4dc102 timer: fix off-by-one ms error
Fix #5103
2013-03-23 18:46:14 -07:00
Marcel Laverdet
1526909083 tls: remove harmful unnecessary bounds checking
The EncIn, EncOut, ClearIn & ClearOut functions are victims of some code
copy + pasting. A common line copied to all of them is:

`if (off >= buffer_length) { ...`

448e0f43 corrected ClearIn's check from `>=` to `>`, but left the others
unchanged (with an incorrect bounds check). However, if you look down at
the next very next bounds check you'll see:

`if (off + len > buffer_length) { ...`

So the check is actually obviated by the next line, and should be
removed.

This fixes an issue where writing a zero-length buffer to an encrypted
pair's *encrypted* stream you would get a crash.
2013-03-24 00:04:34 +07:00
verwaest@chromium.org
14417fdb3f v8: Unify kMaxArguments with number of bits used to encode it.
Increase the number of bits by 1 by making Flags unsigned.

BUG=chromium:211741

Review URL: https://chromiumcodereview.appspot.com/12886008

This is a back-port of commits 13964 and 13988 addressing CVE-2013-2632.
2013-03-23 17:14:28 +01:00
Ben Noordhuis
628bd81afb crypto: check randomBytes() size argument
Throw a TypeError if size > 0x3fffffff. Avoids the following V8 fatal
error:

  FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData()
  length exceeds max acceptable value

Fixes #5126.
2013-03-23 15:50:10 +01:00
Ben Noordhuis
132c77e9f9 doc: document that stdio is usually blocking 2013-03-23 15:38:17 +01:00
Gil Pedersen
c3aae9cf95 stream: Fix stall in Transform under very specific conditions
The stall is exposed in the test, though the test itself asserts before
it stalls.

The test is constructed to replicate the stalling state of a complex
Passthrough usecase since I was not able to reliable trigger the stall.

Some of the preconditions for triggering the stall are:
  * rs.length >= rs.highWaterMark
  * !rs.needReadable
  * _transform() handler that can return empty transforms
  * multiple sync write() calls

Combined this can trigger a case where rs.reading is not cleared when
further progress requires this. The fix is to always clear rs.reading.
2013-03-21 17:49:12 -07:00
Fedor Indutny
bfd16de125 timers: handle signed int32 overflow in enroll()
Before this patch calling `socket.setTimeout(0xffffffff)` will result in
signed int32 overflow in C++ which resulted in assertion error:

    Assertion failed: (timeout >= -1), function uv__io_poll, file
    ../deps/uv/src/unix/kqueue.c, line 121.

see #5101
2013-03-21 22:09:05 +04:00
isaacs
92cc187881 blog: Post for v0.10.1 2013-03-21 09:14:39 -07:00
isaacs
9d3a09f9a8 Now working on v0.10.2 2013-03-21 09:14:31 -07:00
isaacs
41405f4703 Merge branch 'v0.10.1-release' into v0.10 2013-03-21 09:13:45 -07:00
Ben Noordhuis
e47a3e3ff4 deps: upgrade libuv to 9b61939 2013-03-21 14:59:16 +01:00
isaacs
c274d16435 2013.03.21, Version 0.10.1 (Stable)
* npm: upgrade to 1.2.15

* crypto: Improve performance of non-stream APIs (Fedor Indutny)

* tls: always reset this.ssl.error after handling (Fedor Indutny)

* tls: Prevent mid-stream hangs (Fedor Indutny, isaacs)

* net: improve arbitrary tcp socket support (Ben Noordhuis)

* net: handle 'finish' event only after 'connect' (Fedor Indutny)

* http: Don't hot-path end() for large buffers (isaacs)

* fs: Missing cb errors are deprecated, not a throw (isaacs)

* fs: make write/appendFileSync correctly set file mode (Raymond Feng)

* stream: Return self from readable.wrap (isaacs)

* stream: Never call decoder.end() multiple times (Gil Pedersen)

* windows: enable watching signals with process.on('SIGXYZ') (Bert Belder)

* node: revert removal of MakeCallback (Trevor Norris)

* node: Unwrap without aborting in handle fd getter (isaacs)
2013-03-20 18:15:04 -07:00
isaacs
3dd7938c03 npm: upgrade to 1.2.15 2013-03-20 17:49:57 -07:00
Fedor Indutny
855caa82aa crypto: initialize transform lazily 2013-03-20 16:49:08 -07:00
isaacs
008ab12b7f tls: Prevent hang in readStart
This is not a great fix, and it's a bug that's very tricky to reproduce.

Occasionally, while downloading a file, especially on Linux for some
reason, the pause/resume timing will be just right such that the
CryptoStream is in a 'reading' state, but actually has no data, so it
ought to pull more in.  Because there's no reads happening, it just sits
there, and the process will exit

This is, fundamentally, a factor of how the HTTP implementation sits
atop CryptoStreams and TCP Socket objects, which is utterly horrible,
and needs to be rewritten.  However, in the meantime, npm downloads are
prematurely exiting, causing hard-to-debug "cb() never called!" errors.
2013-03-20 16:14:39 -07:00
Trevor Norris
31314b6978 bench: compare binaries equal times
The benchmark compare would drop the last run of the binary pairs. So
when they were only run once an error would arise because no data was
generated for the second binary.
2013-03-20 20:25:48 +01:00
Ben Noordhuis
3dac421393 bench: add dgram send/recv benchmark 2013-03-20 17:16:30 +01:00
Fedor Indutny
34e22b8ee7 tls: always reset this.ssl.error after handling
Otherwise assertion may happen:

    src/node_crypto.cc:962: void node::crypto::Connection::ClearError():
    Assertion `handle_->Get(String::New("error"))->BooleanValue() == false'
    failed.

See #5058
2013-03-20 17:58:01 +04:00
Raymond Feng
25eaacad9a fs: make write/appendFileSync correctly set file mode 2013-03-20 01:37:43 +01:00
Iskren Ivov Chernev
2f4a62c5e1 doc: fix streams2 SimpleProtocol example
A non-existing variable `b` was used to queue data for reading.
2013-03-20 00:34:31 +01:00
Bert Belder
bf83251eea windows: enable watching signals with process.on('SIGXYZ')
This reverts commit ea1cba6246.

The offending commit was intended to land on the v0.8 branch only, but
it accidentally got merged at some point.

Closes #5054.
2013-03-20 00:16:02 +01:00
Bert Belder
8019800c56 Update .mailmap and AUTHORS 2013-03-19 20:07:38 +01:00
Ben Noordhuis
808b7ada07 doc: fix broken links in blog footer
The blog lives at blog.nodejs.org while the main website lives at
nodejs.org. Ergo, use absolute URLs for links to the main website.

Fixes #5062.
2013-03-18 14:41:51 +01:00
Fedor Indutny
b5ddc0cf96 tls: write pending data of opposite side
Fix stucked CryptoStream behaviour, happening when one of the sides
locks-up in queued state.

fix #5023
2013-03-17 20:19:09 +04:00
Trevor Norris
a0867e1c93 node: revert removal of MakeCallback
In 0168109 an implementation of MakeCallback was accidently removed. It
has been re-added.
2013-03-17 13:45:34 +01:00
JeongHoon Byun
f217b5ed62 doc: fix typo in crypto docs 2013-03-17 13:45:14 +01:00
Yi EungJun
852444a720 doc: https: Fix the link to tls.connect 2013-03-16 23:52:39 +01:00
Ben Noordhuis
f5a337e09c deps: upgrade libuv to b45a74f 2013-03-16 23:32:42 +01:00
Ben Noordhuis
2b5bc8e0d6 install: don't install man page twice
Looks like a merge conflict in 77ed12f left in the old, unconditional
install rule. Remove it, the new and improved rule is a few lines down.

Fixes #5044.
2013-03-16 23:22:10 +01:00
Timothy J Fontaine
4432dc8187 v8: move 32 bit heap hint on sunos
Setting the V8 heap at or near 0x20000000 on 32bit sunos only allows
512 MB of heap space, instead on sunos move this to 0x80000000.

Fixes #4010.
2013-03-15 01:31:05 +01:00
isaacs
14947b6c5e stream: Return self from readable.wrap
Also, set paused=false *before* calling resume().  Otherwise,
there's an edge case where an immediately-emitted chunk might make
it call pause() again incorrectly.
2013-03-14 16:43:19 -07:00
isaacs
3537b57f3e test: No need for kicking in streams2 test
This was necessary when we weren't auto-starting when a 'readable'
listener is added.
2013-03-14 16:18:42 -07:00
Gil Pedersen
e8f80bf479 stream: Never call decoder.end() multiple times
Updated version that does what it says without assigning state.decoder.
2013-03-14 16:13:10 -07:00
koichik
1f53cfdeae doc: don't mark fs callbacks as optional
Refs #5005, #5008
2013-03-14 13:06:49 -07:00
isaacs
d62cf59dc1 http: Don't hot-path end() for large buffers
The benefits of the hot-path optimization below start to fall off when
the buffer size gets up near 128KB, because the cost of the copy is more
than the cost of the extra write() call.  Switch to the write/end method
at that point.

Heuristics and magic numbers are awful, but slow http responses are
worse.

Fix #4975
2013-03-14 08:04:59 -07:00
Ben Noordhuis
ca5022b8f1 net: improve arbitrary tcp socket support
Consider this example:

  // fd 3 is a bound tcp socket
  var s = net.createServer(cb);
  s.listen({ fd: 3 });
  console.log(s.address());  // prints null

This commit makes net.Server#address() print the actual address.

Ditto for non-listen sockets; properties like net.Socket#localAddress
and net.Socket#remoteAddress now return the correct value.

Fixes #5009.
2013-03-14 15:55:30 +01:00
Ben Noordhuis
e99dff4617 deps: upgrade libuv to 7b66ea1 2013-03-14 15:55:26 +01:00
Adam Malcontenti-Wilson
028c630ecd doc: change dgram to socket for properties of dgram.Socket
Fixes #4919.
2013-03-14 12:55:19 +01:00
isaacs
6399839c39 Revert "stream: Never call decoder.end() multiple times"
This reverts commit 615d809ac6.
2013-03-13 15:48:56 -07:00
isaacs
6bd8b7e540 fs: Missing cb errors are deprecated, not a throw
Commit a804347 makes fs function rethrow errors when the callback is
omitted. While the right thing to do, it's a change from the old v0.8
behavior where such errors were silently ignored.

To give users time to upgrade, temporarily disable that and replace it
with a function that warns once about the deprecated behavior.

Close #5005
2013-03-13 15:34:18 -07:00
Ben Noordhuis
fa05e8a270 doc: implicit fs callbacks don't throw in v0.10
But they will in v0.12.

Re #5005.
2013-03-13 15:34:18 -07:00
Ben Noordhuis
7b7235a232 doc: add note on process.title max length
Fixes #5006.
2013-03-13 23:27:16 +01:00
Gil Pedersen
615d809ac6 stream: Never call decoder.end() multiple times
Fixes decoder.end() being called on every push(null). As the tls module
does this, corrupt stream data could potentially be added to the end.
2013-03-13 15:20:13 -07:00
isaacs
110cacd1ed core: Move UNWRAP_NO_ABORT to handle_wrap.h
Otherwise it cannot be used in StreamWrap.

Forgot to include in last patch, broke the build.
2013-03-13 11:26:36 -07:00
Ben Noordhuis
9af0085f70 doc: path.join() arguments must be strings
In v0.8, non-string arguments were ignored. v0.10 throws an exception.
2013-03-13 18:42:04 +01:00
Fedor Indutny
8135ac1b7f net: handle 'finish' event only after 'connect' 2013-03-13 10:27:23 -07:00
isaacs
53f2381455 core: Unwrap without aborting in handle fd getter 2013-03-13 10:16:26 -07:00
isaacs
7a07b31a2f blog: Fix typo in typo fix 2013-03-13 10:15:30 -07:00
Nathan Rajlich
598b5e4593 blog: fix small typo in v0.10.0 release article 2013-03-12 19:00:48 -07:00
Ben Noordhuis
da10bb85ff doc: events: add 'removeListener' event section
Amends commit 84221fd by (also) documenting the 'removeListener' event
in a dedicated section, like the 'newListener' event.

Fixes #4977.
2013-03-12 00:07:18 +01:00
isaacs
228ad9357c blog: Post about v0.10.0 2013-03-11 10:19:19 -07:00
isaacs
e2b293c360 Now working on 0.10.1 2013-03-11 08:49:33 -07:00
isaacs
dcfb6d8286 Merge branch 'v0.10.0-release' into v0.10 2013-03-11 08:49:20 -07:00
isaacs
163ca27423 2013.03.11, Version 0.10.0 (Stable)
* npm: Upgrade to 1.2.14

* core: Append filename properly in dlopen on windows (isaacs)

* zlib: Manage flush flags appropriately (isaacs)

* domains: Handle errors thrown in nested error handlers (isaacs)

* buffer: Strip high bits when converting to ascii (Ben Noordhuis)

* win/msi: Enable modify and repair (Bert Belder)

* win/msi: Add feature selection for various node parts (Bert Belder)

* win/msi: use consistent registry key paths (Bert Belder)

* child_process: support sending dgram socket (Andreas Madsen)

* fs: Raise EISDIR on Windows when calling fs.read/write on a dir (isaacs)

* unix: fix strict aliasing warnings, macro-ify functions (Ben Noordhuis)

* unix: honor UV_THREADPOOL_SIZE environment var (Ben Noordhuis)

* win/tty: fix typo in color attributes enumeration (Bert Belder)

* win/tty: don't touch insert mode or quick edit mode (Bert Belder)
2013-03-10 17:36:28 -07:00
isaacs
327b6e3e1d stream: Don't emit 'end' unless read() called
This solves the problem of calling `readable.pipe(writable)` after the
readable stream has already emitted 'end', as often is the case when
writing simple HTTP proxies.

The spirit of streams2 is that things will work properly, even if you
don't set them up right away on the first tick.

This approach breaks down, however, because pipe()ing from an ended
readable will just do nothing.  No more data will ever arrive, and the
writable will hang open forever never being ended.

However, that does not solve the case of adding a `on('end')` listener
after the stream has received the EOF chunk, if it was the first chunk
received (and thus, length was 0, and 'end' got emitted).  So, with
this, we defer the 'end' event emission until the read() function is
called.

Also, in pipe(), if the source has emitted 'end' already, we call the
cleanup/onend function on nextTick.  Piping from an already-ended stream
is thus the same as piping from a stream that is in the process of
ending.

Updates many tests that were relying on 'end' coming immediately, even
though they never read() from the req.

Fix #4942
2013-03-10 11:08:22 -07:00
isaacs
cd2b9f542c stream: Avoid nextTick warning filling read buffer
In the function that pre-emptively fills the Readable queue, it relies
on a recursion through:

stream.push(chunk) ->
maybeReadMore(stream, state) ->
  if (not reading more and < hwm) stream.read(0) ->
stream._read() ->
stream.push(chunk) -> repeat.

Since this was only calling read() a single time, and then relying on a
future nextTick to collect more data, it ends up causing a nextTick
recursion error (and potentially a RangeError, even) if you have a very
high highWaterMark, and are getting very small chunks pushed
synchronously in _read (as happens with TLS, or many simple test
streams).

This change implements a new approach, so that read(0) is called
repeatedly as long as it is effective (that is, the length keeps
increasing), and thus quickly fills up the buffer for streams such as
these, without any stacks overflowing.
2013-03-10 11:04:48 -07:00
Julian Gruber
738347b904 events: Handle missing error obj when domains in use
so `ee.emit('error')` doesn't throw when domains are active

create an empty error only when handled by a domain

test for when no error is provided to an error event
2013-03-10 09:53:24 -07:00
koichik
c9a4ec9c63 http: ServerRequest does not timeout after 'end'
Fixes #4967
2013-03-10 20:14:43 +09:00
isaacs
e2400f88d8 http: Do not setTimeout a not-yet-existent socket
Fixes #4967
2013-03-10 18:34:41 +09:00
isaacs
21a99664ae uv: Upgrade to 5462dab 2013-03-09 18:34:59 -08:00
isaacs
12713c3bb7 win/msi: Fix typos 2013-03-09 09:22:00 -08:00
isaacs
31b5d41f57 npm: Upgrade to 1.2.14 (fixed) 2013-03-09 09:11:22 -08:00
hc
5757ce48b4 http: check if incoming parser has already been freed
Fix #4948

This adds a check before setting the incoming parser
to null. Under certain circumstances it'll already be set to
null by freeParser().

Otherwise this will cause node to crash as it tries to set
null on something that is already null.
2013-03-09 08:46:44 -08:00
Andreas Madsen
7becf156a9 timers: consistent this keyword in setImmediate
When calling setImmediate with extra arguments the this keyword in the
callback would refer to the global object, but when not calling
setImmediate with extra arguments this would refer to the returned
handle object.

This commit fixes that inconsistency so its always set handle object.
The handle object was chosen for performance reasons.
2013-03-09 08:19:57 -08:00
isaacs
80472bc301 domain: Fix double-exit on nested domains
Minor oversight in fix for #4953.
2013-03-09 07:00:21 -08:00
isaacs
4d1e9e5370 Now working on 0.10.0 2013-03-08 21:52:09 -08:00
isaacs
7c9ff8e94a lint 2013-03-08 20:26:26 -08:00
Gil Pedersen
77a776da90 stream: Always defer preemptive reading to improve latency 2013-03-08 20:09:21 -08:00
isaacs
061a7ddbff Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	AUTHORS
	ChangeLog
	src/node_version.h
2013-03-08 18:59:44 -08:00
isaacs
6e34dfd9e8 test: Fail faster in simple/test-cluster-bind-twice-v2
Crashing on windows, but at least now it's a crash rathert han a timeout.
2013-03-08 18:56:32 -08:00
isaacs
98c6a81771 test: Kill zombies when debugger-client fails on windows 2013-03-08 18:56:32 -08:00
isaacs
8cf2d4c2c1 test: Don't run async operation in process 'exit'
Also, this seems to occasionally cause some annoying file-locking
errors in Windows.  Not sure if this is the best fix, but it seems
to make the warnings go away in that spot.
2013-03-08 18:56:31 -08:00
isaacs
f5c293b5ed test: Use copy instead of symlink in child-process-fork-exec-path 2013-03-08 18:56:31 -08:00
isaacs
9826159bf1 test: Trim cat output for windows 2013-03-08 18:56:31 -08:00
isaacs
99a2059e40 test: Sending dgram sockets to child procs not supported on windows 2013-03-08 18:56:31 -08:00
isaacs
6076a25e80 core: Append filename properly in dlopen on windows
Fixes simple/test-module-loading on win32
2013-03-08 18:56:31 -08:00
isaacs
08f5db112f test: Make stream2-transform less timing-dependent 2013-03-08 18:56:31 -08:00
isaacs
6d593a9026 test: Don't fail tls-session-cache if openssl is bad 2013-03-08 18:56:31 -08:00
isaacs
b3cbb16f41 zlib: Manage flush flags appropriately
If you call z.flush();z.write('foo'); then it would try to write 'foo'
before the flush was done, triggering an assertion in the zlib binding.

Closes #4950
2013-03-08 18:56:31 -08:00
isaacs
29cd0f2a77 domains: Handle errors thrown in nested error handlers
If a domain error handler throws, it should be caught if it was
in a stack of nested domains.

Fix #4953
2013-03-08 14:46:58 -08:00
Ben Noordhuis
e325ace53c buffer: speed up ascii character scanning
Speed up ASCII character scanning and conversion by 25% to 30% by scanning and
converting whole words instead of individual bytes.
2013-03-08 14:42:15 -08:00
Ben Noordhuis
96a314b68b buffer: strip high bits when converting to ascii
Consider the following example:

  console.log(Buffer('ú').toString('ascii'));

Before this commit, the contents of the buffer was used as-is and hence it
prints 'ú'.

Now, it prints 'C:'. Perhaps not much of an improvement but it conforms to what
the documentation says it does: strip off the high bits.

Fixes #4371.
2013-03-08 14:42:15 -08:00
isaacs
632b7d8750 Revert "http: check if incoming parser has already been freed"
This reverts commit 9f4c3b0d45.
2013-03-08 14:35:00 -08:00
hheennrryy@gmail.com
9f4c3b0d45 http: check if incoming parser has already been freed
Fix #4948

This adds a check before setting the incoming parser
to null. Under certain circumstances it'll already be set to
null by freeParser().

Otherwise this will cause node to crash as it tries to set
null on something that is already null.
2013-03-08 14:14:58 -08:00
isaacs
ea30ca9533 doc: Add wrk's license to LICENSE file 2013-03-08 13:47:36 -08:00
Bert Belder
3c22c42519 win/msi: enable modify and repair 2013-03-08 18:00:41 +01:00
Bert Belder
fa1efa3675 win/msi: miscellaneous style cleanups 2013-03-08 18:00:40 +01:00
Bert Belder
4147680d59 win/msi: don't include architecture in start menu group name 2013-03-08 18:00:40 +01:00
Bert Belder
8365a56541 win/msi: update 'install finished' message 2013-03-08 18:00:39 +01:00
Bert Belder
952d6c5e4c win/msi: clean up the 'documentation shortcuts' feature 2013-03-08 18:00:39 +01:00
Bert Belder
fb6253209e win/msi: refactor 'node.js runtime' feature
* This feature now includes the start menu items.
* 'nodejsvars.bat' was renamed to 'nodevars.bat'.
* Improved feature description.
2013-03-08 18:00:38 +01:00
Bert Belder
2320ffbdff win/msi: make 'add to path' a separate feature 2013-03-08 18:00:37 +01:00
Bert Belder
5e832ac7b9 win/msi: separate features for ETW and perfctr support 2013-03-08 18:00:37 +01:00
Bert Belder
51e3a59946 win/msi: make npm a feature separate from the runtime 2013-03-08 18:00:36 +01:00
Bert Belder
4348241bcc win/msi: use consistent registry key paths 2013-03-08 18:00:36 +01:00
Bert Belder
0604d9ab93 win/msi: don't create empty npm folder in %appdata%
Npm creates this folder when it's needed. Creating it in the installer
violates the per-user / per-machine scope separation.
2013-03-08 18:00:35 +01:00
Bert Belder
8542c9afba win/msi: don't install pdb file
It's only available in debug builds, and we're not providing
installer packages for debug builds anyway.
2013-03-08 18:00:35 +01:00
Bert Belder
7514779388 win/msi: define features before directories/components 2013-03-08 18:00:34 +01:00
Bert Belder
52f7a14aaf win: make nodejsvars.bat detect whether npm is available 2013-03-08 18:00:34 +01:00
isaacs
90368770e6 stream: Emit error on stream object, not global
Apparently this function got abstracted out at some point, and 'this'
wasn't changed to the correct object.
2013-03-08 07:35:41 -08:00
Bert Belder
d5959c5cea Revert "build, windows: disable SEH"
This is no longer necessary - the underlying issue was fixed in 01fa5ee.
This reverts commit d879042860.
2013-03-08 12:43:58 +01:00
Bert Belder
3446157269 win/openssl: mark assembled object files as seh safe
There are no unsafe structured exception handlers in object files
generated from hand-crafted assembly - because they contain no exception
handlers at all.
2013-03-08 12:43:57 +01:00
Raymond Feng
95871ac1db windows/msi: fix msi build issue with WiX 3.7/3.8
The `heat` tool that gathers NPM source files wasn't getting called.
Closes #4896
2013-03-08 12:38:13 +01:00
isaacs
4b47bb4dbc uv: Upgrade to b68ee40 2013-03-07 18:17:28 -08:00
isaacs
e7b8bad3d9 bench: Do math on numbers in compare.js, not strings 2013-03-07 11:56:53 -08:00
isaacs
f23ec6b3cf uv: Upgrade to f89125e 2013-03-07 11:53:18 -08:00
Andreas Madsen
bdf7ac2c5d child_process: support sending dgram socket
child.send can send net servers and sockets. Now that we have support
for dgram clusters this functionality should be extended to include
dgram sockets.
2013-03-07 17:51:17 +01:00
Ben Noordhuis
71694361f9 doc: dgram: add v0.10 bind() behavior note
dgram.Socket#bind() is always asynchronous now. Add a note at the top
of the documentation that explains how to upgrade.

Fixes #4944.
2013-03-07 14:13:42 +01:00
Ben Noordhuis
924f603e26 doc: dgram: document bind() callback argument 2013-03-07 14:11:46 +01:00
isaacs
9c5812574f blog: Post for v0.8.22 2013-03-06 16:22:23 -08:00
isaacs
5c3c2ed945 Now working on 0.8.23 2013-03-06 16:20:00 -08:00
isaacs
d7a5f96fa5 Merge branch 'v0.8.22-release' into v0.8 2013-03-06 16:19:29 -08:00
isaacs
67a4cb4fe8 2013.03.07, Version 0.8.22 (Stable)
* npm: Update to 1.2.14

* cluster: propagate bind errors (Ben Noordhuis)

* crypto: don't assert when calling Cipher#final() twice (Ben Noordhuis)

* build, windows: disable SEH (Ben Noordhuis)
2013-03-06 15:47:29 -08:00
isaacs
f780c6f598 Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	deps/npm/html/api/bin.html
	deps/npm/html/api/bugs.html
	deps/npm/html/api/commands.html
	deps/npm/html/api/config.html
	deps/npm/html/api/deprecate.html
	deps/npm/html/api/docs.html
	deps/npm/html/api/edit.html
	deps/npm/html/api/explore.html
	deps/npm/html/api/help-search.html
	deps/npm/html/api/init.html
	deps/npm/html/api/install.html
	deps/npm/html/api/link.html
	deps/npm/html/api/load.html
	deps/npm/html/api/ls.html
	deps/npm/html/api/npm.html
	deps/npm/html/api/outdated.html
	deps/npm/html/api/owner.html
	deps/npm/html/api/pack.html
	deps/npm/html/api/prefix.html
	deps/npm/html/api/prune.html
	deps/npm/html/api/publish.html
	deps/npm/html/api/rebuild.html
	deps/npm/html/api/restart.html
	deps/npm/html/api/root.html
	deps/npm/html/api/run-script.html
	deps/npm/html/api/search.html
	deps/npm/html/api/shrinkwrap.html
	deps/npm/html/api/start.html
	deps/npm/html/api/stop.html
	deps/npm/html/api/submodule.html
	deps/npm/html/api/tag.html
	deps/npm/html/api/test.html
	deps/npm/html/api/uninstall.html
	deps/npm/html/api/unpublish.html
	deps/npm/html/api/update.html
	deps/npm/html/api/version.html
	deps/npm/html/api/view.html
	deps/npm/html/api/whoami.html
	deps/npm/html/doc/README.html
	deps/npm/html/doc/adduser.html
	deps/npm/html/doc/bin.html
	deps/npm/html/doc/bugs.html
	deps/npm/html/doc/build.html
	deps/npm/html/doc/bundle.html
	deps/npm/html/doc/cache.html
	deps/npm/html/doc/changelog.html
	deps/npm/html/doc/coding-style.html
	deps/npm/html/doc/completion.html
	deps/npm/html/doc/config.html
	deps/npm/html/doc/dedupe.html
	deps/npm/html/doc/deprecate.html
	deps/npm/html/doc/developers.html
	deps/npm/html/doc/disputes.html
	deps/npm/html/doc/docs.html
	deps/npm/html/doc/edit.html
	deps/npm/html/doc/explore.html
	deps/npm/html/doc/faq.html
	deps/npm/html/doc/folders.html
	deps/npm/html/doc/global.html
	deps/npm/html/doc/help-search.html
	deps/npm/html/doc/help.html
	deps/npm/html/doc/index.html
	deps/npm/html/doc/init.html
	deps/npm/html/doc/install.html
	deps/npm/html/doc/json.html
	deps/npm/html/doc/link.html
	deps/npm/html/doc/ls.html
	deps/npm/html/doc/npm.html
	deps/npm/html/doc/outdated.html
	deps/npm/html/doc/owner.html
	deps/npm/html/doc/pack.html
	deps/npm/html/doc/prefix.html
	deps/npm/html/doc/prune.html
	deps/npm/html/doc/publish.html
	deps/npm/html/doc/rebuild.html
	deps/npm/html/doc/registry.html
	deps/npm/html/doc/removing-npm.html
	deps/npm/html/doc/restart.html
	deps/npm/html/doc/rm.html
	deps/npm/html/doc/root.html
	deps/npm/html/doc/run-script.html
	deps/npm/html/doc/scripts.html
	deps/npm/html/doc/search.html
	deps/npm/html/doc/semver.html
	deps/npm/html/doc/shrinkwrap.html
	deps/npm/html/doc/star.html
	deps/npm/html/doc/stars.html
	deps/npm/html/doc/start.html
	deps/npm/html/doc/stop.html
	deps/npm/html/doc/submodule.html
	deps/npm/html/doc/tag.html
	deps/npm/html/doc/test.html
	deps/npm/html/doc/uninstall.html
	deps/npm/html/doc/unpublish.html
	deps/npm/html/doc/update.html
	deps/npm/html/doc/version.html
	deps/npm/html/doc/view.html
	deps/npm/html/doc/whoami.html
	deps/npm/man/man1/ls.1
	deps/npm/man/man1/npm.1
	deps/npm/man/man3/npm.3
	deps/npm/node_modules/npm-registry-client/lib/publish.js
	deps/npm/node_modules/npm-registry-client/package.json
	deps/npm/package.json
	doc/blog/feature/streams2.md
2013-03-06 15:43:02 -08:00
isaacs
80fb580936 npm: Update to 1.2.14 2013-03-06 15:41:06 -08:00
isaacs
277a2545d2 blog: Update streams2 feature post to match actual doc 2013-03-06 14:19:16 -08:00
isaacs
7df4652d7b Now working on 0.9.13
Probably that will be 0.10.0 instead, though.
2013-03-06 13:59:58 -08:00
isaacs
ff2639f9ea doc: fix ChangeLog typo 2013-03-06 13:59:25 -08:00
isaacs
b5dffdd696 Merge branch 'v0.9.12-release' 2013-03-06 13:59:07 -08:00
isaacs
116d6c4402 blog: Post for 0.9.12 2013-03-06 13:57:57 -08:00
isaacs
0debf5a829 2013.03.06, Version 0.9.12 (Unstable)
* stream: Allow strings in Readable.push/unshift (isaacs)

* stream: Remove bufferSize option (isaacs)

* stream: Increase highWaterMark on large reads (isaacs)

* stream: _write: takes an encoding argument (isaacs)

* stream: _transform: remove no output() method, provide encoding (isaacs)

* stream: Don't require read(0) to emit 'readable' event (isaacs)

* node: Add --throw-deprecation (isaacs)

* http: fix multiple timeout events (Eugene Girshov)

* http: More useful setTimeout API on server (isaacs)

* net: use close callback, not process.nextTick (Ben Noordhuis)

* net: Provide better error when writing after FIN (isaacs)

* dns: Support NAPTR queries (Pavel Lang)

* dns: fix ReferenceError in resolve() error path (Xidorn Quan)

* child_process: handle ENOENT correctly on Windows (Scott Blomquist)

* cluster: Rename destroy() to kill(signal=SIGTERM) (isaacs)

* build: define nightly tag external to build system (Timothy J Fontaine)

* build: make msi build work when spaces are present in the path (Bert Belder)

* build: fix msi build issue with WiX 3.7/3.8 (Raymond Feng)

* repl: make compatible with domains (Dave Olszewski)

* events: Code cleanup and performance improvements (Trevor Norris)
2013-03-06 13:06:10 -08:00
isaacs
51c8b0ede3 V8: Reapply floating patches 2013-03-06 12:59:59 -08:00
isaacs
81c278d58d V8: Upgrade to 3.14.5.8 2013-03-06 12:59:58 -08:00
isaacs
d258fb0212 http: More useful setTimeout API on server
This adds the following to HTTP:

* server.setTimeout(msecs, callback)
  Sets all new connections to time out after the specified time, at
  which point it emits 'timeout' on the server, passing the socket as an
  argument.
  In this way, timeouts can be handled in one place consistently.
* req.setTimeout(), res.setTimeout()
  Essentially an alias to req/res.socket.setTimeout(), but without
  having to delve into a "buried" object.  Adds a listener on the
  req/res object, but not on the socket.
* server.timeout
  Number of milliseconds before incoming connections time out.
  (Default=1000*60*2, as before.)

Furthermore, if the user sets up their own timeout listener on either
the server, the request, or the response, then the default behavior
(destroying the socket) is suppressed.

Fix #3460
2013-03-06 12:43:48 -08:00
isaacs
db5d58e842 bench: Use environ to run compares more than once
This will run the benchmarks the number of times specified by NODE_BENCH_RUNS,
to attempt to reduce variability.

If the number of runs is high enough, it'll also throw out the top and bottom
quartiles, since that's where the outliers will be.

It's not very fancy statistics-fu, but it's better than nothing.

Also, linted this file.  It had tabs in it.  TABS!
2013-03-06 12:33:05 -08:00
isaacs
9208c89058 stream: Raise readable high water mark in powers of 2
This prevents excessively raising the buffer level in tiny increments in
pathological cases.
2013-03-06 11:44:30 -08:00
isaacs
a978bedee7 stream: Allow strings in Readable.push/unshift
Fix #4909
2013-03-06 11:44:30 -08:00
isaacs
b0f6789a78 stream: Remove bufferSize option
Now that highWaterMark increases when there are large reads, this
greatly reduces the number of calls necessary to _read(size), assuming
that _read actually respects the size argument.
2013-03-06 11:44:30 -08:00
isaacs
d5a0940fff stream: Remove pipeOpts.chunkSize
It's not actually necessary for backwards compatibility, isn't
used anywhere, and isn't even tested.  Better to just remove it.
2013-03-06 11:44:30 -08:00
isaacs
8c44869f1d stream: Increase highWaterMark on large reads
If the consumer of a Readable is asking for N bytes, and N > hwm,
then clearly we have set the hwm to low, and ought to increase it.

Fix #4931
2013-03-06 11:44:30 -08:00
isaacs
e0cec37d50 stream: Remove unnecessary nextTick usage in Writable
Fix #4928
2013-03-06 11:44:29 -08:00
isaacs
32ac8c0b69 test: Pass cli flags in pummel/test-regress-GH-892 2013-03-06 11:44:29 -08:00
isaacs
5038f40185 node: Add --throw-deprecation
Extremely handy when tracking down a flood of recursive nextTick warnings.
2013-03-06 11:44:29 -08:00
Eugene Girshov
25ba971f41 http: fix multiple timeout events
Fixed up slightly by @isaacs so as not to miss 'timeout' events in some
cases.
2013-03-06 10:45:37 -08:00
Ben Noordhuis
fb3ec32b0e net: use close callback, not process.nextTick
Don't emit the 'close' event with process.nextTick.

Closing a handle is an operation that usually *but not always* completes
on the next tick of the event loop, hence using process.nextTick is not
reliable.

Use a proper handle close callback and emit the 'close' event from
inside the callback.

Update tests that depend on the intricacies of the old model.

Fixes #3459.
2013-03-06 16:15:18 +01:00
Ben Noordhuis
958ab661cb handle_wrap: add close callback support 2013-03-06 15:32:40 +01:00
Ben Noordhuis
3d20905b70 handle_wrap: replace unref_ field with flags_ field
Prep work for a follow-up commit that adds support for close callbacks.
2013-03-06 15:25:07 +01:00
Ben Noordhuis
3dbbfd7803 src: remove unused symbols in node_file.cc 2013-03-06 14:45:47 +01:00
Pavel Lang
2ad98725d6 DNS: Support NAPTR queries
They were previously removed in a90bc78534.
2013-03-06 14:31:22 +04:00
isaacs
74784b63d6 cares: Set process._errno, not global.errno
This makes test-internet pass
2013-03-06 14:10:10 +04:00
Scott Blomquist
323120b5c9 child_process: handle ENOENT correctly on Windows 2013-03-05 23:47:35 -08:00
Nathan Rajlich
4d809e297f process: invoke EventEmitter on process
This properly sets the `_maxListeners` property, which
fixes the max listener warning. Closes #4924.
2013-03-05 21:15:45 -08:00
Timothy J Fontaine
f9ba9f7bad build: define nightly tag external to build system 2013-03-05 14:43:27 -08:00
isaacs
312289b791 stream: Use class for write buffer entries 2013-03-05 14:27:16 -08:00
isaacs
426b4c6258 stream: _write takes an encoding argument
This vastly reduces the overhead of decodeStrings:false streams,
such as net and http.
2013-03-05 14:27:15 -08:00
isaacs
cd68d86c32 stream: Remove output function from _transform
Just use stream.push(outputChunk) instead.
2013-03-05 14:27:15 -08:00
isaacs
049903e333 stream: Split Writable logic into small functions
1. Get rid of unnecessary 'finishing' flag
2. Dont check both ending and ended. Extraneous.

Also: Remove extraneous 'finishing' flag, and don't check both 'ending'
and 'ended', since checking just 'ending' is sufficient.
2013-03-05 14:26:34 -08:00
isaacs
e4383c0170 bench: Add flag to be silent in runner
This is helpful in tracking down bailouts and deopts in Stream classes,
without triggering one from the string write in console.log
2013-03-05 14:23:01 -08:00
Nathan Rajlich
dd6432dcf0 process: invoke EventEmitter on process
This properly sets the `_maxListeners` property, which
fixes the max listener warning. Closes #4924.
2013-03-05 14:06:36 -08:00
Bert Belder
c0a5af8d07 Revert "build, windows: disable SEH"
This is no longer necessary - the underlying issue was fixed in 01fa5ee.
This reverts commit d879042860.
2013-03-05 19:40:02 +01:00
Bert Belder
01fa5ee21d win/openssl: mark assembled object files as seh safe
There are no unsafe structured exception handlers in object files
generated from hand-crafted assembly - because they contain no exception
handlers at all.
2013-03-05 19:39:45 +01:00
Paolo Fragomeni
8e2376b376 Update domain.markdown 2013-03-05 08:15:54 -08:00
Ben Noordhuis
f7b06e0bbc deps: upgrade libuv to 0b26af3 2013-03-05 16:10:13 +01:00
Ben Noordhuis
862f7b850d Merge remote-tracking branch 'origin/v0.8' 2013-03-05 15:43:03 +01:00
Ben Noordhuis
532d9929c7 cluster: propagate bind errors
This commit fixes a bug where the cluster module fails to propagate
EADDRINUSE errors.

When a worker starts a (net, http) server, it requests the listen socket
from its master who then creates and binds the socket.

Now, OS X and Windows don't always signal EADDRINUSE from bind() but
instead defer the error until a later syscall. libuv mimics this
behaviour to provide consistent behaviour across platforms but that
means the worker could end up with a socket that is not actually bound
to the requested addresss.

That's why the worker now checks if the socket is bound, raising
EADDRINUSE if that's not the case.

Fixes #2721.
2013-03-05 15:23:55 +01:00
Felix Böhm
3e64b5677f events: loop backwards in removeListener
`removeAllListeners` is removing events from end to start. Therefore
it spends O(n^2) time, since `removeListener` is searching from start to
end.
2013-03-05 12:47:57 +04:00
Trevor Norris
d09ab61dcd events: code consistency
v8 likes when smaller functions have a single return point, and cleaned
up the single non-strict check.
2013-03-04 11:59:55 -08:00
Trevor Norris
04688614f7 events: remove type check for event type
Strict checking for typeof types broke backwards compatibility for other
libraries. This reverts those checks.

The subclass test has been changed to ensure all operations can be
performed on the inherited EE before instantiation. Including the
ability to set event names with numbers.
2013-03-04 11:57:35 -08:00
Ben Noordhuis
ecf9f606c9 doc: add url.resolve() usage examples
Fixes #4913.
2013-03-04 20:54:36 +01:00
Bert Belder
890dc2eeb1 win/msi: make msi build work when spaces are present in the path 2013-03-04 19:47:05 +01:00
isaacs
119cbf4854 stream: Don't require read(0) to emit 'readable' event
When a readable listener is added, call read(0) so that data will flow in, up to
the high water mark.

Otherwise, it's somewhat confusing that you have to listen for readable,
and ALSO call read() (when it will certainly return null) just to get some
data out of the stream.

See: #4720
2013-03-04 07:38:32 -08:00
Xidorn Quan
009ba02e18 dns: fix ReferenceError in resolve() error path
A typo in the variable name makes it throw a ReferenceError instead of
the expected "Unknown type" error when dns.resolve() is passed a bad
record type argument.

Fixes the following exception:

  ReferenceError: type is not defined
    at Object.exports.resolve (dns.js:189:40)
    at /Users/bnoordhuis/src/master/test/simple/test-c-ares.js:48:9
    <snip>
2013-03-04 16:20:40 +01:00
Rod Vagg
a6a1659d85 link to LevelUP modules wiki page, not level-hooks 2013-03-03 22:12:53 -08:00
Rod Vagg
906f824bab link to LevelUP modules wiki page, not level-hooks 2013-03-03 22:12:09 -08:00
isaacs
e428bb7eae cluster: Rename destroy() to kill(signal=SIGTERM)
Fix #4133, bringing the cluster worker API more in line with the
child process API.
2013-03-03 17:26:38 -08:00
isaacs
384f1be739 stream: Writable.end(chunk) after end is an error
Calling end(data) calls write(data).  Doing this after end should
raise a 'write after end' error.

However, because end() calls were previously ignored on already
ended streams, this error was confusingly suppressed, even though the
data never is written, and cannot get to the other side.

This is a re-hash of 5222d19a11, but
without assuming that the data passed to end() is valid, and thus
breaking a bunch of tests.
2013-03-03 17:26:38 -08:00
Aaron Cannon
0c57b31190 doc: Add crypto.pseudoRandomBytes, fix typo 2013-03-03 15:30:49 -08:00
Dave Olszewski
22aa767421 make repl compatible with domains
The try/catch in repl.js keeps any active domain from catching the
error.  Since the domain may not even be enterd until the code is run,
it's not possible to avoid the try/catch, so emit on the domain when an
error is thrown.
2013-03-03 15:28:45 -08:00
Ben Noordhuis
80ea63b958 Revert "stream: Writable.end(chunk) after end is an error"
It's breaking ~22 tests, Needs further investigation.

This reverts commit 5222d19a11.
2013-03-03 02:21:28 +01:00
isaacs
f5d84965d7 doc: Typo in ChangeLog
downgrade TO 3.14
2013-03-02 16:10:21 -08:00
isaacs
5222d19a11 stream: Writable.end(chunk) after end is an error
Calling end(data) calls write(data).  Doing this after end should
raise a 'write after end' error.

However, because end() calls were previously ignored on already
ended streams, this error was confusingly suppressed, even though the
data never is written, and cannot get to the other side.
2013-03-02 16:09:16 -08:00
isaacs
63edde0e01 events: Handle emit('error') before ctor
The previous commit did not handle the case when the event type
is 'error', since that is checked before reading the handler.
2013-03-02 15:11:23 -08:00
isaacs
d345c1173a events: Handle emit before constructor call 2013-03-02 15:01:20 -08:00
Ben Noordhuis
2d51036fb9 Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	doc/api/http.markdown
	test/simple/test-crypto.js
2013-03-02 23:13:35 +01:00
Ben Noordhuis
426cbedb44 test: make simple/test-dgram-pingpong respect PORT
Don't use hard-coded port numbers, use common.PORT instead.

Should fix the occasional Jenkins failure; the builds run in parallel.
2013-03-02 23:04:06 +01:00
isaacs
4ac73d2c99 net: s/closed/ended/ in write-after-fin message 2013-03-02 11:50:33 -08:00
isaacs
2106ef000c net: Provide better error when writing after FIN
The stock writable stream "write after end" message is overly vague, if
you have clearly not called end() yourself yet.

When we receive a FIN from the other side, and call destroySoon() as a
result, then generate an EPIPE error (which is what would happen if you
did actually write to the socket), with a message explaining what
actually happened.
2013-03-02 11:26:39 -08:00
Raymond Feng
47e115063b windows/msi: fix msi build issue with WiX 3.7/3.8
The `heat` tool that gathers NPM source files wasn't getting called.
Closes #4896
2013-03-02 20:06:45 +01:00
Timothy J Fontaine
0b70a14abf test: optionally set common.PORT via env variable
This is a back-port of commit 17a8126 from the master branch.
2013-03-02 19:09:39 +01:00
Ben Noordhuis
93156a6057 test: unlink temp file at test start
The file has a long name that's apparently impossible to remove with
`git clean` on Windows.
2013-03-02 02:43:02 +01:00
Trevor Norris
d1b4dcd6ac events: add type checks to once
Also cleanup unnecessary use of "self" since it will always be called
using .apply() from emit.
2013-03-01 17:36:48 -08:00
Trevor Norris
e1ac2ef7cf events: emit cleanup
Cleanup check logic. Place vars at top. Remove PROCESS.
2013-03-01 17:36:48 -08:00
Trevor Norris
1ccc6fbe05 events: additional type check for addListener
Check both passed args to addListener.

Place var at beginning.
2013-03-01 17:36:48 -08:00
Trevor Norris
4f7f8bbdf8 events: _events to object and undefined not null
By making sure the _events is always an object there is one less check
that needs to be performed by emit.

Use undefined instead of null. typeof checks are a lot faster than
isArray.

There are a few places where the this._events check cannot be removed
because it is possible for the user to call those methods after using
utils.extend to create their own EventEmitter, but before it has
actually been instantiated.
2013-03-01 17:36:47 -08:00
Trevor Norris
b3ea8443bd events: removeListener add checks and cleanup
Remove unecessary splice for single listener events. Add type check for
"type" argument.
2013-03-01 17:36:47 -08:00
Trevor Norris
aba03ebb5a events: type check listeners
Make sure the argument passed is a string. Also use typeof === function
check instead of isArray().
2013-03-01 17:36:47 -08:00
Trevor Norris
8ab346c98f events: simplify removeAllListeners logic
Unnecessary checks were being performed on if the event existed before
being removed.

_events starts out as null, so reset to null when emptied.

Checking typeof is a lot cheaper than isArray().
2013-03-01 17:36:47 -08:00
Trevor Norris
dd171d24df events: type check setMaxListeners, cleanup throws
setMaxListeners will now make sure a positive number is passed. Also
throwing more definitive Error types.
2013-03-01 17:36:47 -08:00
Trevor Norris
8ca43a7f40 events: ensure usingDomain is always boolean
Small addition to ensure that exports.usingDomains is always a bool.
2013-03-01 17:36:47 -08:00
Trevor Norris
75305f3bab events: add check for listeners length
Ability to return just the length of listeners for a given type, using
EventEmitter.listenerCount(emitter, event). This will be a lot cheaper
than creating a copy of the listeners array just to check its length.
2013-03-01 17:36:47 -08:00
Ben Noordhuis
7189b3ed33 crypto: don't assert when calling Cipher#final() twice
Remove the assert() that triggered when Cipher#final() or
Decipher#final() was called twice.

Fixes #4886.
2013-03-02 02:13:18 +01:00
Ben Noordhuis
7707acd6ef deps: upgrade libuv to 7e59f9b 2013-03-02 01:49:19 +01:00
Lars-Magnus Skog
4b20f3440d doc change for Readable._read() 2013-03-01 16:33:48 -08:00
isaacs
fc22986023 doc: Clarify advisory-ness of stream._read() argument 2013-03-01 14:26:35 -08:00
Gil Pedersen
13c8bc8917 doc: Update to reflect new _read() interface 2013-03-01 14:23:51 -08:00
Evan Oxfeld
16ddc545bd doc: Fix readable.unshift() example
Slice the portion of the buffer to unshift back into the read queue
2013-03-01 14:21:34 -08:00
Scott Blomquist
6366a3057c build/windows: don't use wrong version number
We were using a global temp file while setting the NODE_VERSION
environment variable. This resulted in simultaneous builds swapping
version numbers on occasion.

This patch removes the use of a temp file for this.
2013-03-01 13:30:25 -08:00
isaacs
be770a3839 blog: Post about v0.9.11 2013-03-01 11:24:46 -08:00
isaacs
33aafbd882 doc: Correct version in changelog 2013-03-01 11:23:55 -08:00
isaacs
4cda016c26 Now working on 0.9.12 2013-03-01 11:19:38 -08:00
isaacs
300802d513 Merge branch 'v0.9.11-release' 2013-03-01 11:19:20 -08:00
isaacs
83392403b7 2013.03.01, Version 0.9.10 (Unstable)
* V8: downgrade 3.14.5

* openssl: update to 1.0.1e

* darwin: Make process.title work properly (Ben Noordhuis)

* fs: Support mode/flag options to read/append/writeFile (isaacs)

* stream: _read() no longer takes a callback (isaacs)

* stream: Add stream.unshift(chunk) (isaacs)

* stream: remove lowWaterMark feature (isaacs)

* net: omit superfluous 'connect' event (Ben Noordhuis)

* build, windows: disable SEH (Ben Noordhuis)

* core: remove errno global (Ben Noordhuis)

* core: Remove the nextTick for running the main file (isaacs)

* core: Mark exit() calls with status codes (isaacs)

* core: Fix debug signal handler race condition lock (isaacs)

* crypto: clear error stack (Ben Noordhuis)

* test: optionally set common.PORT via env variable (Timothy J Fontaine)

* path: Throw TypeError on non-string args to path.resolve/join (isaacs, Arianit Uka)

* crypto: fix uninitialized memory access in openssl (Ben Noordhuis)
2013-03-01 10:59:24 -08:00
isaacs
687522c5a5 blog: Do not pass undefined to path.join 2013-03-01 10:58:17 -08:00
isaacs
0928a526dd fs: Support mode/flag options to read/append/writeFile
Fix #4841
2013-03-01 09:48:57 -08:00
isaacs
55aa973bee test: Put fs write test files in tmp
This prevents fixture litter when these tests fail.
2013-03-01 08:55:05 -08:00
Ben Noordhuis
f26362e938 http: use socket.once, not socket.on
Register the 'close' event listener with .once(), not .on().

It doesn't matter in the grand scheme of things because the listener
doesn't keep references to any heavy-weight objects but using .once()
for a oneshot listener is something of a best practice.
2013-03-01 13:11:40 +01:00
Timothy J Fontaine
f0f87d8afb build: windows should append date if nightly 2013-03-01 02:44:31 +01:00
isaacs
4926ffd14b doc: Provide 2 examples of SimpleProtocol parser
The first example uses Readable, and shows the use of
readable.unshift().  The second uses the Transform class, showing that
it's much simpler in this case.
2013-02-28 17:38:17 -08:00
isaacs
88644eaa2d stream: There is no _read cb, there is only push
This makes it so that `stream.push(chunk)` is the only way to signal the
end of reading, removing the confusing disparity between the
callback-style _read method, and the fact that most real-world streams
do not have a 1:1 corollation between the "please give me data" event,
and the actual arrival of a chunk of data.

It is still possible, of course, to implement a `CallbackReadable` on
top of this.  Simply provide a method like this as the callback:

    function readCallback(er, chunk) {
      if (er)
        stream.emit('error', er);
      else
        stream.push(chunk);
    }

However, *only* fs streams actually would behave in this way, so it
makes not a lot of sense to make TCP, TLS, HTTP, and all the rest have
to bend into this uncomfortable paradigm.
2013-02-28 17:38:17 -08:00
isaacs
4b67f0be6d stream: Add stream.unshift(chunk) 2013-02-28 17:38:17 -08:00
isaacs
7764b84297 stream: Break up the onread function
A primary motivation of this is to make the onread function more
inline-friendly, but also to make it more easy to explore not having
onread at all, in favor of always using push() to signal the end of
reading.
2013-02-28 17:38:17 -08:00
Ben Noordhuis
c11612026f net: omit superfluous 'connect' event
Don't emit a 'connect' event on sockets that are handed off to
net.Server 'connection' event listeners.

1. It's superfluous because the connection has already been established
   at that point.

2. The implementation is arguably wrong because the event is emitted on
   the same tick of the event loop while the rule of thumb is to always
   emit it on the next one.

This has been tried before in commit f0a440d but was reverted again in
ede1acc because the change was incomplete (at least one test hadn't
been updated).

Fixes #1047 (again).
2013-03-01 02:09:36 +01:00
Ben Noordhuis
bb431531a3 deps: upgrade libuv to 2a8d2a5 2013-03-01 02:04:29 +01:00
Ben Noordhuis
c53b921648 test: disable simple/test-process-getgroups on os x
The output of `id -G` is unreliable on OS X. It uses an undocumented
Libsystem function called getgrouplist_2() that includes some auxiliary
groups that the POSIX getgroups() function does not return.

Or rather, not always. It leads to fun bug chases where the test fails
in one terminal but not in another.
2013-03-01 00:48:19 +01:00
Eugene Girshov
50ba0f27d9 doc: remove note about close event 2013-03-01 00:01:06 +01:00
Ben Noordhuis
d019bec72d Merge remote-tracking branch 'origin/v0.8' 2013-02-28 23:13:54 +01:00
Timothy J Fontaine
d032ff4954 test: fix tap output on windows
Test output is always \n and not platform dependent
2013-02-28 23:13:05 +01:00
Ben Noordhuis
12d0f0bd3a lib, src: remove errno global
Remove the errno global. It's a property on the process object now.

Fixes #3095.
2013-02-28 23:11:47 +01:00
Scott Blomquist
1762ba37ca test: add cleanup to long path test 2013-02-28 09:21:47 -08:00
Ben Noordhuis
cb87920ba9 Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	AUTHORS
	ChangeLog
	deps/uv/src/unix/pipe.c
	lib/http.js
	src/node_version.h
2013-02-28 16:58:24 +01:00
Ben Noordhuis
d879042860 build, windows: disable SEH
Turn off safe exception handlers, they're incompatible with how
openssl is compiled / linked under MSVS 2012.

Addresses the following build error:

  openssl.lib(x86cpuid.obj) : error LNK2026: module unsafe for SAFESEH
  image. [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]
  openssl.lib(x86.obj) : error LNK2026: module unsafe for SAFESEH
  image. [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]
  # etc. etc.
  g:\jenkins\workspace\nodejs-oneoff\Release\node.exe : fatal error
  LNK1281: Unable to generate SAFESEH image.
  [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]

Fixes #4242.
2013-02-28 16:40:13 +01:00
Ben Noordhuis
522668b5d9 doc: update instructions on home page
Document how to run the example on the home page in more detail.

Apparently our Windows brethren are prone to double-clicking on the
binary instead of running it from the command line.

Fixes #4854.
2013-02-28 16:30:46 +01:00
Trevor Norris
0c1e7b53d0 process: separate nextTick domain logic
It's cleaner to only load domain ticker logic when the domains are being
used. This makes execution slightly quicker in both cases, and simpler
from the spinner since there is no need to check if the latest callback
requires use of domains.
2013-02-27 16:37:10 -08:00
isaacs
875e4a0c59 core: Remove the nextTick for running the main file
Not necessary, since we can handle the error properly on the first tick
now, even if there are event listeners, etc.

Additionally, this removes the unnecessary "_needTickCallback" from
startup, since Module.loadMain() will kick off a nextTick callback right
after it runs the main module.

Fix #4856
2013-02-27 16:29:36 -08:00
isaacs
95862b2380 core: Mark exit() calls with status codes
Also, exit with 128+n for signal exit n, as is The Unix Way.
2013-02-27 14:47:01 -08:00
Ben Noordhuis
c6e2db2f14 crypto: clear error stack
Clear OpenSSL's error stack on return from Connection::HandleSSLError().
This stops stale errors from popping up later in the lifecycle of the
SSL connection where they would cause spurious failures.

This commit causes a 1-2% performance regression on `make bench-tls`.
We'll address that in follow-up commits if possible but let's ensure
correctness first.

Fixes #4771.
2013-02-27 23:31:40 +01:00
Scott Blomquist
f054fec535 openssl: regenerate asm files for openssl 1.0.1e 2013-02-26 22:56:54 -08:00
isaacs
86433979c6 stream: Writables are not pipe()able
This handles the fact that stream.Writable inherits from the Stream class,
meaning that it has the legacy pipe() method.  Override that with a pipe()
method that emits an error.

Ensure that Duplex streams ARE still pipe()able, however.

Since the 'readable' flag on streams is sometimes temporary, it's probably
better not to put too much weight on that.  But if something is an instanceof
Writable, rather than of Readable or Duplex, then it's safe to say that
reading from it is the wrong thing to do.

Fix #3647
2013-02-26 18:54:05 -08:00
isaacs
586e160a25 test: Use common.PORT in simple/test-http-timeout 2013-02-26 17:54:18 -08:00
isaacs
1b870b6127 test: Move test-net-connect-timeout to test/internet
It is not a valid test unless you're connected to the internet, and causes
a lot of spurious failures on Linux anyway, as it's highly dependent on
timing of things that we don't have any control over.
2013-02-26 17:39:04 -08:00
isaacs
937662b03e test: Use common.PORT to determine debugger port 2013-02-26 17:33:30 -08:00
isaacs
ec378aaa69 test: Fix debugger repl tests
This makes the output of simple/test-debugger-repl and
simle/test-debugger-repl-utf8 mirror an actual debugger session, so it's
a bit easier to reason about.

Also, it uses the same code for both, and fixes it so that it doesn't
leave zombie processes lying around when it crashes.

Run 1000 times without any failures or zombies.
2013-02-26 16:49:17 -08:00
isaacs
57f9f048d3 test: catch break in simple/test-debugger-client
Handle break events that come out sometimes, by telling it to continue.

Also, send the child a SIGTERM when it times out.
2013-02-26 16:48:44 -08:00
isaacs
30e5366b29 core: Use a uv_signal for debug listener
Starting the debugger directly in the SIGUSR1 signal handler results in
a malloc lock contention ~1% of the time.  It hangs the test, which is
annoying on a daily basis to all of us, but it also is pretty terrible
if you actually want to debug a node process that has gone sideways.

Credit to @bnoordhuis for most of this.  I just added the unref which
keeps it from messing up the event loop for other stuff.
2013-02-26 16:46:26 -08:00
Ben Noordhuis
7bc449c063 deps: upgrade libuv to a0c1d84 2013-02-26 20:30:12 +01:00
Ben Noordhuis
e505f91266 test: merge environment, don't overwrite
The CI system requires that some environment variables are set so merge
our variables into the current environment instead of blindly replacing
it.

This will probably have to be repeated for other tests. C'est la vie.
2013-02-26 19:42:08 +01:00
yangguo@chromium.org
cfacde3ac6 v8: Hardfloat does not imply VFPv3, only VFPv2.
Raspberry Pi is an example.

BUG=v8:2393

Review URL: https://chromiumcodereview.appspot.com/11570061
Patch from Chi-Thanh Christopher Nguyen <nguyenchithanh@gmail.com>.

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

This is a backport of v8/v8@44419ad089.
2013-02-26 18:44:02 +01:00
Ben Noordhuis
c80bde1781 v8: work around String::WriteAscii segfault
See http://code.google.com/p/v8/issues/detail?id=2493 for details.

This commit reapplies 9668df8. The issue has been fixed upstream but
reappeared after last night's downgrade to V8 3.14.5 in commit b15a10e.

Conflicts:
	test/simple/test-buffer.js
2013-02-26 18:27:30 +01:00
Timothy J Fontaine
17a812618d test: optionally set common.PORT via env variable 2013-02-26 08:07:46 -08:00
Andrei Sedoi
17c6fe2e22 mips: fix openssl build 2013-02-26 17:03:07 +01:00
Timothy J Fontaine
8fe72a7f27 build: automatically add tag for nightly builds 2013-02-26 15:33:13 +01:00
Ben Noordhuis
d4a297ccb0 http: fix case in 505 response status line
Fixes #4850.
2013-02-26 15:18:40 +01:00
Fedor Indutny
aa98539277 v8: fix postmortem and dtrace helper build
Regardless of previous @bnoordhuis' changes
2013-02-26 08:17:21 +00:00
Fedor Indutny
3d913fec83 Revert "sunos: unbreak build after v8 downgrade"
This reverts commit f80f3c5f62.
2013-02-26 07:57:12 +00:00
isaacs
88befa6021 bench: Make http easier to profile
Do not run the http/simple.js server in a child process.

Fix #4831
2013-02-25 17:47:28 -08:00
Ben Noordhuis
f80f3c5f62 sunos: unbreak build after v8 downgrade
Commit 3d67f89 ("fix generation of v8 constants on freebsd") is an
unfortunate victim of this rollback.

Revert "dtrace: fix generation of v8 constants on freebsd"
Revert "dtrace: More style"
Revert "dtrace: Make D style more D-ish"
Revert "dtrace: x64 ustack helper"
Revert "dtrace: fix style in ustack helper"
Revert "dtrace: SeqAsciiString was renamed to SeqOneByteString in v8"

This reverts commit 3d67f89552.
This reverts commit 321b8eec08.
This reverts commit 38df9d51a2.
This reverts commit f9afb3f010.
This reverts commit 13296e4b13.
This reverts commit 3b715edda9.
2013-02-26 01:30:44 +01:00
Ben Noordhuis
51f6e6a9b3 src, test: downgrade to v8 3.14 api 2013-02-25 23:45:02 +01:00
Ben Noordhuis
03fe7fb55c v8: reapply floating patches
Reapply floating patches. Special mention: also reapplies 017009f but
with the extra change of removing DescriptorArray::kTransitionsIndex
from the postmortem metadata generator because said field no longer
exists in V8 3.14.
2013-02-25 23:45:02 +01:00
Ben Noordhuis
b15a10e7a0 deps: downgrade v8 to 3.14.5
V8 3.15 and newer have stability and performance issues. Roll back to
a known-good version.
2013-02-25 23:45:02 +01:00
isaacs
82357b87eb blog: Update with EINPROGRESS changelog item 2013-02-25 14:17:11 -08:00
isaacs
fafb67c65b ChangeLog: Missed item about EINPROGRESS 2013-02-25 13:57:02 -08:00
isaacs
f8ae4446ee blog: Post for v0.8.21 2013-02-25 13:56:46 -08:00
isaacs
33e8e694e8 Now working on 0.8.22 2013-02-25 13:52:13 -08:00
isaacs
7b92b301fa Merge branch 'v0.8.21-release' into v0.8 2013-02-25 13:51:15 -08:00
isaacs
530d8c05d4 2013.02.25, Version 0.8.21 (Stable)
* http: Do not free the wrong parser on socket close (isaacs)

* http: Handle hangup writes more gently (isaacs)

* zlib: fix assert on bad input (Ben Noordhuis)

* test: add TAP output to the test runner (Timothy J Fontaine)

* unix: Handle EINPROGRESS from domain sockets (Ben Noordhuis)
2013-02-25 13:07:25 -08:00
isaacs
ff540e19a4 uv: Upgrade to 86ae8b3c 2013-02-25 13:07:25 -08:00
isaacs
b0e7dbf2c0 http: Do not free the wrong parser on socket close
This appears to fix #4673.  That bug is very hard to reproduce, so it's
hard to tell for certain, but this approach is more correct anyway.

Hat-tip: @dougwilson
2013-02-25 09:06:46 -08:00
isaacs
34046084c0 stream: Do not switch to objectMode implicitly
Only handle objects if explicitly told to do so in the options
object.  Non-buffer/string chunks are an error if not already in
objectMode.

Close #4662
2013-02-25 07:38:10 -08:00
isaacs
e03bc472f0 stream: Start out in sync=true state
The Readable and Writable classes will nextTick certain things
if in sync mode.  The sync flag gets unset after a call to _read
or _write.  However, most of these behaviors should also be
deferred until nextTick if no reads have been made (for example,
the automatic '_read up to hwm' behavior on Readable.push(chunk))

Set the sync flag to true in the constructor, so that it will not
trigger an immediate 'readable' event, call to _read, before the
user has had a chance to set a _read method implementation.
2013-02-25 07:38:10 -08:00
Ben Noordhuis
4231dab39f crypto: fix base64 padding regression
Commit 9901b69c introduces a small regression where the trailing base64
padding is no longer written out when Cipher#final is called. Rectify
that.

Fixes #4837.
2013-02-25 15:21:52 +01:00
Ben Noordhuis
8df893c62e test: re-enable simple/test-setproctitle on darwin
The functionality is available again per joyent/libuv@14eb8b0
and joyent/libuv@e89aced.

Fixes #3687.
2013-02-24 04:07:42 +01:00
Ben Noordhuis
de9ee2a483 deps: upgrade libuv to e89aced 2013-02-24 04:03:49 +01:00
isaacs
74c08403d8 lint 2013-02-22 16:30:27 -08:00
isaacs
27d1babaae streams: Pre-emptively buffer readables up to the highWaterMark
Also, this adds a test that guarantees that the ordering of several
push() calls in a row is always preserved in synchronous readable streams
2013-02-22 11:24:05 -08:00
isaacs
f9a0140ef1 http: Handle hangup writes more gently 2013-02-22 10:35:07 -08:00
Ben Noordhuis
22d3eff8f4 doc: add note about child process line buffering
Fixes #4808.
2013-02-22 01:19:40 +01:00
isaacs
a63c28e6eb stream: Return false from push() more properly
There are cases where a push() call would return true, even though
the thing being pushed was in fact way way larger than the high
water mark, simply because the 'needReadable' was already set, and
would not get unset until nextTick.

In some cases, this could lead to an infinite loop of pushing data
into the buffer, never getting to the 'readable' event which would
unset the needReadable flag.

Fix by splitting up the emitReadable function, so that it always
sets the flag on this tick, even if it defers until nextTick to
actually emit the event.

Also, if we're not ending or already in the process of reading, it
now calls read(0) if we're below the high water mark.  Thus, the
highWaterMark value is the intended amount to buffer up to, and it
is smarter about hitting the target.
2013-02-21 15:23:18 -08:00
isaacs
3b2e9d2648 stream: remove lowWaterMark feature
It seems like a good idea on the face of it, but lowWaterMarks are
actually not useful, and in practice should always be set to zero.

It would be worthwhile for writers if we actually did some kind of
writev() type of thing, but actually this just delays calling write()
and the overhead of doing a bunch of Buffer copies is not worth the
slight benefit of calling write() fewer times.
2013-02-21 15:23:18 -08:00
isaacs
089ec58613 path: Throw TypeError on non-string args to path.resolve 2013-02-21 15:18:44 -08:00
Ben Noordhuis
ef94521909 zlib: fix assert on bad input
The following test case occasionally triggered an assert because
write_in_progress_ didn't get cleared on error:

  $ cat test.js
  require('zlib').gunzip('BAM', console.log);
  setTimeout(gc, 10);

  $ while true; do node --expose-gc test.js || break; done
  { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
  Assertion failed: (!write_in_progress_ && "write in progress"),
  function Clear, file ../src/node_zlib.cc, line 71.
  Abort trap: 6

Steps to avoid that:

* Initialize all primitive member fields in the constructor.
* Clear the write_in_progress_ member field in ZCtx::Error().
* Ref the ZCtx object as soon as write_in_progress_ is set to true.
  Before this commit, it could get GC'ed in the time between setting
  the field and the call to ctx->Ref().

Fixes #4783.
2013-02-22 00:08:26 +01:00
Nathan Rajlich
50c88e0ff2 test: modify async native test.js to test for #4820 2013-02-21 13:14:07 -08:00
Nathan Rajlich
4b61522f16 test: add an "async-hello-world" native addon test 2013-02-21 13:14:07 -08:00
Arianit Uka
055110dab0 path: join throws TypeError on non-string args
lib/path.js:
  - throws a TypeError on the filter if the argument is not a string.

test/simple/test-path.js:
  - removed the test to check if non-string types are filtered.
  - added a test to check if path.join throws TypeError on arguments that
    are not strings.
2013-02-21 11:50:47 -08:00
Fedor Indutny
ebc95f0716 tls: _handle.readStart/readStop for CryptoStream
lib/http.js is using stream._handle.readStart/readStop to control
data-flow coming out from underlying stream. If this methods are not
present - data might be buffered regardless of whether it'll be read.

see #4657
2013-02-21 23:29:18 +04:00
Trevor Norris
7301ba3969 process: fix bug where spinner wasn't called
Apperently there is a case where calling the spinner was required after
passing a callback to nextTick(). This fixes that issue.
2013-02-21 10:31:01 -08:00
isaacs
bbcb8b3ae0 path: Do not coerce paths to strings on Windows
Fix #4795
2013-02-20 14:04:30 -08:00
Ben Noordhuis
9d10bf58a3 stream_wrap: remove superfluous buffer len check
It's a buffer so it's never bigger than Buffer::kMaxLength bytes,
which in turn is always < INT_MAX.
2013-02-20 22:17:36 +01:00
Ben Noordhuis
6ad792610b deps: upgrade libuv to 26fa6f8 2013-02-20 21:29:52 +01:00
Trevor Norris
d69a26b965 buffer: check logic simplification
Checks have been simplified and optimized for most-used cases.

Calling Buffer with another Buffer as the subject will now use the
SlowBuffer Copy method instead of the for loop.

No need to call for value coercion, just place the ternary inline.
2013-02-20 20:34:34 +01:00
Timothy J Fontaine
9d45b945f7 test: add TAP output to the test runner
This is a back-port of commit 14ed173 from the master branch.
2013-02-20 18:50:55 +01:00
isaacs
053e02ef8e benchmark: Fix alignment issues on --html compare output 2013-02-20 09:17:29 -08:00
Ben Noordhuis
57ef65916b node: code cleanup, make tick_infobox static
It's not used outside of src/node.cc so make it static.
2013-02-20 14:15:11 +01:00
Ben Noordhuis
0dcbecd32b crypto: fix uninitialized memory access in openssl
ASN1_STRING_to_UTF8() passes an ASN1_STRING to ASN1_STRING_set() but forgot to
initialize the `length` field.

Fixes the following valgrind error:

  $ valgrind -q --track-origins=yes --num-callers=19 \
      out/Debug/node test/simple/test-tls-client-abort.js
  ==2690== Conditional jump or move depends on uninitialised value(s)
  ==2690==    at 0x784B69: ASN1_STRING_set (asn1_lib.c:382)
  ==2690==    by 0x809564: ASN1_mbstring_ncopy (a_mbstr.c:204)
  ==2690==    by 0x8090F0: ASN1_mbstring_copy (a_mbstr.c:86)
  ==2690==    by 0x782F1F: ASN1_STRING_to_UTF8 (a_strex.c:570)
  ==2690==    by 0x78F090: asn1_string_canon (x_name.c:409)
  ==2690==    by 0x78EF17: x509_name_canon (x_name.c:354)
  ==2690==    by 0x78EA7D: x509_name_ex_d2i (x_name.c:210)
  ==2690==    by 0x788058: ASN1_item_ex_d2i (tasn_dec.c:239)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x787C93: ASN1_item_d2i (tasn_dec.c:136)
  ==2690==    by 0x78F5E4: d2i_X509 (x_x509.c:141)
  ==2690==    by 0x7C9B91: PEM_ASN1_read_bio (pem_oth.c:81)
  ==2690==    by 0x7CA506: PEM_read_bio_X509 (pem_x509.c:67)
  ==2690==    by 0x703C9A: node::crypto::SecureContext::AddRootCerts(v8::Arguments const&) (node_crypto.cc:497)
  ==2690==  Uninitialised value was created by a stack allocation
  ==2690==    at 0x782E89: ASN1_STRING_to_UTF8 (a_strex.c:560)
2013-02-20 17:01:47 +04:00
Bert Belder
da945a7376 openssl: make perlasm target pentium or newer for masm outputs
When perlasm generates MASM code it sets the assembler target to 468.
In this mode MASM refuses to assemble a couple of instructions. Bumping
the target to 686 solves this problem.
2013-02-20 17:00:29 +04:00
Bert Belder
eb29c4b2e6 openssl: disable HT sidechannel attack mitigation
It used to be off before. It's extremely unlikely that such an attack
would be a viable attack against node. And it makes AES much slower.
2013-02-20 16:49:03 +04:00
Fedor Indutny
f317f5aee9 openssl: update to 1.0.1e 2013-02-20 16:48:20 +04:00
isaacs
f1780a6be6 Merge branch 'benchmark-refactor-2' 2013-02-19 17:17:29 -08:00
isaacs
bd4d585b7a bench: Add bench-crypto 2013-02-19 17:16:55 -08:00
isaacs
4b80f217cd bench: Simplify duration arguments to benchmarks
For throughput benchmarks, run with just 5s durations rather than 1s and 3s.

For startup benchmark, run with just a single 1s duration, since it's very
consistent anyway.
2013-02-19 17:16:55 -08:00
isaacs
2ed56e5235 bench: Consistency in benchmark filenames 2013-02-19 17:16:55 -08:00
isaacs
1eb6a92984 bench: Only run http,net,fs,tls by default 2013-02-19 17:16:55 -08:00
isaacs
06fbcca6bb bench: Remove _bench_timer (no loner used) 2013-02-19 17:16:55 -08:00
isaacs
ef08f0fbb1 bench: Use wrk for http benchmarking
Remove ab, since it's no longer used.
2013-02-19 17:16:29 -08:00
isaacs
e850cbab1c tools: Add wrk for benchmarking http servers 2013-02-19 17:16:18 -08:00
isaacs
035aa6b4ce bench: Show % change rather than % difference 2013-02-19 14:14:39 -08:00
isaacs
087c437961 bench: Add --html to compare script 2013-02-19 14:14:38 -08:00
isaacs
7658f4c29c bench: Fail gracefully if function_call binding fails 2013-02-19 14:14:38 -08:00
isaacs
0e59efd079 make: Add benchmark make targets 2013-02-19 14:14:38 -08:00
isaacs
7d51745827 bench: Remove old run script 2013-02-19 14:14:37 -08:00
isaacs
0a406869df bench: Replace tls-fragmentation with tls/throughput 2013-02-19 14:14:37 -08:00
isaacs
bafc51c0f9 bench: Move tls-connect into benchmark/tls
Also, make it work properly with current node.
2013-02-19 14:14:37 -08:00
isaacs
8c719f7c71 bench: Make io.c output easier to read 2013-02-19 14:14:37 -08:00
isaacs
8a3f52170e bench: Remove io.js
Better covered by the other benchmark/fs scripts.
2013-02-19 14:14:36 -08:00
isaacs
2a64edb025 bench: Add fs write stream throughput 2013-02-19 14:14:36 -08:00
isaacs
1fc6f99340 bench: Add read-stream throughput 2013-02-19 14:14:36 -08:00
isaacs
6d116be7cf bench: Move fs-readfile.js to fs/readfile.js 2013-02-19 14:14:35 -08:00
isaacs
844b33205c bench: Move v8_bench into misc 2013-02-19 14:14:35 -08:00
isaacs
2a2942bd7f bench: Move string_creation into misc 2013-02-19 14:14:35 -08:00
isaacs
fef35fc4f1 bench: Remove settimeout (Covered by misc/timeout.js) 2013-02-19 14:14:35 -08:00
isaacs
3761be3d99 bench: Move timers to misc/timers 2013-02-19 14:14:34 -08:00
isaacs
7e5cd08061 bench: move next-tick to misc/next-tick-breadth 2013-02-19 14:14:34 -08:00
isaacs
f7a4ccb409 bench: Move nexttick-2 to misc/next-tick-depth
x
2013-02-19 14:14:34 -08:00
isaacs
44be55fc4e bench: Move process_loop to misc/spawn-echo 2013-02-19 14:14:34 -08:00
isaacs
4e1bcdcab9 bench: Add function_call to bench-misc 2013-02-19 14:14:33 -08:00
isaacs
e87ed91fac bench: Arrays 2013-02-19 14:14:33 -08:00
isaacs
3f67a48dd4 bench: Add buffers/dataview_set 2013-02-19 14:14:33 -08:00
isaacs
56b22956ad bench: Remove unused 'fast_buffer2' benchmarks 2013-02-19 14:14:33 -08:00
isaacs
048f7fd37c bench: Merge fast_buffer_creation and buffer_creation 2013-02-19 14:14:32 -08:00
isaacs
55aa2571a0 bench: Buffer read/write benchmarks 2013-02-19 14:14:32 -08:00
isaacs
419607e8eb bench: Buffer creation 2013-02-19 14:14:32 -08:00
isaacs
cc38528acf bench: buffer-base64-encode 2013-02-19 14:14:32 -08:00
isaacs
921c3c2097 bench: misc/startup.js 2013-02-19 14:14:31 -08:00
isaacs
3b16657e77 bench: misc/url 2013-02-19 14:14:31 -08:00
isaacs
536ce44689 bench: http benchmarks
Also: make http_simple less chatty
2013-02-19 14:14:31 -08:00
isaacs
d5d04a51d6 bench: Remove client_latency
No one actually knows what this is supposed to be doing,
anyway.  It's not a good benchmark.
2013-02-19 14:14:31 -08:00
isaacs
051c1317f9 bench: Remove throughput (covered by benchmark/net) 2013-02-19 14:14:30 -08:00
isaacs
e82f97401f bench: net benchmarks using common script 2013-02-19 14:14:30 -08:00
isaacs
baea73ccda bench: Move net-pipe into benchmark/net 2013-02-19 14:14:30 -08:00
isaacs
aa2edd4b89 bench: A compare script for analyzing benchmarks 2013-02-19 14:14:30 -08:00
isaacs
37077de83d bench: add runner 2013-02-19 14:14:29 -08:00
isaacs
dd069a2539 bench: Add ab() method to common for http testing 2013-02-19 14:14:29 -08:00
isaacs
00e1962495 bench: Add common script 2013-02-19 14:14:29 -08:00
isaacs
3267464586 blog: v0.9.10 2013-02-19 14:01:23 -08:00
isaacs
727151afd3 Now working on v0.9.11 2013-02-19 13:58:38 -08:00
isaacs
27a3ff6322 Merge branch 'v0.9.10-release' 2013-02-19 13:58:19 -08:00
isaacs
54d20ffba0 2013.02.19, Version 0.9.10 (Unstable)
* V8: Upgrade to 3.15.11.15

* npm: Upgrade to 1.2.12

* fs: Change default WriteStream config, increase perf (isaacs)

* process: streamlining tick callback logic (Trevor Norris)

* stream_wrap, udp_wrap: add read-only fd property (Ben Noordhuis)

* buffer: accept negative indices in Buffer#slice() (Ben Noordhuis)

* tls: Cycle data when underlying socket drains (isaacs)

* stream: read(0) should not always trigger _read(n,cb) (isaacs)

* stream: Empty strings/buffers do not signal EOF any longer (isaacs)

* crypto: improve cipher/decipher error messages (Ben Noordhuis)

* net: Respect the 'readable' flag on sockets (isaacs)

* net: don't suppress ECONNRESET (Ben Noordhuis)

* typed arrays: copy Buffer in typed array constructor (Ben Noordhuis)

* typed arrays: make DataView throw on non-ArrayBuffer (Ben Noordhuis)

* windows: MSI installer enhancements (Scott Blomquist, Jim Schubert)
2013-02-19 13:23:47 -08:00
isaacs
4911a30803 npm: Upgrade to 1.2.12 2013-02-19 13:18:36 -08:00
isaacs
60238cce12 tls: Write pending data on socket drain
Fixes #4800
2013-02-19 11:41:39 -08:00
isaacs
7f303707d5 test: Fix regression in tls test
Undefined reference, introduced by a77c29a.
2013-02-19 11:41:06 -08:00
isaacs
a77c29a0f9 test: Fix tls tests which fail sporadically
The count of ECONNRESETs is dependent on timing, and thus unreliable,
especially on Linux machines.
2013-02-19 14:22:14 +04:00
isaacs
75df612cd7 doc: Use 'close' rather than 'exit' in spawn examples
Close #4515
2013-02-18 11:24:14 -08:00
isaacs
09b1212254 http: Add fixme comment about ECONNRESET handling 2013-02-18 10:38:37 -08:00
isaacs
d75e39794b Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	AUTHORS
	ChangeLog
	lib/http.js
	src/node_version.h
	test/simple/test-http-header-response-splitting.js
2013-02-18 10:21:08 -08:00
Gil Pedersen
0a9930a230 stream: Pipe data in chunks matching read data
This creates better flow for large values of lowWaterMark.
2013-02-15 18:51:22 -08:00
isaacs
8476aefc8e fs: Change default WriteStream config, increase perf
This increases fs.WriteStream throughput dramatically by removing the
"higher default water marks" for fs.WriteStream.

Also includes a benchmark.  Current performance is significantly higher
than v0.8 for strings at all tested levels except size=1.  Buffer
performance is still lackluster.

Further improvement in the stream.Writable base class is required, but
this is a start.
2013-02-15 18:48:43 -08:00
isaacs
9299168f2a test: Bump up debugger timeouts
200ms is still short enough for occasional spurious failures.
2013-02-15 18:37:53 -08:00
Trevor Norris
ec4200068c process: allow ticker to cross communicate better
Using external memory values allows for quick communication between js
and cc land, so we can check if the js land callback needs to be run.
(this is where I meant that manually tracking nextTickQueue.length would
be helpful)

Also did some minor cleanup of removing the old Tick and
StartTickSpinner functions, and a few unneeded comments.

Conflicts:

	src/node.cc
2013-02-15 18:37:53 -08:00
Trevor Norris
86c0745a5e process: streamlining tick callback logic
* Callbacks from spinner now calls its own function, separate from the
  tickCallback logic
* MakeCallback will call a domain specific function if a domain is
  detected
* _tickCallback assumes no domains, until nextTick receives a callback
  with a domain. After that _tickCallback is overridden with the domain
  specific implementation.
* _needTickCallback runs in startup() instead of nextTick (isaacs)
* Fix bug in _fatalException where exit would be called twice (isaacs)
* Process.domain has a default value of null
* Manually track nextTickQueue.length (will be useful later)
* Update tests to reflect internal api changes
2013-02-15 18:13:01 -08:00
isaacs
95ac576bf9 Revert "Move MakeCallback to JS"
This reverts commit 0109a9f90a.

Also included:  Port all the changes to process._makeCallback into the
C++ version.  Immediate nextTick, etc.

This yields a slight boost in several benchmarks.  V8 is optimizing and
deoptimizing process._makeCallback repeatedly.
2013-02-15 18:13:01 -08:00
Shigeki Ohtsu
401cef797d doc: add setImmediate execute timing description 2013-02-15 16:11:05 -08:00
Shigeki Ohtsu
cd372510bb timer: move setImmediate from timer to uv_check
uv_check is the robust place to invoke setImmediate callbacks after
process.nextTick and before timers(setTimeout/setInterval)
2013-02-15 16:11:05 -08:00
isaacs
3f38069acf blog: Release v0.8.20 2013-02-15 11:24:20 -08:00
isaacs
01bff7e7a7 Now working on v0.8.21 2013-02-15 11:24:08 -08:00
isaacs
48521f1220 Merge branch 'v0.8.20-release' into v0.8 2013-02-15 11:23:55 -08:00
isaacs
e10c75579b 2013.02.15, Version 0.8.20 (Stable)
* npm: Upgrade to v1.2.11

* http: Do not let Agent hand out destroyed sockets (isaacs)

* http: Raise hangup error on destroyed socket write (isaacs)

* http: protect against response splitting attacks (Bert Belder)
2013-02-15 10:50:11 -08:00
isaacs
73be4608d9 npm: Upgrade to v1.2.11 2013-02-15 10:49:30 -08:00
isaacs
987338fe31 http: Do not let Agent hand out destroyed sockets
Fix #4373
2013-02-14 16:03:40 -08:00
isaacs
c9dcf5718c http: Raise hangup error on destroyed socket write
Prior to v0.10, Node ignored ECONNRESET errors in many situations.
There *are* valid cases in which ECONNRESET should be ignored as a
normal part of the TCP dance, but in many others, it's a very relevant
signal that must be heeded with care.

Exacerbating this problem, if the OutgoingMessage does not have a
req.connection._handle, it assumes that it is in the process of
connecting, and thus buffers writes up in an array.

The problem happens when you reuse a socket between two requests, and it
is destroyed abruptly in between them.  The writes will be buffered,
because the socket has no handle, but it's not ever going to GET a
handle, because it's not connecting, it's destroyed.

The proper fix is to treat ECONNRESET correctly.  However, this is a
behavior/semantics change, and cannot land in a stable branch.

Fix #4775
2013-02-14 16:03:40 -08:00
Ben Noordhuis
3e2be6f39f doc: clarify child_process.exec() stdio option
It only works for stdin, not stdout/stderr, for obvious reasons.
2013-02-14 19:42:14 +01:00
Ben Noordhuis
aec6e93931 doc: add tools/ dir to CONTRIBUTING.md verboten list 2013-02-14 12:42:57 +01:00
Dan Kohn
2e1ebbf2c5 doc: add prompt to fix repl_test.js example
Running repl.start without the prompt set produces this error:

repl.js:95
    throw new Error('An options Object, or a prompt String are required');
          ^
Error: An options Object, or a prompt String are required
    at new REPLServer (repl.js:95:11)
    at Object.exports.start (repl.js:321:14)
    at Object.<anonymous> (/Users/dan/Dropbox/Documents/dev/nextgen/repl_test.js:5:6)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
2013-02-13 16:40:27 +01:00
Ben Noordhuis
7bdd05bd66 stream_wrap, udp_wrap: add read-only fd property
Expose the file descriptor as a read-only property on the internal
handle objects. Intended for debugging purposes, not part of the API
proper. The property is always null on Windows.

Fixes #4754.
2013-02-13 16:11:20 +01:00
Ben Noordhuis
2d069c5210 udp_wrap: use proper imports in source file 2013-02-13 15:54:17 +01:00
Ben Noordhuis
b1b7b4e4e8 udp_wrap: don't use namespace imports in header
It's not really harmful but it's inconsistent with the other header
files.
2013-02-13 15:44:37 +01:00
Ben Noordhuis
3f7e88a852 buffer: accept negative indices in Buffer#slice()
A negative start or end parameter now indexes from the end of the
buffer. More in line with String#slice() and ArrayBuffer#slice().
2013-02-12 17:09:19 -08:00
isaacs
2789323902 net: Respect the 'readable' flag on sockets
Previously, we were only destroying sockets on end if their readable
side had already been ended.  This causes a problem for non-readable
streams, since we don't expect to ever see an 'end' event from those.

Treat the lack of a 'readable' flag the same as if it was an ended
readable stream.

Fix #4751
2013-02-12 16:49:26 -08:00
isaacs
82ad5fbe9a blog: Forgot slug on peer-dependencies article 2013-02-12 16:30:25 -08:00
isaacs
6dcadb9fc8 blog: Peer Dependencies article
Thanks, @domenic
2013-02-12 12:03:52 -08:00
Ben Noordhuis
19d29aa0e8 bench: make io.c file path configurable 2013-02-12 19:38:29 +01:00
Fedor Indutny
c34326b286 test: fix tests after ECONNRESET patch 2013-02-12 15:00:13 +04:00
Victor Costan
e235bce2ba Fix crypto.hmac behavior with empty keys.
node 0.9.6 introduced Buffer changes that cause the key argument of
Hmac::HmacInit (used in crypto.createHmac) to be NULL when the key is
empty. This argument is passed to OpenSSL's HMAC_Init, which does not
like NULL keys.

This change works around the issue by passing an empty string to
HMAC_Init when the key is empty, and adds crypto.createHmac tests for
the edge cases of empty keys and values.
2013-02-12 14:11:22 +04:00
isaacs
02374d0c17 tls: Cycle data when underlying socket drains 2013-02-11 16:43:10 -08:00
isaacs
1762dd7ed9 stream: read(0) should not always trigger _read(n,cb)
This is causing the CryptoStreams to get into an awful state when
there is a tight loop calling connection.write(chunk) waiting for
a false return.

Because CryptoStreams use read(0) to cycle data, this was causing
the encrypted side to pull way too much data in from the cleartext
side, since the read(0) would make it always call _read.

The unfortunate side effect, fixed in the next patch, is that
CryptoStreams don't automatically cycle when the Socket drains.
2013-02-11 16:43:09 -08:00
isaacs
6bd450155c stream: Empty strings/buffers do not signal EOF any longer 2013-02-11 16:43:09 -08:00
Ben Noordhuis
f5f9e8da71 crypto: improve cipher/decipher error messages
Throw the OpenSSL error string instead of the rather less informative
error message "fail".
2013-02-11 23:19:48 +01:00
isaacs
862b164209 test: update http tests for ECONNRESET change 2013-02-11 12:31:21 -08:00
Ben Noordhuis
14a4245051 net: don't suppress ECONNRESET
Let ECONNRESET network errors bubble up so clients can detect them.

Commit c4454d2e suppressed and turned them into regular end-of-stream
events to fix the then-failing simple/test-regress-GH-1531 test. See
also issue #1571 for (scant) details.

It turns out that special handling is no longer necessary. Remove the
special casing and let the error bubble up naturally.

pummel/test-https-ci-reneg-attack and pummel/test-tls-ci-reneg-attack
are updated because they expected an EPIPE error code that is now an
ECONNRESET. Suppression of the ECONNRESET prevented the test from
detecting that the connection has been severed whereupon the next
write would fail with an EPIPE.

Fixes #1776.
2013-02-11 12:31:21 -08:00
Ben Noordhuis
c7b84a1d01 fs: fix immediate WriteStream#end()
Fix an exception that was raised when the WriteStream was closed
immediately after creating it:

  TypeError: Cannot read property 'fd' of undefined
      at WriteStream.close (fs.js:1537:18)
      <snip>

Avoid the TypeError and make sure the file descriptor is closed.

Fixes #4745.
2013-02-11 21:15:13 +01:00
Ben Noordhuis
ed3d553d82 typed arrays: make call-as-function work for ctors
Turn call-as-function calls into constructor calls. Makes the following
snippet work:

  var buf = ArrayBuffer(32);  // no 'new' but does the right thing
2013-02-11 17:38:32 +01:00
Ben Noordhuis
aff8d9e716 node: don't malloc in FromConstructorTemplate
* allocate space for argv on the stack
* move the declaration to node_internals.h
2013-02-11 17:30:06 +01:00
Ben Noordhuis
d5a5ae3c11 test: fix common.mustCall
Don't run the 'has function been called?' checks if the test is exiting
with an error because a failed check will mask the real exception.

v0.8 doesn't have the _fatalException machinery in src/node.js and
src/node.cc so it doesn't have this issue.
2013-02-11 13:37:33 +01:00
Ben Noordhuis
30b0bc4fa9 doc: update buffer/typed array documentation
Clarify that typed array constructors accept buffers as their first
argument but that the memory is not shared and why this was changed
in v0.9.
2013-02-10 21:57:32 +01:00
Ben Noordhuis
5a9d30bb86 typed arrays: copy Buffer in typed array constructor
Convert the Buffer to an ArrayBuffer. The typed_array.buffer property
should be an ArrayBuffer to avoid confusion: a Buffer doesn't have a
byteLength property and more importantly, its slice() method works
subtly different.

That means that before this commit:

  var buf = new Buffer(1);
  var arr = new Int8Array(buf);
  assert.equal(arr.buffer, buf);
  assert(arr.buffer instanceof Buffer);

And now:

  var buf = new Buffer(1);
  var arr = new Int8Array(buf);
  assert.notEqual(arr.buffer, buf);
  assert(arr.buffer instanceof ArrayBuffer);
2013-02-10 21:31:41 +01:00
Ben Noordhuis
fe103357ae typed arrays: make DataView throw on non-ArrayBuffer
Make the DataView constructor throw an exception when the first
argument is not an ArrayBuffer. Follows the spec and the browsers.
2013-02-10 15:22:40 +01:00
Ben Noordhuis
234551a22a buffer: fix Buffer::HasInstance() check
It was returning true for typed arrays. Check that the object was
instantiated with the Buffer constructor.
2013-02-10 15:22:40 +01:00
Ben Noordhuis
144e21ed30 Revert "typed arrays: only share ArrayBuffer backing store"
We're going to fix this differently. The real bug is that
Buffer::HasInstance() returns true for typed arrays.

This reverts commit 01ee551e70.
2013-02-10 15:22:27 +01:00
Ben Noordhuis
fd9d8b5e4a Revert "typed arrays: copy non-ArrayBuffer in DataView ctor"
We're going to follow browser behavior here.

This reverts commit 7b0770bff5.
2013-02-10 15:22:27 +01:00
Nathan Rajlich
1ba39226b2 doc: document the writable.end() callback function
Support for it was added in a9c4a20331.
2013-02-09 10:34:18 -08:00
isaacs
e4a856e0ba V8: Reapply floating patches 2013-02-08 17:18:41 -08:00
isaacs
0c2e5ec840 V8: Upgrade to 3.15.11.15 2013-02-08 17:17:45 -08:00
Ben Noordhuis
c4f418d035 test: disable simple/test-dgram-send-error
It's not a good citizen, it spams random IP addresses with UDP packets.

Fixes #4730.
2013-02-08 01:33:33 +01:00
Scott Blomquist
8164b2fda7 windows/msi: more installer enhancements
Noteworthy installer improvements provided here:
* Support in the Installer UI for not installing shortcuts.
* Support in the Installer UI for choosing a custom install directory.
* Command line support for not installing shortcuts (ADDDEFAULT=nodejs)
* Command line support for custom install directory (INSTALLDIR=c:\tools\node)
2013-02-07 15:31:21 -08:00
Jim Schubert
e418df7bb8 windows/msi: add feature selection to installer 2013-02-07 15:29:01 -08:00
isaacs
2810b1ab00 blog: v0.9.9 is unstable, not stable 2013-02-07 10:35:35 -08:00
isaacs
e4d97b1dca blog: v0.9.9 2013-02-07 10:34:45 -08:00
isaacs
c3c8eee46d Now working on v0.9.10 2013-02-07 10:34:07 -08:00
isaacs
55c4d9b397 Merge branch 'v0.9.9-release' 2013-02-07 10:33:54 -08:00
isaacs
4b9f0d190c 2013.02.07, Version 0.9.9 (Unstable)
* tls: port CryptoStream to streams2 (Fedor Indutny)

* typed arrays: only share ArrayBuffer backing store (Ben Noordhuis)

* stream: make Writable#end() accept a callback function (Nathan Rajlich)

* buffer: optimize 'hex' handling (Ben Noordhuis)

* dns, cares: don't filter NOTIMP, REFUSED, SERVFAIL (Ben Noordhuis)

* readline: treat bare \r as a line ending (isaacs)

* readline: make \r\n emit one 'line' event (Ben Noordhuis)

* cluster: support datagram sockets (Bert Belder)

* stream: Correct Transform class backpressure (isaacs)

* addon: Pass module object to NODE_MODULE init function (isaacs, Rod Vagg)

* buffer: slow buffer copy compatibility fix (Trevor Norris)

* Add bytesWritten to tls.CryptoStream (Andy Burke)
2013-02-07 09:11:11 -08:00
isaacs
33b2aebb6d stream: Writable should ignore encoding for buffers
Fix #4727
Fix einaros/ws#159
2013-02-07 08:50:18 -08:00
Nikhil Marathe
6bcd9a4c94 Update http docs with http.IncomingMessage.
http.ServerRequest and http.ClientResponse are merged into http.IncomingMessage
which has fields for both, and acts as a Readable Stream and EventEmitter.

Fixes #3851.
2013-02-07 18:07:21 +04:00
Bert Belder
255bc945c2 http: protect against response splitting attacks
This patch is a back-port of 3c293ba.
Closes #4696
2013-02-07 14:39:47 +01:00
isaacs
5cc3569f6d Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	AUTHORS
	ChangeLog
	deps/npm/html/api/bin.html
	deps/npm/html/api/bugs.html
	deps/npm/html/api/commands.html
	deps/npm/html/api/config.html
	deps/npm/html/api/deprecate.html
	deps/npm/html/api/docs.html
	deps/npm/html/api/edit.html
	deps/npm/html/api/explore.html
	deps/npm/html/api/help-search.html
	deps/npm/html/api/init.html
	deps/npm/html/api/install.html
	deps/npm/html/api/link.html
	deps/npm/html/api/load.html
	deps/npm/html/api/ls.html
	deps/npm/html/api/npm.html
	deps/npm/html/api/outdated.html
	deps/npm/html/api/owner.html
	deps/npm/html/api/pack.html
	deps/npm/html/api/prefix.html
	deps/npm/html/api/prune.html
	deps/npm/html/api/publish.html
	deps/npm/html/api/rebuild.html
	deps/npm/html/api/restart.html
	deps/npm/html/api/root.html
	deps/npm/html/api/run-script.html
	deps/npm/html/api/search.html
	deps/npm/html/api/shrinkwrap.html
	deps/npm/html/api/start.html
	deps/npm/html/api/stop.html
	deps/npm/html/api/submodule.html
	deps/npm/html/api/tag.html
	deps/npm/html/api/test.html
	deps/npm/html/api/uninstall.html
	deps/npm/html/api/unpublish.html
	deps/npm/html/api/update.html
	deps/npm/html/api/version.html
	deps/npm/html/api/view.html
	deps/npm/html/api/whoami.html
	deps/npm/html/doc/README.html
	deps/npm/html/doc/adduser.html
	deps/npm/html/doc/bin.html
	deps/npm/html/doc/bugs.html
	deps/npm/html/doc/build.html
	deps/npm/html/doc/bundle.html
	deps/npm/html/doc/cache.html
	deps/npm/html/doc/changelog.html
	deps/npm/html/doc/coding-style.html
	deps/npm/html/doc/completion.html
	deps/npm/html/doc/config.html
	deps/npm/html/doc/dedupe.html
	deps/npm/html/doc/deprecate.html
	deps/npm/html/doc/developers.html
	deps/npm/html/doc/disputes.html
	deps/npm/html/doc/docs.html
	deps/npm/html/doc/edit.html
	deps/npm/html/doc/explore.html
	deps/npm/html/doc/faq.html
	deps/npm/html/doc/folders.html
	deps/npm/html/doc/global.html
	deps/npm/html/doc/help-search.html
	deps/npm/html/doc/help.html
	deps/npm/html/doc/index.html
	deps/npm/html/doc/init.html
	deps/npm/html/doc/install.html
	deps/npm/html/doc/json.html
	deps/npm/html/doc/link.html
	deps/npm/html/doc/ls.html
	deps/npm/html/doc/npm.html
	deps/npm/html/doc/outdated.html
	deps/npm/html/doc/owner.html
	deps/npm/html/doc/pack.html
	deps/npm/html/doc/prefix.html
	deps/npm/html/doc/prune.html
	deps/npm/html/doc/publish.html
	deps/npm/html/doc/rebuild.html
	deps/npm/html/doc/registry.html
	deps/npm/html/doc/removing-npm.html
	deps/npm/html/doc/restart.html
	deps/npm/html/doc/rm.html
	deps/npm/html/doc/root.html
	deps/npm/html/doc/run-script.html
	deps/npm/html/doc/scripts.html
	deps/npm/html/doc/search.html
	deps/npm/html/doc/semver.html
	deps/npm/html/doc/shrinkwrap.html
	deps/npm/html/doc/star.html
	deps/npm/html/doc/start.html
	deps/npm/html/doc/stop.html
	deps/npm/html/doc/submodule.html
	deps/npm/html/doc/tag.html
	deps/npm/html/doc/test.html
	deps/npm/html/doc/uninstall.html
	deps/npm/html/doc/unpublish.html
	deps/npm/html/doc/update.html
	deps/npm/html/doc/version.html
	deps/npm/html/doc/view.html
	deps/npm/html/doc/whoami.html
	deps/npm/man/man1/global.1
	deps/npm/man/man1/ls.1
	deps/npm/man/man1/npm.1
	deps/npm/man/man1/rm.1
	deps/npm/man/man3/npm.3
	deps/npm/node_modules/glob/glob.js
	deps/npm/node_modules/glob/package.json
	deps/npm/node_modules/node-gyp/package.json
	deps/npm/node_modules/npm-registry-client/package.json
	deps/npm/node_modules/npmconf/package.json
	deps/npm/node_modules/read-installed/package.json
	deps/npm/node_modules/rimraf/package.json
	deps/npm/node_modules/rimraf/rimraf.js
	deps/npm/package.json
	deps/uv/src/win/error.c
	doc/api/crypto.markdown
	lib/zlib.js
	src/node_version.h
	src/node_zlib.cc
	test/simple/test-buffer.js
2013-02-06 16:29:30 -08:00
Ben Noordhuis
7b0770bff5 typed arrays: copy non-ArrayBuffer in DataView ctor
This is commit 01ee551, except for the DataView type this time.

Make the behavior of DataView consistent with that of typed arrays:
make a copy of the backing store.
2013-02-06 22:26:50 +01:00
Fedor Indutny
d59beb9f68 tls: port CryptoStream to streams2 2013-02-06 23:23:54 +04:00
isaacs
13897279ae blog: v0.8.19 release 2013-02-06 09:48:20 -08:00
isaacs
ccf2712ee5 Now working on 0.8.20 2013-02-06 09:46:47 -08:00
isaacs
8caf6572b6 Merge branch 'v0.8.19-release' into v0.8 2013-02-06 09:44:38 -08:00
isaacs
53978bdf42 2013.02.06, Version 0.8.19 (Stable)
* npm: Upgrade to v1.2.10

* zlib: pass object size hint to V8 (Ben Noordhuis)

* zlib: reduce memory consumption, release early (Ben Noordhuis)

* buffer: slow buffer copy compatibility fix (Trevor Norris)

* zlib: don't assert on malformed dictionary (Ben Noordhuis)

* zlib: don't assert on missing dictionary (Ben Noordhuis)

* windows: better ipv6 support (Bert Belder)

* windows: add error mappings related to unsupported protocols (Bert Belder)

* windows: map ERROR_DIRECTORY to UV_ENOENT (Bert Belder)
2013-02-06 08:46:14 -08:00
isaacs
5aef65a98a npm: Upgrade to v1.2.10 2013-02-06 08:39:31 -08:00
Fedor Indutny
c024d2d8c0 streams: both finish and close should unpipe
Otherwise sockets that are 'finish'ed won't be unpiped and `writing to
ended stream` error will arise.

This might sound unrealistic, but it happens in net.js. When
`socket.allowHalfOpen === false`, EOF will cause `.destroySoon()` call which
ends the writable side of net.Socket.
2013-02-06 20:38:20 +04:00
Ben Noordhuis
b58efe7709 test: add cluster EADDRINUSE test
Check that having a worker bind to a port that's already taken doesn't
leave the master process in a confused state. Releasing the port and
trying again should Just Work[TM].
2013-02-06 15:10:53 +01:00
Ben Noordhuis
01ee551e70 typed arrays: only share ArrayBuffer backing store
Follow browser behavior, only share the backing store when it's a
ArrayBuffer. That is:

  var abuf = new ArrayBuffer(32);
  var a = new Int8Array(abuf);
  var b = new Int8Array(abuf);
  a[0] = 0;
  b[0] = 1;
  assert(a[0] === b[0]);  // a and b share memory

But:

  var a = new Int8Array(32);
  var b = new Int8Array(a);
  a[0] = 0;
  b[0] = 1;
  assert(a[0] !== b[0]);  // a and b don't share memory

The typed arrays spec allows both `a[0] === b[0]` and `a[0] !=== b[0]`
but Chrome and Firefox implement the behavior where memory is not
shared.

Copying the memory is less efficient but let's do it anyway for the
sake of the Principle of Least Surprise.

Fixes #4714.
2013-02-06 14:21:35 +01:00
Bryan Cantrill
202b5db4ef v8: loosen artificial mmap constraint
Fixes #4010.
2013-02-06 13:30:59 +04:00
Nathan Rajlich
a9c4a20331 stream: make Writable#end() accept a callback function
This is more backwards-compatible with stream1 streams like `fs.WriteStream`
which would allow a callback function to be passed in as the only argument.

Closes #4719.
2013-02-05 15:12:06 -08:00
Ben Noordhuis
a86ebbe288 blog: remove dangling symlink
Fixes #4716.
2013-02-05 22:34:51 +01:00
Ben Noordhuis
6b99fd2323 zlib: pass object size hint to V8
Inform V8 that the zlib context object is tied to a large off-heap buffer.

This makes the GC run more often (in theory) and improves the accuracy of
--trace_external_memory.
2013-02-05 22:26:03 +01:00
Ben Noordhuis
8d14668992 zlib: reduce memory consumption, release early
In zlibBuffer(), don't wait for the garbage collector to reclaim the zlib memory
but release it manually. Reduces memory consumption by a factor of 10 or more
with some workloads.

Test case:

  function f() {
    require('zlib').deflate('xxx', g);
  }
  function g() {
    setTimeout(f, 5);
  }
  f();

Observe RSS memory usage with and without this commit. After 10,000 iterations,
RSS stabilizes at ~35 MB with this commit. Without, RSS is over 300 MB and keeps
growing.

Cause: whenever the JS object heap hits the high-water mark, the V8 GC sweeps
it clean, then tries to grow it in order to avoid more sweeps in the near
future. Rule of thumb: the bigger the JS heap, the lazier the GC can be.

A side effect of a bigger heap is that objects now live longer. This is harmless
in general but it affects zlib context objects because those are tied to large
buffers that live outside the JS heap, on the order of 16K per context object.

Ergo, don't wait for the GC to reclaim the memory - it may take a long time.

Fixes #4172.
2013-02-05 22:25:54 +01:00
Ben Noordhuis
5fe05464cb doc: don't suggest to reuse net.Socket objects
Using Socket.prototype.connect() to reconnect an existing Socket object
is not reliable. Users should just create a new Socket object.

See #4698.
2013-02-05 12:50:48 +01:00
isaacs
9a488a667c blog: Correct shasums for v0.9.8 release 2013-02-02 11:14:42 -08:00
Ben Noordhuis
cd42f56178 buffer: optimize Buffer.prototype.write(s, 'hex')
Move the implementation to C++ land. This is similar to commit 3f65916
but this time for the write() function and the Buffer(s, 'hex')
constructor.

Speeds up the benchmark below about 24x (2.6s vs 1:02m).

  var s = 'f';
  for (var i = 0; i < 26; ++i) s += s;  // 64 MB
  Buffer(s, 'hex');
2013-02-02 01:01:42 +01:00
isaacs
916aebabb8 debugger: Make the debugger timeout configurable
If the NODE_DEBUGGER_TIMEOUT environment variable is set, then use
that as the number of ms to wait for the debugger to start.

This is primarily to work around a race condition that almost never
happens in real usage with the debugger, but happens EVERY FRACKING
TIME when the debugger tests run as part of 'make test'.
2013-02-01 15:58:51 -08:00
Ben Noordhuis
3f65916fa9 buffer: optimize Buffer.prototype.toString('hex')
Move the implementation to C++ land. The old JS implementation used
string concatenation, was dog slow and consumed copious amounts of
memory for large buffers. Example:

  var buf = Buffer(0x1000000);  // 16 MB
  buf.toString('hex')           // Used 3+ GB of memory.

The new implementation operates in O(n) time and space.

Fixes #4700.
2013-02-01 23:07:17 +01:00
isaacs
c7c1ed01ae gitignore: Ignore release tarballs and shasum files 2013-02-01 10:17:53 -08:00
Ben Noordhuis
6aed61f1ca dns, cares: don't filter NOTIMP, REFUSED, SERVFAIL
Report the aforementioned DNS server failure codes as-is, stop c-ares
from reporting them as ARES_ECONNREFUSED.

Reported by Steve Freegard.
2013-02-01 17:58:15 +01:00
isaacs
a6c18472cd stream: Don't stop reading on zero-length decoded output
Fixes regression introduced in 7e1cf84c9e
2013-01-31 13:33:37 -08:00
isaacs
7e1cf84c9e stream: Don't signal EOF on '' or Buffer(0)
Those values, if passed to the _read() cb, will not signal an EOF.  Only
null or undefined will mark the end of data, and trigger the end event.

However, great care must be taken if you are returning an empty string
or buffer!  There must be some other thing somewhere that will trigger
a read() call, because there will never be a readable event fired later.

This is in preparation for CryptoStreams being ported to streams2, where
it is safe to simply stop reading, because the crypto cycle process will
cause it to read(0) again at some future date.
2013-01-31 11:59:36 -08:00
Bert Belder
1a87776be9 deps: upgrade libuv to 034ea31 2013-01-30 20:30:10 +01:00
isaacs
016810913d node: Do not use fn.apply() in process._makeCallback 2013-01-30 09:04:30 -08:00
isaacs
f64d1febc8 lint 2013-01-29 23:57:23 -08:00
Ben Noordhuis
3fe6aba558 os: rename tmpDir() to tmpdir() for consistency
Make the casing consistent with the other os.* functions but keep
os.tmpDir() around as an alias.
2013-01-30 04:24:58 +01:00
isaacs
60f18ede39 readline: treat bare \r as a line ending
Fixes #3305
2013-01-29 18:21:31 -08:00
Ben Noordhuis
9bd9c546c8 readline: make \r\n emit one 'line' event
Make lines ending \r\n emit one 'line' event, not two (where the second
one is an empty string).

This adds a new keypress name: 'return' (as in: 'carriage return').

Fixes #3305.
2013-01-29 17:15:24 +01:00
isaacs
bda45a8be1 Revert "net: Avoid tickDepth warnings on small writes"
This commit breaks simple/test-stream2-stderr-sync.  Need to figure out
a better way, or just accept that `(function W(){stream.write(b,W)})()`
is going to be noisy.  People should really be using the `'drain'` event
for this use-case anyway.

This reverts commit 02f7d1bfd8.
2013-01-28 17:15:22 -08:00
isaacs
02f7d1bfd8 net: Avoid tickDepth warnings on small writes
Always defer the _write callback.  The optimization here was only
relevant in some oddball edge cases that we don't actually care about.

Our benchmarks confirm that just always deferring the Socket._write cb
is perfectly fine to do, and in some cases, even slightly more
performant.
2013-01-28 16:16:21 -08:00
Bert Belder
6311f1c30a dgram: avoid EventEmitter leak warning
When a datagram socket hasn't been bound yet, node will defer `send()`
operations until binding has completed. Before this patch a `listening`
listener would be installed every time `send` was called. This triggered
an EventEmitter leak warning when more than 10 packets were sent in a
tight loop. Therefore switch to using a single `listening` listener, and
use an array to enqueue outbound packets.
2013-01-28 22:19:02 +01:00
Bert Belder
5e7e51c2fe cluster: support datagram sockets 2013-01-28 22:12:21 +01:00
Fedor Indutny
c13354e339 child_process: move binding init in constructor
Doing this in net.Socket constructor has much more overhead, and
error is actually may happen before the construction of socket object.
2013-01-28 21:24:45 +04:00
isaacs
4c78a52a3a net: Initialize _connection, _handle in Socket ctor
The better to reduce the hidden classes
2013-01-28 09:09:34 -08:00
isaacs
faf78604ca http: Don't dump twice 2013-01-28 08:54:08 -08:00
isaacs
e26622bd18 stream: Correct Transform class backpressure
The refactor in b43e544140 to use
stream.push() in Transform inadvertently caused it to immediately
consume all the written data, regardless of whether or not the readable
side was being consumed.

Only pull data through the _transform() process when the readable side
is being consumed.

Fix #4667
2013-01-28 08:40:45 -08:00
Fedor Indutny
0d7a0216dc net: initialize TCPWrap when receiving socket
TCPWrap::Initialize() and PipeWrap::Initialize() should be called before
any data will be read from received socket. But, because of lazy
initialization of these bindings, Initialize() method isn't called.

Init bindings manually upon socket receiving.

See #4669
2013-01-28 16:37:09 +04:00
Ben Noordhuis
a39f669bc7 test: move simple/test-http-dns-fail to test/internet
The test times out when the upstream DNS resolver takes too long to
respond.

See #4672.
2013-01-28 12:41:56 +01:00
Ben Noordhuis
acd0df4ad9 test: fix pummel test out-of-memory errors
Fix the following OOM error in pummel/test-net-connect-memleak
and pummel/test-tls-connect-memleak:

  FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of
  memory

Commit v8/v8@91afd39 increases the size of the deoptimization table
to the extent that a 64M float array pushes it over the brink. Switch
to SMIs so it stays below the limit.

pummel/test-net-connect-memleak is still failing albeit with a different
error this time. Needs further investigation.

  === release test-net-connect-memleak ===
  Path: pummel/test-net-connect-memleak
  -64 kB reclaimed
  assert.js:102
    throw new assert.AssertionError({
          ^
  AssertionError: false == true
      at done [as _onTimeout] (/home/bnoordhuis/src/nodejs/master/
  test/pummel/test-net-connect-memleak.js:48:3)
      at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
      at process._makeCallback (node.js:306:20)
2013-01-27 22:01:14 +01:00
Ben Noordhuis
2e371b8f92 buffer: fix Buffer::Copy regression from 00b4b7b
If the end argument is omitted or not a number, make it default to
the end of the buffer, not zero.

Ideally, it should not matter what it defaults to because the JS shim
in lib/buffer.js should handle that but there are still several places
in node.js core that secrete SlowBuffers, hence Buffer::Copy() gets
called without going through Buffer.prototype.copy() first.
2013-01-27 21:50:01 +01:00
Fedor Indutny
0972acb548 stream_wrap: reference handle before uv_write2
Revert commit 7f2a78bf4d and fix using
empty symbol handle.
2013-01-27 20:11:41 +04:00
Ben Noordhuis
7f2a78bf4d Revert "stream_wrap: reference handle before uv_write2"
It's segfaulting in release mode and asserting in debug mode:

  #
  # Fatal error in ../../deps/v8/src/api.h, line 297
  # CHECK(allow_empty_handle || that != __null) failed
  #

This reverts commit 99f0b022d5.
2013-01-27 15:21:03 +01:00
Rick Yakubowski
5abde8161a doc: fix typo in cluster module documentation
Fix a small typo in the cluster.settings documentation.
2013-01-27 00:25:35 +01:00
Fedor Indutny
99f0b022d5 stream_wrap: reference handle before uv_write2
Before sending handle to another process using uv_write2(), it should be
referenced to prevent it from being GCed before AfterWrite() will be
called.

see #4599
2013-01-26 22:38:00 +04:00
isaacs
bdc7251b64 doc: fix line wrapping in addons.markdown 2013-01-25 14:27:46 -08:00
Rod Vagg
f210710795 doc: NODE_MODULE() to pass full module to addons
mainly to allow native addons to export single functions on `exports`
rather than being restricted to operating on an existing `exports`
object.

added link to addons repo in docs
2013-01-25 14:26:52 -08:00
isaacs
15508589a1 addon: Pass module object to NODE_MODULE init function
mainly to allow native addons to export single functions on
rather than being restricted to operating on an existing
object.

Init functions now receive exports as the first argument, like
before, but also the module object as the second argument, if they
support it.

Related to #4634

cc: @rvagg
2013-01-25 14:25:35 -08:00
Ben Noordhuis
00b4b7bb97 buffer: remove minor Buffer::Copy deoptimizations
* Omit ToObject() call. Buffer::Data() and Buffer::Length() know how
  to deal with Values.

* Don't check if the argument is undefined because it realistically
  never is and undefined->integer coercion achieves the same thing.
2013-01-25 22:07:04 +01:00
Trevor Norris
65249ccd9b buffer: slow buffer copy compatibility fix
Fix issue where SlowBuffers couldn't be passed as target to Buffer
copy().

Also included checks to see if Argument parameters are defined before
assigning their values. This offered ~3x's performance gain.

Backport of 16bbecc from master branch. Closes #4633.
2013-01-25 10:42:38 -08:00
Trevor Norris
cbe3941db9 buffer: error and misc cleanup
Changed types of errors thrown to be more indicative of what the error
represents. Also removed a few unnecessary uses of the v8 fully
quantified typename.
2013-01-25 11:59:26 +01:00
Trevor Norris
49175e6ae2 buffer: clean up copy() asserts and tests
Argument checks were simplified by setting all undefined/NaN or out of
bounds values equal to their defaults.

Also copy() tests had a flaw that each buffer had the same bit pattern at
the same offset. So even if the copy failed, the bit-by-bit comparison
would have still been true. This was fixed by filling each buffer with a
unique value before copy operations.
2013-01-25 11:59:21 +01:00
Trevor Norris
16bbeccd40 buffer: slow buffer copy compatibility fix
Fix issue where SlowBuffers couldn't be passed as target to Buffer
copy().

Also included checks to see if Argument parameters are defined before
assigning their values. This offered ~3x's performance gain.
2013-01-25 11:58:51 +01:00
isaacs
72dd3b4e25 benchmark: Port http.sh from master 2013-01-24 17:23:22 -08:00
Sugendran Ganess
83154aa15d doc: Connecting debugger to existing node process 2013-01-24 17:16:19 -08:00
Andy Burke
595b5974d7 Add bytesWritten to tls.CryptoStream
This adds a proxy for bytesWritten to the tls.CryptoStream.  This
change makes the connection object more similar between HTTP and
HTTPS requests in an effort to avoid confusion.

See issue #4650 for more background information.
2013-01-24 16:48:49 -08:00
Jacob Gable
34131af606 doc: fix typo in crypto Hash.digest() note
Added the word 'has' to the sentence.
Closes #4652.
2013-01-24 12:42:53 -08:00
isaacs
7f6054ca81 blog: Post for v0.9.8 2013-01-24 10:32:35 -08:00
isaacs
f64742ea07 Now working on v0.9.9 2013-01-24 10:31:40 -08:00
isaacs
42309a36e3 Merge branch 'v0.9.8-release' 2013-01-24 10:31:23 -08:00
isaacs
6e05faa3d0 test: Add transform objectMode test 2013-01-24 10:12:19 -08:00
isaacs
5f2f8400f6 2013.01.24, Version 0.9.8 (Unstable)
* npm: Upgrade to v1.2.3

* V8: Upgrade to 3.15.11.10

* streams: Support objects other than Buffers (Jake Verbaten)

* buffer: remove float write range checks (Trevor Norris)

* http: close connection on 304/204 responses with chunked encoding (Ben Noordhuis)

* build: fix build with dtrace support on FreeBSD (Fedor Indutny)

* console: Support formatting options in trace() (isaacs)

* domain: empty stack on all exceptions (Dave Olszewski)

* unix, windows: make uv_*_bind() error codes consistent (Andrius Bentkus)

* linux: add futimes() fallback (Ben Noordhuis)
2013-01-24 09:15:25 -08:00
isaacs
e722ca32d9 npm: Upgrade to v1.2.3 2013-01-24 09:10:01 -08:00
isaacs
7a2ebce8d8 V8: Reapply floating patches 2013-01-24 09:10:01 -08:00
isaacs
8024252877 V8: Upgrade to 3.15.11.10 2013-01-24 09:10:01 -08:00
Fedor Indutny
82f1d340c1 tls: make slab buffer's size configurable
see #4636
2013-01-24 08:47:07 -08:00
isaacs
5d3c51d937 test: Add test for negative stream drain counter 2013-01-24 07:49:27 -08:00
isaacs
782149ddc3 streams2: Handle sync read callbacks nicely 2013-01-24 07:49:27 -08:00
Raynos
444bbd4fa7 streams: Support objects other than Buffers
We detect for non-string and non-buffer values in onread and
turn the stream into an "objectMode" stream.

If we are in "objectMode" mode then howMuchToRead will
always return 1, state.length will always have 1 appended
to it when there is a new item and fromList always takes
the first value from the list.

This means that for object streams, the n in read(n) is
ignored and read() will always return a single value

Fixed a bug with unpipe where the pipe would break because
the flowing state was not reset to false.

Fixed a bug with sync cb(null, null) in _read which would
forget to end the readable stream
2013-01-24 07:49:27 -08:00
Ben Noordhuis
193320aa3a gitignore: ignore v8.log files 2013-01-24 11:35:29 +01:00
Ben Noordhuis
4a7a98fd0a http: close connection on 204 and chunked encoding
This is similar to commit 2cbf458 but this time for 204 No Content
instead of 304 Not Modified responses.

When the user sends a 204 response with a Transfer-Encoding: chunked
header, suppress sending the zero chunk and force the connection to
close.
2013-01-24 11:23:36 +01:00
Scott Blomquist
0774798ce0 build: Add some gyp artifacts to .gitignore 2013-01-23 10:54:00 -08:00
Trevor Norris
3d286b68be buffer: remove float write range checks
Removed range checks when writing float values, and removed a few
includes and defines. Also updated api docs to reflect that invalid 32
bit float is an unspecified behavior.
2013-01-23 13:55:04 +01:00
Ben Noordhuis
2cbf4586df http: close connection on 304 and chunked encoding
Force the connection to close when the response is a 304 Not Modified
and the user has set a "Transfer-Encoding: chunked" header.

RFC 2616 mandates that 304 responses MUST NOT have a body but node.js
used to send out a zero chunk anyway to accommodate clients that don't
have special handling for 304 responses.

It was pointed out that this might confuse reverse proxies to the point
of creating security liabilities, so suppress the zero chunk and force
the connection to close.
2013-01-23 01:47:24 +01:00
Bert Belder
e2acf26a91 deps: upgrade libuv to e4d8cba 2013-01-23 00:17:01 +01:00
Ben Noordhuis
814bdf0f51 deps: upgrade libuv to 7841f77 2013-01-22 16:21:25 +01:00
Ben Noordhuis
13d86a86d6 doc: document PYTHON env var in README 2013-01-22 13:53:49 +01:00
Ben Noordhuis
d7bf7ed993 zlib: don't assert on malformed dictionary
Handle Z_DATA_ERROR errors from inflateSetDictionary() gracefully.
Fixes the following assertion:

  node: ../src/node_zlib.cc:167: static void node::ZCtx::Process
  (uv_work_t*): Assertion `ctx->err_ == 0 && "Failed to set
  dictionary"' failed.
  Aborted (core dumped)

Fixes #4632.
2013-01-22 13:34:43 +01:00
Ben Noordhuis
1c32eb4ae2 zlib: don't assert on missing dictionary
Handle Z_NEED_DICT errors graciously. Fixes the following assertion:

  node: ../src/node_zlib.cc:161: static void node::ZCtx::Process
  (uv_work_t*): Assertion`ctx->dictionary_ != __null && "Stream
  has no dictionary"' failed.
  Aborted (core dumped)

Fixes #4632.
2013-01-22 13:34:43 +01:00
Tim
d5a5901346 doc: Fix syntax in cluster example code 2013-01-21 19:17:01 -08:00
Fedor Indutny
e2592cc6a3 gyp: fix build with dtrace support on FreeBSD
Fix undefined reference to `gelf_getsym`... and other undefined symbols
from libelf, by adding `-lelf` to linker options on FreeBSD.
2013-01-21 12:47:26 +04:00
Fedor Indutny
3d67f89552 dtrace: fix generation of v8 constants on freebsd
Every constant is certainly 4 bytes now, but freebsd's objdump utility
prints out odd byte sequences (5-bytes, 6-bytes and even 9-bytes long)
for v8's data section. We can safely ignore all upper bytes, because all
constants that we're using are just `int`s. Since on all supported
platforms `int` is 32bit long (and anyway v8's constants are 32bit too),
we ignore all higher bits if they were read.
2013-01-21 12:46:27 +04:00
Ben Noordhuis
2dd373894f typed arrays: fix DataView endianness regression
Fix an off-by-one error introduced in 9fe3734 that caused a regression
in the default endianness used for writes in DataView::setGeneric().

Fixes #4626.
2013-01-20 00:29:01 +01:00
Fedor Indutny
00abc243dd child_process: remove .track option
Since net.Server's `connection` property is deprecated now, we don't
need API to track socket's state to keep `connection`s value up-to-date.
2013-01-20 02:23:42 +04:00
isaacs
539bf1d7b7 console: Support formatting options in trace()
Fix #4589
2013-01-18 15:39:08 -08:00
Dave Olszewski
14c911de77 domain: empty stack on all exceptions
Due to the nature of asyncronous programming, it's impossible to know
what will run on the next tick.  Because of this, it's not correct to
maintain domain stack state between ticks

Since the _fatalException handler is only invoked after the stack is
unwound, once it exits the tick will end.  The only reasonable thing to
do in that case is to exit *all* domains.
2013-01-18 13:26:40 -08:00
Yi EungJun
33d22428fb doc: Add NODE_DEBUG env to the first example.
The first example in cluster.markdown requires NODE_DEBUG env to show
debug message.

And also fix the message because it was a little bit different with
the actual message.
2013-01-18 13:18:37 -08:00
isaacs
3d7818fc42 Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	AUTHORS
	ChangeLog
	src/node_version.h
	test/simple/test-buffer.js
2013-01-18 12:58:16 -08:00
isaacs
9c2c845463 blog: Post for v0.8.18 release 2013-01-18 12:54:22 -08:00
isaacs
4598a4c6dd Now working on 0.8.19 2013-01-18 12:51:34 -08:00
isaacs
f05cf3bea7 Merge branch 'v0.8.18-release' into v0.8 2013-01-18 12:51:14 -08:00
isaacs
2c4eef0d97 2013.01.18, Version 0.8.18 (Stable)
* npm: Upgrade to v1.2.2

* dns: make error message match errno (Dan Milon)

* tls: follow RFC6125 more stricly (Fedor Indutny)

* buffer: reject negative SlowBuffer offsets (Ben Noordhuis)

* install: add simplejson fallback (Chris Dent)

* http: fix "Cannot call method 'emit' of null" (Ben Noordhuis)
2013-01-18 12:15:41 -08:00
isaacs
4d32fc5964 npm: Upgrade to v1.2.2 2013-01-18 12:12:07 -08:00
isaacs
fc3547bc82 Now working on 0.9.8 2013-01-18 11:49:35 -08:00
isaacs
fa543da830 Merge branch 'v0.9.7-release' 2013-01-18 11:49:12 -08:00
isaacs
1c35ee8695 blog: Post for v0.9.7 release 2013-01-18 11:48:21 -08:00
isaacs
9e7bebeb83 2013.01.18, Version 0.9.7 (Unstable)
* V8: Upgrade to 3.15.11.7

* npm: Upgrade to 1.2.2

* punycode: Upgrade to 1.2.0 (Mathias Bynens)

* repl: make built-in modules available by default (Felix Böhm)

* windows: add support for '_Total' perf counters (Scott Blomquist)

* cluster: make --prof work for workers (Ben Noordhuis)

* child_process: do not keep list of sent sockets (Fedor Indutny)

* tls: Follow RFC6125 more strictly (Fedor Indutny)

* buffer: floating point read/write improvements (Trevor Norris)

* TypedArrays: Improve dataview perf without endian param (Dean McNamee)

* module: assert require() called with a non-empty string (Felix Böhm, James Campos)

* stdio: Set readable/writable flags properly (isaacs)

* stream: Properly handle large reads from push-streams (isaacs)
2013-01-18 11:04:11 -08:00
isaacs
ee2fd79e43 doc: Remove mention of child.send 'track' option
Will be removed very soon.  No point making it public.
2013-01-18 11:04:10 -08:00
isaacs
01a4be4554 buffer: Define INFINITY for MSVC compiler 2013-01-18 11:04:10 -08:00
isaacs
0459a60232 npm: Upgrade to 1.2.2 2013-01-18 08:37:32 -08:00
Ben Noordhuis
6b713b5253 cluster: make --prof work for workers
Profiling in clustered environments doesn't work out of the box.

By default, V8 writes the profile data of all processes to a single
v8.log.

Running that log file through a tick processor produces bogus numbers
because many events won't match up with the recorded memory mappings
and you end up with graphs where 80+% of ticks is unaccounted for.

Fixing the tick processor to deal with multi-process output is not very
useful because the processes may be running wildly disparate workloads.

That's why we fix up the command line arguments to include
a "--logfile=v8-%p.log" argument (where %p is expanded to the PID)
unless it already contains a --logfile argument.

Fixes #4617.
2013-01-18 12:56:40 +01:00
Dan Milon
7295bb9435 dns: make error message match errno 2013-01-18 12:13:32 +01:00
Ben Noordhuis
8b0f3ce397 v8: add %p option to --logfile, expands to pid
Useful when you are profiling multiple instances of V8 concurrently.
Submitted upstream: http://code.google.com/p/v8/issues/detail?id=2503

Refs #4617.
2013-01-18 01:33:12 +01:00
Fedor Indutny
31583be042 tls: follow RFC6125 more stricly
* Allow wildcards only in left-most part of hostname identifier.
* Do not match CN if altnames are present
2013-01-18 03:48:05 +04:00
Fedor Indutny
e70d1bfe64 Revert "Revert "tls: allow wildcards in common name""
This reverts commit 30e237041d.

Works properly with b4b750b
2013-01-18 03:47:47 +04:00
Fedor Indutny
4488a69fac child_process: do not keep list of sent sockets
Keeping list of all sockets that were sent to child process causes memory
leak and thus unacceptable (see #4587). However `server.close()` should
still work properly.

This commit introduces two options:

* child.send(socket, { track: true }) - will send socket and track its status.
  You should use it when you want to receive `close` event on sent sockets.
* child.send(socket) - will send socket without tracking it status. This
  performs much better, because of smaller number of RTT between master and
  child.

With both of these options `server.close()` will wait for all sent
sockets to get closed.
2013-01-18 03:13:41 +04:00
Fedor Indutny
44cd121c63 Revert "child_process: do not keep list of sent sockets"
This reverts commit db5ee0b3de.
2013-01-18 03:13:10 +04:00
isaacs
ae6f4b32c4 benchmark: Add resume() in static_http_server 2013-01-17 14:54:59 -08:00
Fedor Indutny
db5ee0b3de child_process: do not keep list of sent sockets
Keeping list of all sockets that were sent to child process causes memory
leak and thus unacceptable (see #4587). However `server.close()` should
still work properly.

This commit introduces two options:

* child.send(socket, { track: true }) - will send socket and track its status.
  You should use it when you want `server.connections` to be a reliable
  number, and receive `close` event on sent sockets.
* child.send(socket) - will send socket without tracking it status. This
  performs much better, because of smaller number of RTT between master and
  child.

With both of these options `server.close()` will wait for all sent
sockets to get closed.
2013-01-17 13:46:31 -08:00
isaacs
b7d76a1a7b Revert "events: Don't crash on events named __proto__"
Unfortunately, it's just too slow to do this in events.js.  Users will
just have to live with not having events named __proto__ or toString.

This reverts commit b48e303af0.
2013-01-17 13:20:22 -08:00
isaacs
1528de2373 stdio: Set readable/writable flags properly
Set the readable/writable flags properly in net streams that have
a handle passed in (such as TTY streams).

Fix #4606
2013-01-17 10:42:44 -08:00
isaacs
b48e303af0 events: Don't crash on events named __proto__
This prefixes all event names internally with 'ev'.
2013-01-17 09:21:45 -08:00
Ben Noordhuis
30e237041d Revert "tls: allow wildcards in common name"
This reverts commit 45024e7b75.

It's making test/simple/test-tls-check-server-identity.js fail:

  AssertionError: Test#4 failed: { host: 'b.a.com',
    cert: { subject: { CN: '*.a.com' } },
    result: false }
      at <omitted>/test/simple/test-tls-check-server-identity.js:201:10
2013-01-17 16:32:00 +01:00
Ryunosuke SATO
562d3f11f3 doc: modify documentation style about 'Stability: 5'
'Stability: 5' is described as 'Locked' not as 'API Locked'
in other documents.

For example:
- `/doc/api/assert.markdown`
- `/doc/api/util.markdown`

This word was injected in 192192a.
2013-01-17 13:51:21 +01:00
Ben Noordhuis
08ac9fe016 test: add cluster 'bind twice' test
This test starts two clustered HTTP servers on the same port.
It expects the first cluster to succeed and the second cluster
to fail with EADDRINUSE.

Reapplies commit cacd3ae, accidentally reverted in a2851b6.
2013-01-17 13:37:23 +01:00
Ben Noordhuis
498200b87c buffer: reject negative SlowBuffer offsets
Reject negative offsets in SlowBuffer::MakeFastBuffer(), it allows
the creation of buffers that point to arbitrary addresses.

Reported by Trevor Norris.
2013-01-17 01:22:11 +01:00
Ben Noordhuis
952e42de72 deps: upgrade libuv to 4ba03dd 2013-01-16 23:38:02 +01:00
isaacs
47f3fc9a26 test: add module-loading test with empty string 2013-01-16 12:27:53 -08:00
Felix Böhm
7465cf911a module: assert that require() is called with a string
as requested in #4577
2013-01-16 12:25:06 -08:00
isaacs
b9ffc537e6 lint: Prefer double-quotes over single 2013-01-16 12:07:12 -08:00
Ryunosuke SATO
61741f9a83 repl: fix how to module requiring in code comment
This module requiring style is old.
This API has been changed in Node 0.1.16 726865af.
2013-01-16 10:59:22 -08:00
Dean McNamee
9fe3734f15 TypedArrays: Improve dataview perf without endian param
V8 seems to be particularly slow converting an undefined value to false
in BooleanValue.

Revert this when we upgrade to V8 3.17, or whenever the fix discussed
in http://code.google.com/p/v8/issues/detail?id=2487 lands in V8.
2013-01-16 10:54:28 -08:00
James Campos
c93c99c7c3 assert that require() has a truthy path 2013-01-16 10:49:19 -08:00
isaacs
14e8f806de stream: Properly handle large reads from push-streams
Problem 1: If stream.push() triggers a 'readable' event, and the user
calls `read(n)` with some n > the highWaterMark, then the push() will
return false (indicating that they should not push any more), but no
future 'readable' event is coming (because we're above the
highWaterMark).

Solution: return true from push() when needReadable is set.

Problem 2: A read(n) for n != 0, after the stream had encountered an
EOF, would not trigger the 'end' event if the EOF was pushed in
synchronously by the _read() function.

Solution: Check for ended in stream.read() and schedule an end event if
the length now equals 0.

Fix #4585
2013-01-16 10:45:11 -08:00
Trevor Norris
7393740c7b buffer: improve read/write speed with assert
Improved assert check order of execution and added additional checks on
parameters to ensure no bad values make it through (e.g. negative offset
values).
2013-01-16 10:17:20 -08:00
Trevor Norris
22b84e6216 buffer: floating point read/write improvements
Improvements:
* floating point operations are approx 4x's faster
* Now write quiet NaN's
* all read/write on floating point now done in C, so no more need for
  lib/buffer_ieee754.js
* float values have more accurate min/max value checks
* add additional benchmarks for buffers read/write
* created benchmark/_bench_timer.js which is a simple library that
  can be included into any benchmark and provides an intelligent tracker
  for sync and async tests
* add benchmarks for DataView set methods
* add checks and tests to make sure offset is greater than 0
2013-01-16 10:17:20 -08:00
Alexandr Emelin
eef0ccbcaf http: fix duplicate var initialization
IncomingMessage function contained duplicate initialization
of this._pendings. Line with one of those expressions has been
removed.
2013-01-16 17:10:14 +01:00
Mathias Bynens
bc764f3dff punycode: update to v1.2.0
This update adds support for RFC 3490 separators for improved
compatibility with web browsers.
2013-01-16 16:53:11 +01:00
Ben Noordhuis
9668df8b39 v8: work around String::WriteAscii segfault
See http://code.google.com/p/v8/issues/detail?id=2493 for details.
Once the patch lands in upstream V8, this commit can be reverted.
2013-01-15 23:46:30 +01:00
Chris Dent
6b4a93577b install: add simplejson fallback
Make tools/install.py work with python 2.5

2.5 is still fairly widespread and does not include a json lib as
standard. Most python folk will have simplejson if they are in that
boat.

In general it seems a bit tricky to solve this perfectly...
2013-01-15 09:34:07 +01:00
Fedor Indutny
b4b750b6a5 tls: follow RFC6125 more stricly
* Allow wildcards only in left-most part of hostname identifier.
* Do not match CN if altnames are present
2013-01-14 17:18:30 -08:00
isaacs
20a3c5d09c streams2: Do not allow hwm < lwm
There was previously an assert() in there, but this part of the code is
so high-volume that the added cost made a measurable dent in http_simple.

Just checking inline is fine, though, and prevents a lot of potential
hazards.
2013-01-14 16:03:38 -08:00
isaacs
27fafd4648 stream: Do not call endReadable on a non-empty stream
Say that a stream's current read queue has 101 bytes in it, and the
underlying resource has ended (ie, reached EOF).

If you do something like this:

    stream.read(100); // leave a byte behind
    stream.read(0); // read(0) for some reason

then the read(0) will get 0 from the howMuchToRead function.  Since the
stream was ended, this was incorrectly treating the 0 as a "there is no
more in the buffer", and emitting 'end' before that last byte was read.

Why have the read(0) in the first place?  We do this in some cases to
trigger the last few bytes of a net socket (such as a child process's
stdio pipes).  This was causing issues when piping a `git archive` job
to a file: the resulting tarball was incomplete, because it occasionally
was not getting the last chunk.
2013-01-14 15:22:42 -08:00
Bert Belder
a6b8f63660 buffer: zero-length buffers shouldn't be slab-backed 2013-01-14 22:20:03 +01:00
Bert Belder
e501ce4b21 buffer: zero-length buffers shouldn't be slab-backed 2013-01-14 22:19:22 +01:00
Fedor Indutny
45024e7b75 tls: allow wildcards in common name
see #4592
2013-01-14 21:31:34 +04:00
Fedor Indutny
4dd70bb12c tls: allow wildcards in common name
see #4592
2013-01-14 21:10:03 +04:00
Ben Noordhuis
f3e78bd3c2 http: fix "Cannot call method 'emit' of null"
Fix the following exception:

  http.js:974
    this._httpMessage.emit('close');
                      ^
  TypeError: Cannot call method 'emit' of null
      at Socket.onServerResponseClose (http.js:974:21)
      at Socket.EventEmitter.emit (events.js:124:20)
      at net.js:421:10
      at process._tickCallback (node.js:386:13)
      at process._makeCallback (node.js:304:15)

Fixes #4586.
2013-01-14 17:28:32 +01:00
Ben Noordhuis
e4598aa241 gitignore: ignore perf data files 2013-01-14 13:06:29 +01:00
yangguo@chromium.org
926c90bc64 v8: Hardfloat does not imply VFPv3, only VFPv2.
Raspberry Pi is an example.

BUG=v8:2393

Review URL: https://chromiumcodereview.appspot.com/11570061
Patch from Chi-Thanh Christopher Nguyen <nguyenchithanh@gmail.com>.

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

This is a backport of v8/v8@44419ad089.
2013-01-13 18:26:58 +01:00
Ben Noordhuis
e4f2a140d2 deps: upgrade libuv to 8e3e60f 2013-01-13 01:29:34 +01:00
Nathan Rajlich
bac537b186 repl: fix lint 2013-01-12 12:14:39 -08:00
Felix Böhm
9bce5e8f3e repl: make built-in modules available by default
Closes #3564.
Closes #4578.
2013-01-12 12:10:29 -08:00
Scott Blomquist
8e311d28b0 windows: add support for '_Total' perf counters 2013-01-11 22:24:48 +01:00
Ben Noordhuis
8018113910 v8: remove optimization switches
Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi,
we set them globally in $(TOPLEVEL)/common.gypi.

Commit 7b4d95a introduced the switches again, resulting in V8 getting
built without any optimizations.

This commit is essentially a rehash of commit 4b8629d.
2013-01-12 00:34:36 +04:00
Fedor Indutny
d22bd9e3c4 deps: update v8 to 3.15.11.7 2013-01-12 00:10:45 +04:00
isaacs
9a4a39fc97 Now working on 0.9.7 2013-01-11 11:25:54 -08:00
isaacs
f228e3cc05 Merge branch 'v0.9.6-release' 2013-01-11 11:25:37 -08:00
isaacs
4c9de9d716 blog: release v0.9.6 2013-01-11 11:24:37 -08:00
isaacs
9313fdc71c 2013.01.11, Version 0.9.6 (Unstable)
* V8: update to 3.15.11.5

* node: remove ev-emul.h (Ben Noordhuis)

* path: make basename and extname ignore trailing slashes (Bert Belder)

* typed arrays: fix sunos signed/unsigned char issue (Ben Noordhuis)

* child_process: Fix {stdio:'inherit'} regression (Ben Noordhuis)

* child_process: Fix pipe() from child stdio streams  (Maciej Małecki)

* child_process: make fork() execPath configurable (Bradley Meck)

* stream: Add readable.push(chunk) method (isaacs)

* dtrace: x64 ustack helper (Fedor Indutny)

* repl: fix floating point number parsing (Nirk Niggler)

* repl: allow overriding builtins (Ben Noordhuis)

* net: add localAddress and localPort to Socket (James Hight)

* fs: make pool size coincide with ReadStream bufferSize (Shigeki Ohtsu)

* typed arrays: implement load and store swizzling (Dean McNamee)

* windows: fix perfctr crash on XP and 2003 (Scott Blomquist)

* dgram: fix double implicit bind error (Ben Noordhuis)
2013-01-11 10:49:21 -08:00
isaacs
97db62b4d9 Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	AUTHORS
	ChangeLog
	Makefile
	src/node_version.h
2013-01-11 10:18:07 -08:00
Bert Belder
6a91eab097 path: make basename and extname ignore trailing slashes
Fixes #4536
2013-01-11 18:50:09 +01:00
Ben Noordhuis
b509ae67b7 typed arrays: fix sunos signed/unsigned char issue
The int8_t and uint8_t typedefs on sunos/smartos depend on a number of
compiler directives. Avoid ambiguity and specify signed and unsigned
char explicitly.

Fixes the following build error:

  ../src/stream_wrap.cc: In static member function 'static void*
  node::WriteWrap::operator new(size_t)':
  ../src/stream_wrap.cc:70:49: warning: no return statement in function
  returning non-void [-Wreturn-type]
  In file included from ../src/v8_typed_array.cc:26:0:
  ../src/v8_typed_array_bswap.h: In function 'T
  v8_typed_array::SwapBytes(T) [with T = signed char]':
  ../src/v8_typed_array_bswap.h:150:23:   instantiated from 'T
  v8_typed_array::LoadAndSwapBytes(void*) [with T = signed char]'
  ../src/v8_typed_array.cc:694:7:   instantiated from 'static
  v8::Handle<v8::Value> {anonymous}::DataView::getGeneric(const
  v8::Arguments&) [with T = signed char]'
  ../src/v8_typed_array.cc:738:40:   instantiated from here
  ../src/v8_typed_array_bswap.h:125:16: error: size of array is
  negative
2013-01-11 18:35:03 +01:00
isaacs
3383d77c61 test: child process { stdio:'inherit' } 2013-01-11 09:14:09 -08:00
Fedor Indutny
d93346d0fc Revert "typed arrays: fix build on sunos"
This reverts commit 35a137cf8d.
2013-01-11 21:01:14 +04:00
Fedor Indutny
35a137cf8d typed arrays: fix build on sunos 2013-01-11 19:52:49 +04:00
Bert Belder
7be27240b5 Revert "path: fix bugs related to paths with trailing slashes"
It only does the right thing on unix, and the implementation
isn't great either.

This reverts commit bb1c03989f.
2013-01-11 16:19:21 +01:00
Ben Noordhuis
31fc52ab53 deps: upgrade libuv to 9aab5d4 2013-01-11 14:00:19 +01:00
isaacs
dc0c524ce6 http: Set _dumped=false initially
The better to keep the IncomingMessage class isomorphic and avoid
creating additional hidden classes.
2013-01-10 18:16:43 -08:00
Andreas Madsen
bb1c03989f path: fix bugs related to paths with trailing slashes 2013-01-10 17:58:37 -08:00
Nathan Rajlich
b916774255 configure: define "arm_fpu" and "arm_neon" for ARM
v8's common.gypi file expects them to be defined now.

Closes #4534.
2013-01-10 17:13:59 -08:00
Nathan Rajlich
4fa3fd1cc0 make binary: allow custom config flags
For example, to cross-compile from my OS X laptop for Raspberry Pi, you would
do something like:

  $ make binary BINARYNAME=node-v`python tools/getnodeversion.py`-linux-arm-pi \
      DESTCPU=arm CONFIG_FLAGS="--dest-os=linux"
2013-01-10 17:05:14 -08:00
yangguo@chromium.org
438e0c6d75 v8: Hardfloat does not imply VFPv3, only VFPv2.
Raspberry Pi is an example.

BUG=v8:2393

Review URL: https://chromiumcodereview.appspot.com/11570061
Patch from Chi-Thanh Christopher Nguyen <nguyenchithanh@gmail.com>.

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

This is a backport of v8/v8@44419ad089.
2013-01-10 17:02:59 -08:00
isaacs
9ece63b1d7 http: Don't switch the socket into old-mode 2013-01-10 13:50:06 -08:00
isaacs
bc8feb151c http: Use stream.push() instead of touching _readableState 2013-01-10 13:50:06 -08:00
isaacs
840401c024 net: Use readable.push() instead of private methods 2013-01-10 13:50:05 -08:00
isaacs
b43e544140 stream: Use push() for Transform._output()
This also slightly changes the semantics, in that a 'readable'
event may be triggered by the first write() call, even if a
user has not yet called read().

This happens because the Transform _write() handler is calling
read(0) to start the flow of data.  Technically, the new behavior
is more 'correct', since it is more in line with the semantics
of the 'readable' event in other streams.
2013-01-10 13:49:54 -08:00
isaacs
530585b2d1 stream: Use push() for readable.wrap() 2013-01-10 13:49:53 -08:00
isaacs
a993f740f0 stream: Add readable.push(chunk) method 2013-01-10 13:49:53 -08:00
isaacs
8e37a589a6 blog, changelog: 0.8.17 was released in 2013, not 2012 2013-01-10 07:47:09 -08:00
isaacs
be54423782 blog: Correct shasums for v0.8.17 2013-01-09 19:05:37 -08:00
isaacs
6d9ee4b184 blog: Add security notice to v0.8.17 post 2013-01-09 17:21:16 -08:00
isaacs
1388171d96 blog: Post about v0.8.17 2013-01-09 17:08:24 -08:00
isaacs
daf4666963 Now working on 0.8.18 2013-01-09 17:07:33 -08:00
isaacs
c4b080f82d Merge branch 'v0.8.17-release' into v0.8 2013-01-09 17:07:21 -08:00
Ben Noordhuis
a6756a2c06 test: run tests in alphabetical order 2013-01-10 01:58:30 +01:00
isaacs
c50c33e939 2012.01.09, Version 0.8.17 (Stable)
* npm: Upgrade to v1.2.0
  - peerDependencies (Domenic Denicola)
  - node-gyp v0.8.2 (Nathan Rajlich)
  - Faster installs from github user/project shorthands (Nathan Zadoks)

* typed arrays: fix 32 bit size/index overflow (Ben Noordhuis)

* http: Improve performance of single-packet responses (Ben Noordhuis)

* install: fix openbsd man page location (Ben Noordhuis)

* http: bubble up parser errors to ClientRequest (Brian White)
2013-01-09 16:55:12 -08:00
Ben Noordhuis
ed825f4888 typed arrays: fix 32 bit size/index overflow
Fix an out-of-bound read/write bug due to integer wrapping. Reported by
Dean McNamee.
2013-01-10 00:55:27 +01:00
isaacs
aa742ddf80 npm: Upgrade to v1.2.0 2013-01-09 15:21:30 -08:00
Dean McNamee
c207d400f1 typed arrays: implement load and store swizzling
Implement load and store swizzling operations. This reduces an unneeded
back and forth between types and additionally keeps the value in the
swappable type until it is swapped. This is important for correctness
when dealing with floating point, to avoid the possibility of loading
the bits of a signaling NaN (because it isn't yet swapped) into the FPU.

This additionally produces better code (comments are mine):

gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

setValue<double>:
  movd  %xmm0, %rax         ; fp reg -> gen reg
  bswapq  %rax              ; 64-bit byte swap
  movq  %rax, (%r15,%r12)   ; store
2013-01-09 17:44:25 +01:00
Dean McNamee
46a489be73 typed arrays: swizzle with compiler intrinsics
Implement swizzling with compiler intrinsics and be aware of the native
endianness to correctly swap on big endian machines.

This introduces a template function to swap the bytes of a value,
and macros for the low level swap (taking advantage of gcc and msvc
intrinsics). This produces code like the following (comments are mine):

gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

setValue<double>:
  movd  %xmm0, %rax         ; fp reg -> gen reg
  bswapq  %rax              ; 64-bit byte swap
  movd  %rax, %xmm0         ; gen reg -> fp reg
  movq  %xmm0, (%r15,%r12)  ; store
2013-01-09 17:44:25 +01:00
Ben Noordhuis
7d66a9d060 typed arrays: undo local changes
Partially revert 5664dd2, 6573fc3 and 7788a6b to ease landing changes
from upstream.
2013-01-09 17:43:19 +01:00
Fedor Indutny
7a2ae4c930 object_wrap: add missing HandleScope
by Sven Panne's suggestion, see [0] for details.

[0]: https://code.google.com/p/v8/issues/detail?id=2468
2013-01-09 12:16:04 +04:00
Shigeki Ohtsu
1211946a8c stream: fix typo
Also: Revert "stream: Override addListener as well as on"

This reverts commit 18c985919d.
2013-01-08 23:13:02 -08:00
isaacs
18c985919d stream: Override addListener as well as on
For the compatibility switch.
2013-01-08 14:27:01 -08:00
Fedor Indutny
45941811dc streams: set listener first, emit 'data' later
When switching into compatibility mode by setting `data` event listener,
`_read()` method will be called immediately. If method implementation
invokes callback in the same tick - all emitted `data` events will be
discarded, because `data` listener wasn't set yet.
2013-01-08 22:13:09 +04:00
Tim Bradshaw
e6acfed9cc doc: os.cpus() returns times in milliseconds 2013-01-08 05:38:36 +01:00
Dean McNamee
3f75454426 typed arrays: don't declare as module
TypedArrays is not a module, it is attached to the global object.
Don't register it with Node's module system.
2013-01-08 05:08:00 +01:00
Dean McNamee
b50d51ef5b typed arrays: replace switch with templates
Convert TypedArray's TypeName implementation to template specialization
instead of a switch() statement.
2013-01-08 05:08:00 +01:00
Shigeki Ohtsu
9b363b022f net: fix bufferSize include writableStream length
socket.bufferSize missed to include the length of internal buffers in
writableStream.
2013-01-08 04:59:50 +01:00
Ben Noordhuis
ad6769fc92 dgram: don't assert on send('string')
Raise a TypeError when the argument to send() or sendto() is anything
but a Buffer.

Fixes the following assertion:

  $ node -e 'require("dgram").createSocket("udp4").send("BAM")'
  node: ../../src/udp_wrap.cc:220: static v8::Handle<v8::Value>
  node::UDPWrap::DoSend(const v8::Arguments&, int): Assertion
  `Buffer::HasInstance(args[0])' failed.
  Aborted (core dumped)

Fixes #4496.
2013-01-08 04:32:40 +01:00
Mike Harsch
aeb030bead build: fail w/err msg when missing binutils
Building --with-dtrace requires objdump from GNU binutils.
This change inserts a helpful error message if there is a
problem executing objdump.
2013-01-08 03:41:26 +01:00
isaacs
321b8eec08 dtrace: More style
Continuation lines should be indented with 4 spaces, not a tab.
2013-01-07 12:31:44 -08:00
isaacs
38df9d51a2 dtrace: Make D style more D-ish 2013-01-07 12:23:41 -08:00
Fedor Indutny
f9afb3f010 dtrace: x64 ustack helper 2013-01-07 23:04:11 +04:00
Fedor Indutny
13296e4b13 dtrace: fix style in ustack helper 2013-01-07 23:01:54 +04:00
isaacs
3b715edda9 dtrace: SeqAsciiString was renamed to SeqOneByteString in v8 2013-01-07 10:30:15 -08:00
Ben Noordhuis
7788a6bf85 src: pass node_isolate to Undefined() 2013-01-07 17:39:58 +01:00
Ben Noordhuis
c7d7ae1fe2 src: pass node_isolate to Null() 2013-01-07 17:39:57 +01:00
Ben Noordhuis
109f73b2c0 src: pass node_isolate to True() and False() 2013-01-07 17:39:57 +01:00
Ben Noordhuis
01c3d0aa88 src: pass node_isolate to Local<>::New 2013-01-07 17:39:57 +01:00
Ben Noordhuis
6573fc3502 src: pass node_isolate to Integer::New 2013-01-07 17:39:57 +01:00
Ben Noordhuis
412b3cee05 src: pass node_isolate to String::Empty 2013-01-07 17:39:57 +01:00
Ben Noordhuis
5d0816bf3e src: make node_isolate global
V8 3.15 has new API functions that let you specify the Isolate. V8 and
node.js generally spend 0.5-3.5% of the time in pthread_getspecific(),
looking up the current Isolate. Avoid that overhead by making "our"
isolate global so we can pass it around. The change to the new API is
introduced in follow-up commits.
2013-01-07 17:39:57 +01:00
isaacs
df3563aa65 child_process: Pull through untouched stdio streams
Otherwise child procs will never emit a 'close' event if you don't
ever consume their streams, because they will never hit the EOF.
2013-01-07 08:36:49 -08:00
isaacs
3e6f737eaf stream: Clean up more effectively in pipe() 2013-01-07 08:36:49 -08:00
Maciej Małecki
a5d4e74891 child_process: don't resume() created socket
Calling `resume()` on a stream switches it to the old mode which causes
piping stdio from a child process to fail.

Fixes joyent/node#4510.
2013-01-07 08:36:49 -08:00
Dean McNamee
8adebb92bc node: move symbol caching to Load() 2013-01-07 17:19:09 +01:00
Ben Noordhuis
879efb3338 test: fix simple/test-http-client-timeout-with-data
The test was failing in debug mode because the timeouts were set too
low. Fix that by increasing the timeouts. Admittedly not a great fix.
If this test keeps playing up, it's probably best to remove it.

Fixes #4528.
2013-01-07 16:04:33 +01:00
Ben Noordhuis
fa3bfc3a66 test: put tty in blocking mode after test
Tests can leave the tty in non-blocking mode. If the test runner tries
to print to stdout/stderr after that and the tty buffer is full, it'll
die with a EAGAIN OSError. Ergo, put the tty back in blocking mode
before proceeding.
2013-01-07 03:59:10 +01:00
Ben Noordhuis
4e1a2f9a89 test: disable simple/test-debug-brk-file
This test is timing sensitive and hence quite unreliable with debug
builds. What's worse is that it leaves a stray child process behind
that listens on the default test port and that makes all the tests
that come after it fail with EADDRINUSE errors.
2013-01-07 03:40:12 +01:00
Bradley Meck
70ad9bbcbd child_process: make fork() execPath configurable
Allows for arbitrary path to executable spawned using `fork`. This
fixes some issues around running multiple versions of node with workers
and allows arbitrary IPC with compatible executables.

Fixes #3248.
2013-01-06 22:55:30 +01:00
James Hight
3f76419a04 net: add localAddress and localPort to Socket 2013-01-05 17:05:13 +01:00
Ben Noordhuis
5664dd2fc1 src: use static_cast where appropriate
Use static_cast instead of reinterpret_cast when casting from void*
to another type.

This is mostly an aesthetic change but may help catch bugs when the
affected code is modified.
2013-01-05 00:16:23 +01:00
Johannes Ewald
872cb0d7fa doc: improve example of process.hrtime()
The example clarifies now that diff[0] * 1000000000 + diff[1] equals
the result in nanoseconds.
2013-01-04 23:06:40 +01:00
Shigeki Ohtsu
2b6c561040 fs: remove unused default option in WriteStream
No bufferSize option is used in stream.Writable and fs.WriteStream.
2013-01-04 19:02:05 +01:00
Shigeki Ohtsu
829f96bada fs: pool size coincide with ReadStream bufferSize
pool size of file reading in ReadableStream can be adjustable
with a bufferSize option.
2013-01-04 19:00:16 +01:00
Ben Noordhuis
93591a2a88 v8: remove optimization switches
Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi,
we set them globally in $(TOPLEVEL)/common.gypi.

Commit 7b4d95a introduced the switches again, resulting in V8 getting
built without any optimizations.

This commit is essentially a rehash of commit 4b8629d.
2013-01-04 20:06:03 +04:00
Fedor Indutny
97056c064f object_wrap: add missing HandleScope
by Sven Panne's suggestion, see [0] for details.

[0]: https://code.google.com/p/v8/issues/detail?id=2468
2013-01-04 16:39:24 +04:00
Fedor Indutny
0054264d88 v8: update to 3.15.11.5 2013-01-04 15:44:47 +04:00
Nirk Niggler
0459a23063 REPL: fix floating point number parsing
In JS, the expression ".1" is a floating point number.  Issue 4268 concerns the
REPL interpreting floating point numbers that lead with a "." as keywords.  The
original bugfix worked for this specific case but not for the general case:

    var x = [
        .1,
        .2,
        .3
    ];

The attached change and test (`.1+.1` should be `.2`) fix the bug.

Closes #4513.
2013-01-03 17:11:54 -08:00
Scott Blomquist
a616774281 windows: improve Visual Studio Express build support
* Moved generated files to a clearer directory.
* Improved detection logic for ctrpp.exe tool.

Closes #4482
2013-01-03 23:38:25 +01:00
Scott Blomquist
5a39df4959 windows: fix perfctr crash on XP and 2003
Some performance counter related functions are not available on Windows
XP and Windows Server 2003, which caused node to call a NULL pointer.

Closes #4462
Closes #4511
2013-01-03 23:31:26 +01:00
Ben Noordhuis
a7d8c21bca Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	configure
	deps/uv/src/unix/core.c
	deps/uv/test/test-fs-event.c
	src/node_version.h
2013-01-03 20:02:31 +01:00
Ben Noordhuis
aad2013508 repl: allow overriding builtins
Don't give names of built-in libraries special treatment.
Changes the REPL's behavior from this:

  > var path = 42
  > path
  A different "path" already exists globally

To this:

  > var path = 42
  > path
  42

Fixes #4512.
2013-01-03 19:58:47 +01:00
Ben Noordhuis
875c1106c6 node: remove ev-emul.h
libev has been deprecated since v0.6. Add-on authors have had two major
release cycles to upgrade. Out it goes.
2013-01-03 19:58:38 +01:00
Ben Noordhuis
ce1b33a9dc v8: remove optimization switches
Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi,
we set them globally in $(TOPLEVEL)/common.gypi.

Commit 7b4d95a introduced the switches again, resulting in V8 getting
built without any optimizations.

This commit is essentially a rehash of commit 4b8629d.
2013-01-03 02:37:22 +01:00
Fedor Indutny
8a96bb42c6 test: make tests work with newer v8 2013-01-02 12:13:47 +04:00
Fedor Indutny
5e57bcc3ce bindings: update to new v8 apis
GetPointerFromInternalField() is deprecated now, we should use
GetAlignedPointerFromInternalField().
2013-01-02 12:13:46 +04:00
Fedor Indutny
7b4d95a976 deps: update v8 to 3.15.11 2013-01-01 16:07:02 +04:00
Tim Bradshaw
50e88d0b66 os: change CPU time from Integer to Number
CPU time values must be Numbers, not Integers, as they can be too large
for Integers on 32 bit platforms.
2012-12-31 18:09:36 +01:00
Ben Noordhuis
9e32c2ef3e dgram: fix double implicit bind error
Calling send() on an unbound socket forces an implicit bind to
a random port.

332fea5 made the 'listening' event asynchronous. Unfortunately,
it also introduced a bug where the implicit bind was tried more
than once if send() was called again before the first bind operation
completed.

Address that by keeping track of the bind status and making sure that
bind() is called only once.

Fixes #4499.
2012-12-31 17:53:00 +01:00
Ben Noordhuis
acc085e131 doc: add CONTRIBUTING.md 2012-12-31 01:50:48 +01:00
isaacs
44ceb5d8f5 blog: Post for v0.9.5 2012-12-29 17:26:32 -08:00
isaacs
30bd774fbd Now working on 0.9.6 2012-12-29 17:25:40 -08:00
isaacs
9ff2b0b658 Merge branch 'v0.9.5-release' 2012-12-29 17:25:25 -08:00
isaacs
01994e8119 2012.12.30, Version 0.9.5 (Unstable)
* assert: improve support for new execution contexts (lukebayes)

* domain: use camelCase instead of snake_case (isaacs)

* domain: Do not use uncaughtException handler (isaacs)

* fs: make 'end' work with ReadStream without 'start' (Ben Noordhuis)

* https: optimize createConnection() (Ryunosuke SATO)

* buffer: speed up base64 encoding by 20% (Ben Noordhuis)

* doc: Colorize API stabilitity index headers in docs (Luke Arduini)

* net: socket.readyState corrections (bentaber)

* http: Performance enhancements for http under streams2 (isaacs)

* stream: fix to emit end event on http.ClientResponse (Shigeki Ohtsu)

* stream: fix event handler leak in readstream pipe and unpipe (Andreas Madsen)

* build: Support ./configure --tag switch (Maciej Małecki)

* repl: don't touch `require.cache` (Nathan Rajlich)

* node: Emit 'exit' event when exiting for an uncaught exception (isaacs)
2012-12-29 16:54:24 -08:00
isaacs
6c80ef01c1 node: emit 'exit' when exiting with error
Fix #3555
2012-12-29 16:53:23 -08:00
isaacs
7550e31d1a benchmark: Make flamegraphs a bit more useful 2012-12-29 15:32:26 -08:00
isaacs
ecdde7df15 benchmark: Set port range properly on Linux 2012-12-29 15:32:26 -08:00
isaacs
e11668b244 net: Don't go through Stream API when ondata is used
This speeds up http_simple by around 6%.
2012-12-29 15:32:25 -08:00
isaacs
f423287453 http: Separate out the storeHeader closure 2012-12-29 15:32:25 -08:00
isaacs
ba94f9d6f8 timers: Move list.ontimeout to separate function 2012-12-29 15:32:25 -08:00
isaacs
aec2f733f9 net: Move createWriteReq to separate function 2012-12-29 15:32:25 -08:00
isaacs
9785ab6057 http: Replace "in" usage with "=== undefined"
Speeds up http benchmarks.
2012-12-29 15:32:25 -08:00
lukebayes
ae1b0ca7a5 assert: improve support for new execution contexts
More detailed information in GH-693
2012-12-29 11:19:14 -08:00
isaacs
1c2910d94c test-message: Add setTimeout and nextTick message tests 2012-12-29 10:37:31 -08:00
isaacs
ec8ebaf300 domain: use camelCase instead of snake_case
While it's true that error objects have a history of getting snake_case
properties attached by the host system, it's a point of confusion to
Node users that comes up a lot.  It's still 'experimental', so best to
change this sooner rather than later.
2012-12-29 10:37:31 -08:00
isaacs
4401bb47bf domain: Do not use uncaughtException handler
This adds a process._fatalException method which is called into from
C++ in order to either emit the 'uncaughtException' method, or emit
'error' on the active domain.

The 'uncaughtException' event is an implementation detail that it would
be nice to deprecate one day, so exposing it as part of the domain
machinery is not ideal.

Fix #4375
2012-12-29 10:37:30 -08:00
Ben Noordhuis
a7cc53067d deps: upgrade libuv to 4997738 2012-12-29 17:34:41 +01:00
Ben Noordhuis
c6e958d44d fs: make 'end' work with ReadStream without 'start'
Make `fs.createReadStream({ end: 42 })` work.

Before this commit, it worked only when used like this:
`fs.createReadStream({ start: 0, end: 42 })` - only when `start` was specified
by the caller.

Fixes #4423.
2012-12-28 18:33:51 +01:00
Ben Noordhuis
910e24b53d fs: remove fs.sendfile()
Said function has been broken (and useless) since v0.6.0. Remove it altogether.

Fixes #3854.
2012-12-28 18:24:35 +01:00
Ryunosuke SATO
c4fc0febfa https: optimize https.createConnection()
Stop using `arguments` for performance and readability.
2012-12-28 16:42:51 +01:00
Ben Noordhuis
a329729537 buffer: speed up base64 encoding by 20%
Remove a lot of branches from the inner loop. Speeds up buf.toString('base64')
by about 20%.

Before:

  $ time out/Release/node benchmark/buffer-base64-encode.js
  real    0m6.607s
  user    0m5.508s
  sys     0m1.088s

After:

  $ time out/Release/node benchmark/buffer-base64-encode.js
  real    0m5.520s
  user    0m4.520s
  sys     0m0.992s
2012-12-28 13:20:07 +01:00
Luke Arduini
192192a09e Colorize API stabilitity index headers in docs
Noted in @shtylman's #3898, API stability notes are easy to overlook
in the html documentation. This can be especially troublesome if the API
is deprecated. This commit gives visual feedback by adding in a class
to the html docs when they're generated. The API headers with
corresponding colors are also listed in the 'About this Documentation'
page for easy reference.
2012-12-27 18:38:56 -08:00
bentaber
e576208eba net: socket.readyState corrections
socket.readyState, .readable, and .writable behavior changed as
a result of the new streaming interfaces. Updated to be backwards
compatible with current API and adds regression test.

closes #4461
2012-12-27 17:53:28 -08:00
Ryunosuke SATO
fde338bf83 stream: speed up instantiation of readable stream
- Stream.apply -> Stream.call
2012-12-27 17:46:34 -08:00
Ryunosuke SATO
697484df82 domain: speed up domain.create
Use `EventEmitter.call` instead of `EventEmitter.apply` because of performance.
2012-12-27 17:45:36 -08:00
Ryunosuke SATO
8936868e9b http: remove unused variable
The module variable `END_OF_FILE` was no longer needed from 1d369317.
2012-12-27 15:09:04 -08:00
isaacs
4be9c695f0 build: Add hyphen to custom build tags
so that ./configure --tag=foo makes a version number like v0.9.5-foo
instead of v0.9.5foo
2012-12-26 20:35:00 -08:00
Maciej Małecki
c2e71dd51d build: allow to specify custom tags
When building custom `node` versions (e.g., floating features/fixes from
different versions) it's often useful to specify a custom tag which
easily identifies build when invoking `node -v`.

Introduce a way to specify this tag in `node_version.h` file or by
running `./configure --tag="<tag>"`. Insert it right after the patch
version (and before `-pre`, if build is not a release).
2012-12-26 20:15:17 -08:00
isaacs
d76eacd4e6 http: Handle end only when stream is not dumped
This fixes regression introduced in some cases by 8bf0c15
2012-12-26 15:57:49 -08:00
isaacs
54740c8b24 lint 2012-12-26 15:26:53 -08:00
Ryunosuke SATO
0db521d0b0 repl: remove 'repl' from automatic loading libs
In repl, calling `repl` twice shows the following message:
```
> repl
A different "repl" already exists globally
```
2012-12-26 15:25:00 -08:00
Ryunosuke SATO
31cffae2ba repl: add 'domain' to automatic loading libs
`domain` should be a member of automatic loading libs in `repl`.

Conflicts:

	lib/repl.js
2012-12-26 15:23:31 -08:00
Shigeki Ohtsu
8bf0c15a5b stream2: fix to emit end event on http.ClientResponse 2012-12-26 15:20:48 -08:00
Andreas Madsen
ce30683012 doc: document the finish event
Since the stream implementer is not expected to overwrite
.end() the finish event is necessary in order to know when
no more data can be written
2012-12-26 14:56:02 -08:00
Andreas Madsen
d68ee22dda stream: do only fake drain when unpiped stream is the source
If the destination had multiply read streams piped to it,
they would all decrease the awaitDrain state and thereby
start the flow
2012-12-26 14:56:02 -08:00
Andreas Madsen
5daa701aba stream: fix event handler leak in readstream pipe and unpipe
After a stream was unpiped there would stil be residual event handlers
2012-12-26 14:56:02 -08:00
Ryunosuke SATO
27a91387ae util: fix deprecation message in util.pump 2012-12-26 14:54:56 -08:00
Ben Noordhuis
d2e7ca0449 test: add regression test for #4463 2012-12-25 22:18:57 +01:00
Ben Taber
526d852565 net: allow socket end before connect
Fix a bug where calling .end() on a socket without calling .connect() first
throws a TypeError:

  TypeError: Cannot read property 'shutdown' of undefined
      at Socket.onSocketFinish (net.js:194:20)
      at Socket.EventEmitter.emit (events.js:91:17)
      at Socket.Writable.end (_stream_writable.js:281:10)
      at Socket.end (net.js:352:31)

Fixes #4463.
2012-12-25 22:18:56 +01:00
Ben Noordhuis
6ecb0cd65d openssl: clean up openssl.gyp
Remove obsolete build configuration that escaped the purge in 7eaea7f.
2012-12-24 16:02:13 +01:00
Maciej Małecki
f84bf5b6b1 build: allow to specify custom tags
When building custom `node` versions (e.g., floating features/fixes from
different versions) it's often useful to specify a custom tag which
easily identifies build when invoking `node -v`.

Introduce a way to specify this tag in `node_version.h` file or by
running `./configure --tag="<tag>"`. Insert it right after the patch
version (and before `-pre`, if build is not a release).

Closes #4452.
2012-12-21 12:44:33 -08:00
isaacs
6738e68592 blog: Post about v0.9.4 2012-12-21 12:37:39 -08:00
isaacs
70eb227e80 Now working on 0.9.5 2012-12-21 12:36:34 -08:00
isaacs
cdcac49cfe Merge branch 'v0.9.4-release' 2012-12-21 12:36:04 -08:00
isaacs
d86d83c75f 2012.12.21, Version 0.9.4 (Unstable)
* streams: Update all streaming interfaces to use new classes (isaacs)

* node: remove idle gc (Ben Noordhuis)

* http: protect against response splitting attacks (Bert Belder)

* fs: Raise error when null bytes detected in paths (isaacs)

* fs: fix 'object is not a function' callback errors (Ben Noordhuis)

* fs: add autoClose=true option to fs.createReadStream (Farid Neshat)

* process: add getgroups(), setgroups(), initgroups() (Ben Noordhuis)

* openssl: optimized asm code on x86 and x64 (Bert Belder)

* crypto: fix leak in GetPeerCertificate (Fedor Indutny)

* add systemtap support (Jan Wynholds)

* windows: add ETW and PerfCounters support (Scott Blomquist)

* windows: fix normalization of UNC paths (Bert Belder)

* crypto: fix ssl error handling (Sergey Kholodilov)

* node: remove eio-emul.h (Ben Noordhuis)

* os: add os.endianness() function (Nathan Rajlich)

* readline: don't emit "line" events with a trailing 'n' char (Nathan Rajlich)

* build: add configure option to generate xcode build files (Timothy J Fontaine)

* build: allow linking against system libuv, cares, http_parser (Stephen Gallagher)

* typed arrays: add slice() support to ArrayBuffer (Anthony Pesch)

* debugger: exit and kill child on SIGTERM or SIGHUP (Fedor Indutny)

* url: url.format escapes delimiters in path and query (J. Lee Coltrane)
2012-12-21 12:15:05 -08:00
Nathan Rajlich
837df70b75 repl: don't touch require.cache
Fixes #3226.

Consider a production server that uses a REPL to debug. Creating the instance
would wipe out the global cache of modules, and subsequent "require" calls in
the server would be reloaded from disk. The REPL should observe only, without
altering, its environment.
2012-12-21 11:42:40 -08:00
isaacs
982981442d doc: Nudge formatting to make json generator happy
Starting a line with `**bold**` text makes it think that it's a link,
and get confused.

This should really be fixed properly in the doc generator, but for now,
it's not a major issue.  It's probably just a matter of updating marked.
2012-12-21 11:32:29 -08:00
isaacs
f119effc9f Merge remote-tracking branch 'ry/v0.8' 2012-12-21 11:08:32 -08:00
Scott Blomquist
841b7f534b Ease building with VS Express by checking in generated files. 2012-12-21 11:05:55 -08:00
isaacs
244924823e stdio: Do not read from stdout/err
This fixes windows stdio pipes in streams2 land.
2012-12-21 11:05:46 -08:00
isaacs
0edd93dcc1 test: Fix simple/test-http-localaddress 2012-12-21 16:59:20 +00:00
isaacs
fb915ed957 lint 2012-12-21 16:51:43 +00:00
isaacs
c048c814c7 http: Trivial fix for comments and 'this.read' 2012-12-21 16:48:32 +00:00
isaacs
d30e76e0e8 npm: upgrade to 1.1.70 2012-12-21 16:42:29 +00:00
isaacs
9d0103d22e blog: More streams2 wordsmithing 2012-12-21 00:46:40 +00:00
isaacs
0c867ae618 blog: Update blog post re streams2 2012-12-21 00:08:50 +00:00
isaacs
ec7455558f benchmark: Set ephemeral ports properly on sunos 2012-12-21 00:07:35 +00:00
isaacs
825af451fb benchmark: Make http.sh more useful 2012-12-21 00:07:34 +00:00
isaacs
79ec9dc1dd benchmark: Support names in http-flamegraph 2012-12-21 00:07:34 +00:00
isaacs
f9caf7020c streams: Speed up by doing less work in the state ctors 2012-12-21 00:07:34 +00:00
isaacs
8624adf5d8 http: use IncomingMessage._dump() instead of resume() 2012-12-21 00:07:34 +00:00
isaacs
836593da23 benchmark: Improve http-flamegraph 2012-12-21 00:07:34 +00:00
Bert Belder
7475982801 openssl: enable optimized asm code on x86 and x64 2012-12-20 15:02:59 +01:00
Bert Belder
5edbb53c45 openssl: regenerate asm files for openssl 1.0.1 2012-12-20 15:02:59 +01:00
Bert Belder
1b5c5b137d openssl: update makefile for asm files to work with openssl 1.0.1 2012-12-20 15:02:58 +01:00
Bert Belder
1d97db5acf openssl: disable HT sidechannel attack mitigation
It used to be off before. It's extremely unlikely that such an attack
would be a viable attack against node. And it makes AES much slower.
2012-12-20 15:02:57 +01:00
Bert Belder
aeae22cbb2 openssl: revert empty_OPENSSL_cpuid_setup.patch 2012-12-20 15:02:57 +01:00
Bert Belder
2e6180a62a openssl: make perlasm target pentium or newer for masm outputs
When perlasm generates MASM code it sets the assembler target to 468.
In this mode MASM refuses to assemble a couple of instructions. Bumping
the target to 686 solves this problem.
2012-12-20 15:02:56 +01:00
Bert Belder
7eaea7f9e5 openssl: clean up and merge configuration files
This patch brings the openssl library that is built with gyp closer
to what the standard build system produces.

All opensslconf.h versions are now merged into a single file, which
makes it easier for compiled addons to locate this file.
2012-12-20 15:02:56 +01:00
Ben Noordhuis
d1556fbdd2 bench: report stats in benchmark/net-pipe 2012-12-20 14:48:51 +01:00
Ben Noordhuis
79ae8b7ae2 Merge remote-tracking branch 'origin/v0.8' 2012-12-20 12:39:04 +01:00
Ben Noordhuis
5a19c07c08 http: pack response body buffer in first tcp packet
Apply the same optimization to res.end(buf) that is applied to res.end(str).

Speeds up `node benchmark/http_simple_auto -k -c 1 -n 25000 buffer/1`
(non-chunked response body) by about 750x. That's not a typo.

Chunked responses:

  $ cat tmp/http-chunked-client.js
  // Run `node benchmark/http_simple` in another terminal.
  var http = require('http'), url = require('url');
  var options = url.parse('http://127.0.0.1:8000/buffer/1/1');
  options.agent = new http.Agent({ maxSockets: 1 });
  for (var i = 0; i < 25000; ++i) http.get(options);

Before:

  $ time out/Release/node tmp/http-chunked-client.js
  real    16m40.411s
  user    0m9.184s
  sys     0m0.604s

After:

  $ time out/Release/node tmp/http-chunked-client.js
  real    0m5.386s
  user    0m2.768s
  sys     0m0.728s

That's still a 185x speed-up.

Fixes #4415.
2012-12-20 12:02:06 +01:00
Ben Noordhuis
ba407ce410 bench: use res.end() for chunked encoding
Use res.end() for the final chunk so we can benchmark the 'hot path' shortcut
in lib/http.js that packs the headers and the body into a single packet.
2012-12-20 11:44:10 +01:00
Farid Neshat
dcaebec208 fs: add autoClose=true option to fs.createReadStream 2012-12-20 11:25:39 +01:00
isaacs
9f4c0988c3 streams2: Process write buffer in a loop, not recursively
This fixes pummel/test-net-write-callbacks
2012-12-19 10:55:23 -08:00
isaacs
cab22644a5 net: Properly read buffer in Socket.bytesWritten 2012-12-19 10:55:23 -08:00
isaacs
f63af64eb8 test-pummel: Add call validation in net-write-callbacks 2012-12-19 10:55:23 -08:00
isaacs
f3f4e290e0 test: 2 resume() calls needed to flush streams 2012-12-19 10:55:23 -08:00
Timothy J Fontaine
14ed1732ce test: add TAP output to the test runner 2012-12-19 11:16:23 +01:00
isaacs
43538f4f8f benchmark: Add http-flamegraph
This is very similar to http.sh, but generates a flamegraph
with dtrace, pruning off the single-hit stacks so that we can
more easily see the places where relevant amounts of time are
spent.
2012-12-18 11:56:53 -08:00
isaacs
04adf0e5a1 blog: post about streams2 feature 2012-12-18 08:45:03 -08:00
Ben Noordhuis
d607d856af node: remove idle gc
Remove the idle garbage collector. Its purpose was to run the garbage collector
when the application is idle but it never worked quite right. Many people have
complained over the years that with heaps > 128 MB, a node.js process never
sleeps anymore; instead, it spends nearly 100% of its CPU time trying to
collect garbage.

Back in the old days, idle GC probably was a good idea. But with V8's current
incremental collector, idle gc appears to offer no time or space benefits
whatsoever and indeed seems actively harmful. Remove it.

Fixes #3870.
2012-12-18 16:16:33 +01:00
Ben Noordhuis
8ccfed2edc node: s/-/_/ in add-on symbol name
Replace dashes with underscores. When loading foo-bar.node, look for
foo_bar_module, not foo-bar_module. The latter is not a legal symbol name.
2012-12-18 16:07:31 +01:00
Ben Noordhuis
7b2ef2de20 deps: upgrade libuv to dc559a5 2012-12-18 15:46:00 +01:00
Fedor Indutny
ba754524a9 deps: upgrade libuv to b86ed94 2012-12-18 14:15:02 +04:00
isaacs
82c7c84e25 net: Handle sync writable streams synchronously
This fixes the case where stderr doesn't flush before the process exits.
2012-12-17 15:08:57 -08:00
isaacs
6c5356bfe2 Revert "buffer: allocate memory with mmap()"
Also Revert "buffer: use MAP_ANON, fix OS X build"

This reverts commit ddb15603e7.
This reverts commit 2433ec8276.
2012-12-17 10:47:17 -08:00
Dean McNamee
1c265c54a2 typed arrays: fix missing type in SizeOfArrayElementForType()
When Mikael Bourges-Sevenier added support for Uint8ClampedArray in 67fc1da,
the new type was not added to SizeOfArrayElementForType().
2012-12-17 17:37:51 +01:00
Dean McNamee
ba00fb0199 typed arrays: re-export SizeOfArrayElementForType()
Although it is not used externally by node, it is needed by upstream and Plask.

This effectively reverts:

    commit 1444801374
    Author: Aaron Jacobs <jacobsa@google.com>
    Date:   Thu Mar 15 13:26:35 2012 +1100

        typed arrays: unexport SizeOfArrayElementForType()

        It isn't used anywhere else, so made it an implementation detail in
        v8_typed_array.cc.
2012-12-17 17:37:51 +01:00
Nicolas Chambrier
496c0bd936 doc: add Google+ French community 2012-12-17 17:21:35 +01:00
Fedor Indutny
a3877ab53e Revert "build: enable DEAD_CODE_STRIPPING on OS X"
This reverts commit 02dffb063e.
DEAD_CODE_STRIPPING is stripping out CRYPTO_set_add_lock_callback
symbol on which some addons are relying.
2012-12-17 19:20:44 +04:00
Ben Noordhuis
53b826e6ae install: fix openbsd man page location
Man pages go into $PREFIX/man on OpenBSD, not $PREFIX/share/man.
2012-12-17 12:05:14 +01:00
Ben Noordhuis
ddb15603e7 buffer: use MAP_ANON, fix OS X build 2012-12-17 11:29:03 +01:00
isaacs
945f877d30 test: Fix test-https-localaddress*
Fix #4418
2012-12-16 14:40:24 -08:00
Brian White
827b2a9b0b http: bubble up parser errors to ClientRequest
Make parser errors bubble up to the ClientRequest instead of the underlying
net.Socket object.

This is a back-port of commit c78678b from the master branch.

Fixes #3776.
2012-12-16 17:25:03 +01:00
Ben Noordhuis
2433ec8276 buffer: allocate memory with mmap()
Work around an issue with the glibc malloc() implementation where memory blocks
are never returned to the operating system when they are allocated with brk()
and have overlapping lifecycles.

Fixes #4283.
2012-12-16 10:19:09 +01:00
isaacs
01db736c8d Merge branch 'streams2' 2012-12-15 10:29:16 -08:00
isaacs
cd51fa8f5a test: Update message tests for streams2 2012-12-14 17:46:24 -08:00
isaacs
abbd47e4a3 test: Update simple/test-fs-{write,read}-stream-err for streams2
Streams2 style streams might have already kicked off a read() or write()
before emitting 'data' events.  Make the test less dependent on ordering
of when data events occur.
2012-12-14 17:46:23 -08:00
isaacs
3751c0fe40 streams2: Still emit error if there was a write() cb 2012-12-14 17:46:23 -08:00
isaacs
19ecc3a4a6 test updates for streams2 2012-12-14 17:46:23 -08:00
isaacs
0977638ffb test: Fix many tests for http streams2 refactor 2012-12-14 17:46:23 -08:00
isaacs
1d369317ea http: Refactor for streams2
Because of some of the peculiarities of http, this has a bit of special
magic to handle cases where the IncomingMessage would wait forever in a
paused state.

In the server, if you do not begin consuming the request body by the
time the response emits 'finish', then it will be flushed out.

In the client, if you do not add a 'response' handler onto the request,
then the response stream will be flushed out.
2012-12-14 17:46:23 -08:00
isaacs
81e356279d child_process: Remove stream.pause/resume calls
Unnecessary in streams2
2012-12-14 10:52:30 -08:00
isaacs
b4df1e62de test updates 2012-12-14 10:52:30 -08:00
isaacs
bb56dcc450 tty/stdin: Refactor for streams2 2012-12-14 10:52:30 -08:00
isaacs
695abba5ac test: Fix many tests for streams2 net refactor 2012-12-14 10:52:30 -08:00
isaacs
8a3befa0c6 net: Refactor to use streams2
This is a combination of 6 commits.

* XXX net fixup lcase stream

* net: Refactor to use streams2

    Use 'socket.resume()' in many tests to trigger old-mode behavior.

* net: Call destroy() if shutdown() is not provided

    This is important for TTY wrap streams

* net: Call .end() in socket.destroySoon if necessary

    This makes the http 1.0 keepAlive test pass, also.

* net wtf-ish stuff kinda busted

* net fixup
2012-12-14 10:52:30 -08:00
isaacs
7742257feb benchmark: Add once() function to net-pipe benchmark fixture 2012-12-14 10:52:29 -08:00
isaacs
854171dc6f streams2: Remove extraneous bufferSize setting 2012-12-14 10:52:29 -08:00
isaacs
20a88feb8f docs: streams2 2012-12-14 10:52:29 -08:00
isaacs
04541cf7bc streams2: Emit pause/resume events 2012-12-14 10:52:29 -08:00
isaacs
8fe7b0c910 streams2: Support a Readable hwm of 0
Necessary for proper stdin functioning
2012-12-14 10:52:29 -08:00
isaacs
5760244cc6 streams2: Writable only emit 'finish' once 2012-12-14 10:52:28 -08:00
isaacs
8f428f3b0d streams2: Call read(0) on resume()
Otherwise (especially with stdin) you sometimes end up in cases
where the high water mark is zero, and the current buffer is at 0,
and it doesn't need a readable event, so it never calls _read().
2012-12-14 10:52:28 -08:00
isaacs
fc7d8d59f7 lint 2012-12-14 10:52:28 -08:00
isaacs
f8bb031bdc test: Sync writables may emit finish before callbacks 2012-12-14 10:52:28 -08:00
isaacs
dbcacc5afe streams2: NextTick the emit('readable') in resume()
Otherwise resume() will cause data to be emitted before it can be handled.
2012-12-14 10:52:28 -08:00
isaacs
99021b7a4f streams2: pause() should be immediate 2012-12-14 10:52:28 -08:00
isaacs
42981e2aad streams2: Switch to old-mode immediately, not nextTick
This fixes the CONNECT/Upgrade HTTP functionality, which was not getting
sliced properly, because readable wasn't emitted on this tick.

Conflicts:

	test/simple/test-http-connect.js
2012-12-14 10:52:28 -08:00
isaacs
83704f1279 streams2: Set readable=false on end 2012-12-14 10:52:27 -08:00
isaacs
4a32d53155 doc: Crypto streaming interface 2012-12-14 10:52:27 -08:00
isaacs
e0c600e00e test: Tests for streaming crypto interfaces 2012-12-14 10:52:27 -08:00
isaacs
dd3ebb8cf6 crypto: Streaming interface for Sign and Verify 2012-12-14 10:52:27 -08:00
isaacs
e336134658 crypto: Streaming interface for cipher/decipher/iv 2012-12-14 10:52:27 -08:00
isaacs
175f78c6ba crypto: Streaming api for Hmac 2012-12-14 10:52:27 -08:00
isaacs
90de2ddb77 crypto: Streaming interface for Hash 2012-12-14 10:52:26 -08:00
isaacs
3d3a0b3046 test: Writable stream end() method doesn't take a callback 2012-12-14 10:52:26 -08:00
isaacs
70461c39be test: simple/test-file-write-stream needs to use 0 lowWaterMark 2012-12-14 10:52:26 -08:00
isaacs
79fd9620f5 test: Fix test-repl-autolibs inspect call 2012-12-14 10:52:26 -08:00
isaacs
0e01d6398f zlib: streams2 2012-12-14 10:52:26 -08:00
isaacs
44b308b1f7 fs: streams2 2012-12-14 10:52:26 -08:00
isaacs
d58f2654bc streams2: Unpipe on dest.emit('close') 2012-12-13 17:00:34 -08:00
isaacs
49ea653363 streams2: Remove pipe if the dest emits error 2012-12-13 17:00:34 -08:00
isaacs
ac5a185edf streams2: Handle pipeChunkSize properly 2012-12-13 17:00:33 -08:00
isaacs
53fa66d9f7 streams2: Set 'readable' flag on Readable streams 2012-12-13 17:00:33 -08:00
isaacs
4b4ff2dff1 streams2: Refactor out .once() usage from Readable.pipe() 2012-12-13 17:00:33 -08:00
isaacs
38e2b0053a streams2: Get rid of .once() usage in Readable.pipe
Significant performance impact
2012-12-13 17:00:33 -08:00
isaacs
b15e19a232 streams2: Remove function.bind() usage
It's too slow, unfortunately.
2012-12-13 17:00:32 -08:00
isaacs
2ff499c022 streams2: Do multipipe without always using forEach
The Array.forEach call is too expensive.
2012-12-13 17:00:32 -08:00
isaacs
c2f62d496a test: Update stream2 transform for corrected behavior 2012-12-13 17:00:32 -08:00
isaacs
0118584433 streams2: Writable organization, add 'finishing' flag 2012-12-13 17:00:31 -08:00
isaacs
286c54439a streams2: Only emit 'readable' when needed 2012-12-13 17:00:31 -08:00
isaacs
62dd04027b streams2: Set Readable lwm to 0 by default 2012-12-13 17:00:31 -08:00
isaacs
f20fd22abd streams2: Add high water mark for Readable
Also, organize the numeric settings a bit on the ReadableState class
2012-12-13 17:00:30 -08:00
isaacs
63ac07b32b streams2: Export Readable/Writable State classes 2012-12-13 17:00:30 -08:00
isaacs
5856823223 streams2: Fix duplex no-half-open logic 2012-12-13 17:00:29 -08:00
isaacs
286aa04910 streams2: Abstract out onread function 2012-12-13 17:00:29 -08:00
isaacs
f624ccb475 streams2: Use StringDecoder.end 2012-12-13 17:00:29 -08:00
isaacs
cf0b4ba410 streams2: flow() is not always bound to src 2012-12-13 17:00:28 -08:00
isaacs
acfb0ef908 test: fixture for streams2 testing 2012-12-13 17:00:28 -08:00
isaacs
e82d06bef9 streams2: Fix regression from Duplex ctor assignment 2012-12-13 17:00:28 -08:00
isaacs
f3e71eb417 test: Writable bufferizing, non-bufferizing, and callbacks 2012-12-13 17:00:27 -08:00
isaacs
71e2b61388 streams2: Support write(chunk,[encoding],[callback]) 2012-12-13 17:00:27 -08:00
isaacs
0678480b57 streams2: Allow Writables to opt out of pre-buffer-izing 2012-12-13 17:00:27 -08:00
isaacs
545f512619 streams2: ctor guards on Stream classes 2012-12-13 17:00:26 -08:00
isaacs
9b1b85490b streams2: Tests of new interfaces 2012-12-13 17:00:26 -08:00
isaacs
8acb416ad0 streams2: Handle immediate synthetic transforms properly 2012-12-13 17:00:26 -08:00
isaacs
06e321d0f9 streams2: Correct drain/return logic
It was testing the length *before* adding the current chunk, which
is the opposite of correct.

Also, the return value was flipped.
2012-12-13 17:00:25 -08:00
isaacs
02f017d24f streams2: Allow 0 as a lowWaterMark value 2012-12-13 17:00:25 -08:00
isaacs
caa853bb06 transform: Automatically read() on _write when read buffer is empty 2012-12-13 17:00:25 -08:00
isaacs
3b59fd70f4 streams2: Make Transform streams pull-style
That is, the transform is triggered by a _read, not by a _write.

This way, backpressure works properly.
2012-12-13 17:00:24 -08:00
isaacs
9b5abe5bfe streams2: setEncoding and abstract out endReadable 2012-12-13 17:00:24 -08:00
isaacs
51a52c43a2 streams2: Set flowing=true when flowing 2012-12-13 17:00:24 -08:00
isaacs
639fbe28d1 streams2: Convert strings to buffers before passing to _write() 2012-12-13 17:00:23 -08:00
isaacs
420e07c577 streams2: The new stream base classes 2012-12-13 17:00:23 -08:00
isaacs
17834ed28c Add 'stream' as a native module in repl 2012-12-13 17:00:23 -08:00
isaacs
372cb32dc4 module: Support cycles in native module requires 2012-12-13 17:00:23 -08:00
isaacs
314c6b3060 Don't allow invalid encodings in StringDecoder class 2012-12-13 17:00:22 -08:00
isaacs
77ed12fe7a Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	AUTHORS
	ChangeLog
	deps/uv/test/test-spawn.c
	deps/uv/uv.gyp
	src/cares_wrap.cc
	src/node.cc
	src/node_version.h
	test/simple/test-buffer.js
	tools/gyp/pylib/gyp/common.py
	tools/install.py
2012-12-13 16:57:58 -08:00
isaacs
45cdb0e4c1 blog: Post for 0.8.16 2012-12-13 11:50:47 -08:00
isaacs
953673424a Now working on 0.8.17 2012-12-13 11:50:35 -08:00
isaacs
a18507ce11 Merge commit 'v0.8.16' into v0.8 2012-12-13 11:50:15 -08:00
isaacs
1c9c6277d5 2012.12.13, Version 0.8.16 (Stable)
* npm: Upgrade to 1.1.69

* fs: fix WriteStream/ReadStream fd leaks (Ben Noordhuis)

* crypto: fix leak in GetPeerCertificate (Fedor Indutny)

* buffer: Don't double-negate numeric buffer arg (Trevor Norris)

* net: More accurate IP address validation and IPv6 dotted notation. (Joshua Erickson)
2012-12-13 11:49:39 -08:00
Ben Noordhuis
6cf68aead6 deps: upgrade libuv to e079a99 2012-12-13 20:23:01 +01:00
isaacs
b09f97068e npm: Upgrade to v1.1.69 2012-12-12 14:41:28 -08:00
Ben Noordhuis
d65832ccd0 fs: fix WriteStream fd leak
Close the file descriptor when a write operation fails.

Fixes #4387.
2012-12-12 09:46:22 +01:00
Ben Noordhuis
6e97b2cc17 fs: fix ReadStream fd leak
Close the file descriptor when a read operation fails.

Fixes #4387.
2012-12-12 09:46:22 +01:00
Ben Noordhuis
65d824b488 test: add common.mustCall function
Verifies that the callback gets invoked <n> times during the lifetime of the
test script.

This is a back-port of commit d0e6c3f from the master branch.
2012-12-12 09:46:09 +01:00
isaacs
92e92b0215 doc: Add nodejstr to community page 2012-12-10 16:56:49 -08:00
Ryunosuke SATO
0506d294dc events: fix typos in code comment
- newListeners -> newListener
2012-12-10 13:08:26 +01:00
Ryunosuke SATO
eb502205d5 events: setMaxListeners() should not have side effects
This object initialization has been unnecessary since 12cf730b.

Ref #3803.
2012-12-10 13:07:35 +01:00
Ryunosuke SATO
1c7acd2c84 events: use assigned variable instead of arguments
Always `arguments[0]` is used when `EventEmitter#emit` called.
Using assigned variable is faster than `arguments[0]`.
2012-12-10 13:04:46 +01:00
Ryunosuke SATO
0397223ab4 events: use null assignment instead of deleting property 2012-12-10 08:59:14 +01:00
Bert Belder
3c293ba272 http: protect against response splitting attacks 2012-12-07 17:13:51 -08:00
isaacs
0e95ea42ce lint
introduced in 5b65638.
2012-12-07 16:58:16 -08:00
isaacs
33fa740577 fs: Raise error when null bytes detected in paths
Reworking of @bnoordhuis's more aggressive approach.
2012-12-07 16:52:46 -08:00
Ben Noordhuis
c79fd0e167 doc: remove broken require.extensions example
Fixes #4384.
2012-12-06 21:58:36 +01:00
Ben Noordhuis
5b65638124 tls, https: add tls handshake timeout
Don't allow connections to stall indefinitely if the SSL/TLS handshake does
not complete.

Adds a new tls.Server and https.Server configuration option, handshakeTimeout.

Fixes #4355.
2012-12-06 17:39:24 +01:00
Ben Noordhuis
3ece130ea2 process: add getgroups(), setgroups(), initgroups()
DRY the getuid(), getgid(), etc. functions while we're at it.
2012-12-06 17:14:58 +01:00
Ben Noordhuis
c08e947fbd buffer: remove unused #includes 2012-12-06 04:45:11 +01:00
Ben Noordhuis
c81dec70e6 test: remove simple/test-child-process-fork2
The test assumes the parent and the child are scheduled fairly. Probably true
most of the time but not always, making it fail spuriously.

Bad test, remove it.
2012-12-05 05:46:20 +01:00
Shigeki Ohtsu
1c8a5269c5 test: fix simple/test-debug-brk-file race condition
V8 debug agent needs some time to be ready and no longer sends the first event
break response to a debug client. We wait some time to connect the agent and
check its break status by obtaining breakpoint list and seeing if it exists on
line 0.
2012-12-05 04:31:22 +01:00
Ben Noordhuis
1f76a2eddc fs: add long stacktrace debugging facility
Enable long stacktraces if NODE_DEBUG=fs is set in the environment. Only
applies to the default rethrow callback; it's to help you find places where
you forgot to pass in a callback.
2012-12-04 08:12:12 +01:00
Ben Noordhuis
a80434736b fs: fix 'object is not a function' callback errors
Use a default callback if the user omitted one. Avoids errors like the one
below:

  fs.js:777
      if (err) return callback(err);
                      ^
  TypeError: object is not a function
          at fs.appendFile (fs.js:777:21)
          at Object.oncomplete (fs.js:297:15)

This commit fixes the behavior of fs.lchmod(), fs.lchown() and fs.readFile()
when the callback is omitted. Before, they silently swallowed errors.

Fixes #4352.
2012-12-04 08:05:55 +01:00
Bert Belder
03b00dcca9 os: throw when os.networkInterfaces() fails 2012-12-03 22:35:01 +01:00
Fedor Indutny
51d5655efa crypto: fix leak in GetPeerCertificate 2012-12-03 20:30:41 +04:00
Fedor Indutny
276245d26f crypto: fix leak in GetPeerCertificate 2012-12-03 20:30:16 +04:00
Ben Noordhuis
9d02bfbc25 test: fix simple/test-setproctitle on freebsd 2012-12-03 03:08:19 +01:00
Ben Noordhuis
f8999da514 build: avoid -Wno-old-style-declaration with gcc 4.2
Fixes the build on FreeBSD <= 9 with the default compiler.

Fixes #4186.
2012-12-03 02:21:32 +01:00
Ben Noordhuis
e5649d4b3d tools: fix platform detection on freebsd, sunos
This is a back-port of upstream gyp commit r1482.
2012-12-02 03:01:20 +01:00
Ben Noordhuis
22965da799 install: fix freebsd man page location
Man pages go into $PREFIX/man on FreeBSD, not $PREFIX/share/man.
2012-12-02 02:55:50 +01:00
isaacs
4de274cbee test: TTY only has writeBuffer(), not write()
This test is only passing because it's skipped normally.
2012-12-01 11:17:51 -08:00
isaacs
3149d2f7dc benchmark: Add net-pipe benchmark
Just sends a buffer to a server, which echoes it back, and then measures
the Gbits/second.  Very similar to throughput.js, but using a single
process, so that it's possible to dtrace and get the jsstack frames for
profile comparison.
2012-11-30 18:26:18 -08:00
Lewuathe
4d0fcd515f Fix dropped html tag 2012-11-30 18:14:26 -08:00
Trevor Norris
6772308883 buffer: Don't double-negate numeric buffer arg
Fix #4331

Using double negate forces values into 32bit space. Because of this
Math.ceil needs to be used. Since NaN comparisons are always false, use
that to our advantage to return 0 if it is.

Also added two tests to verify the changes.
2012-11-30 16:23:49 -08:00
Kyle Robinson Young
acad8d9a77 website: typo fixes 2012-11-29 23:00:09 +01:00
Joshua Erickson
c9f2531ae0 net: More accurate IP address validation and IPv6 dotted notation.
* Added isIP method to make use of inet_pton to cares_wrap.cc
* Modified net.isIP() to make use of new C++ isIP method.
* Added new tests to test-net-isip.js.

This is a back-port of commit fb6377e from the master branch.
2012-11-28 21:51:27 +01:00
Ryunosuke SATO
83161455bd doc: Fix missing link target to 'https.request()' 2012-11-27 18:11:40 -08:00
Chad Rhyner
8fc578b631 test: disable eio-race tests
Disabled the following unit tests:

* test-eio-race.js
* test-eio-race2.js
* test-eio-race4.js

These tests are known to fail on busy boxes due to being timing sensitive,
and are deemed not meaningful tests.

See https://github.com/joyent/node/issues/4272

Fixes #4272.
2012-11-27 07:18:00 +01:00
Adam Malcontenti-Wilson
0c9bee49fb build: support ARM in makefile target 'binary' 2012-11-27 07:14:21 +01:00
Michael Axiak
ffb4c173a4 build: add $(PYTHON) when calling configure 2012-11-27 05:44:11 +01:00
isaacs
122ac4e1f2 blog: Post for v0.8.15 2012-11-26 09:20:07 -08:00
isaacs
e773be6f90 Now working on 0.8.16 2012-11-26 09:18:33 -08:00
isaacs
9f51fd6b84 Merge branch 'v0.8.15-release' into v0.8 2012-11-26 09:12:52 -08:00
isaacs
fdf91afb49 2012.11.26, Version 0.8.15 (Stable)
* npm: Upgrade to 1.1.66 (isaacs)

* linux: use /proc/cpuinfo for CPU frequency (Ben Noordhuis)

* windows: map WSAESHUTDOWN to UV_EPIPE (Ben Noordhuis)

* windows: map ERROR_GEN_FAILURE to UV_EIO (Bert Belder)

* unix: do not set environ unless one is provided (Charlie McConnell)

* domains: don't crash if domain is set to null (Bert Belder)

* windows: fix the x64 debug build (Bert Belder)

* net, tls: fix connect() resource leak (Ben Noordhuis)
2012-11-26 08:39:49 -08:00
Ben Noordhuis
121ed91331 tls: fix tls.connect() resource leak
The 'secureConnect' event listener was attached with .on(), which blocked it
from getting garbage collected. Use .once() instead.

Fixes #4308.
2012-11-26 01:51:05 +01:00
Ben Noordhuis
4cb17cb219 net: fix net.connect() resource leak
The 'connect' event listener was attached with .on(), which blocked it from
getting garbage collected. Use .once() instead.

Fixes #4308.
2012-11-24 15:27:14 +01:00
Ben Noordhuis
aa3441ae45 js2c: raise proper Exception, not a string
Fixes the following error message:

  TypeError: exceptions must be old-style classes or derived
  from BaseException, not str

Fixes #4303.
2012-11-24 01:14:09 +01:00
Ben Noordhuis
335f20896a crypto: allow negative numbers in setOptions()
OR'ing together two large values, like `SSL_OP_ALL | SSL_OP_NO_TICKET`,
produces a negative number. To wit:

  assert((0x80000000 | 0x4000) === -0x7fffc000); // true
  assert((0x80000000 | 0x4000) ===  0x80004000); // false!

It's easy to work around by doing a logical shift, like this:

  assert((0x80000000 | 0x4000) >>> 0 ===  0x80004000); // true

But that's not very intuitive. Let's be more lenient in what we accept.
2012-11-24 00:10:25 +01:00
isaacs
fb5c7f03a0 blog: Don't filter out non-latest release notes
This causes too many people to ask me why it's broken.
2012-11-23 12:54:33 -08:00
isaacs
db008f7cce npm: Upgrade to 1.1.66 2012-11-23 12:51:23 -08:00
Trevor Norris
bb867c0fa6 doc: Add lines about additonal uses of Buffer
That Buffers can be used with Typed Array Views and DataViews. Included
are a couple simple examples.

Closes #4257.
2012-11-22 09:30:18 -08:00
Ben Noordhuis
8d2753c141 constants: fix wrapping of large constants
Use Number::New() instead of Integer::New(). The latter wraps large values,
e.g. 0x80000000 becomes -2147483648 instead of 2147483648.
2012-11-22 16:10:36 +01:00
Shigeki Ohtsu
11a5119e72 build: disable use of thin archive
Thin archive needs binutils >= 2.19, disable it for supporting old ar
even if static libraries are linked within a local build.
2012-11-21 14:06:37 +01:00
Scott Blomquist
f657ce685d windows: add tracing with performance counters
Patch by Henry Rawas and Scott Blomquist.
2012-11-21 01:21:53 +01:00
Bert Belder
bc9388342f windows: fix normalization of UNC paths 2012-11-21 01:21:25 +01:00
Ben Noordhuis
a25ebb1997 v8: fix dragonflybsd build
* fix gyp build
* don't require libexecinfo, it's not there
* libpthread doesn't implement sem_timedwait(), fall back to sem_wait()

Upstreamed in https://codereview.chromium.org/11421013/
2012-11-20 22:48:26 +01:00
Ben Noordhuis
1e738c5ef2 build: make python executable configurable
Upstreamed in https://codereview.chromium.org/11418101/

Fixes #4287.
2012-11-20 22:47:45 +01:00
Ben Noordhuis
815a181d03 deps: upgrade cares to 213f2b7 2012-11-20 22:44:23 +01:00
Ben Noordhuis
8ba1bec47d deps: upgrade libuv to fc5984f 2012-11-20 22:44:23 +01:00
Ben Noordhuis
7716828166 deps: upgrade libuv to 5639b2f 2012-11-20 19:21:48 +01:00
Tim Kuijsten
6f9ed28fac doc: fix typo in setPrivateKey function signature 2012-11-20 18:02:56 +01:00
Ben Noordhuis
38c52a0575 tools: update gyp to r1535
This commit contains one additional patch that makes gyp work on DragonFlyBSD,
see https://codereview.chromium.org/11348152/ for details.
2012-11-20 16:40:51 +01:00
Sergey Kholodilov
019ad346e0 crypto: fix ssl error handling
Make HandleSSLError() correctly process a zero status code: sometimes it
indicates an error and sometimes it doesn't.
2012-11-17 00:52:58 +01:00
Ben Noordhuis
71ba7bc2a0 node: remove eio-emul.h
The purpose of this file was to remap the old libeio API to the new one.
We dropped libeio in ee77a6a and this file has been broken ever since.

Ergo, remove it.
2012-11-16 23:44:44 +01:00
Stephen Gallagher
38809e3985 build: allow linking against system libuv 2012-11-16 23:34:13 +01:00
Ben Noordhuis
b6a3b0a629 deps: upgrade libuv to 665a316 2012-11-16 17:58:42 +01:00
isaacs
e2bcff9aa7 bench: Use hrtime in throughput benchmark 2012-11-11 10:02:33 -08:00
Ben Noordhuis
b6e989759b repl: don't interpret floating point numbers
Don't interpret floating point numbers, e.g. ".1234", as REPL commands.

Fixes #4268.
2012-11-10 18:21:17 +01:00
Trevor Norris
13c5db9771 buffer: remove duplicate assertion tests
Many assertion tests are duplicated in buffer.js. These few could be easily
removed and still have all tests pass.
2012-11-10 02:11:04 +01:00
Bert Belder
b3bfb6fbb6 domains: don't crash if domain is set to null
Closes #4256
2012-11-09 00:49:24 +01:00
Bert Belder
9b22944b68 windows: fix the x64 debug build 2012-11-08 23:54:53 +01:00
Nathan Rajlich
5e4e87ade5 os: add os.endianness() function 2012-11-08 12:31:45 -08:00
Nathan Rajlich
3c91a7ae10 readline: use a "string_decoder" to parse "keypress" events
While updating the readline test cases to test both "terimal: false" and
"terminal: true" mode, it turned out that the test case testing utf8 chars
being sent over multiple write() calls was failing. The solution is to use
a string_decoder instance when parsing the "keypress" events.
2012-11-06 16:28:30 -08:00
Nathan Rajlich
e95e095289 readline: don't emit "line" events with a trailing '\n' char
Before this commit, readline was inconsistent in whether or not it would emit
"line" events with or without the trailing "\n" included. When "terminal"
mode was true, then there would be no "\n", when it was false, then the "\n"
would be present. However, the trailing "\n" doesn't add much, and most of the
time people just end up stripping it manually.

Part of #4243.
2012-11-06 16:28:24 -08:00
Joshua Erickson
fb6377ebd0 net: More accurate IP address validation and IPv6 dotted notation.
* Added isIP method to make use of inet_pton to cares_wrap.cc
* Modified net.isIP() to make use of new C++ isIP method.
* Added new tests to test-net-isip.js.
2012-11-06 16:49:21 +01:00
Shigeki Ohtsu
f36bfd1590 build: remove jslint test/ on Windows
See 605927fbd9
2012-11-06 00:25:21 +01:00
Timothy J Fontaine
02dffb063e build: enable DEAD_CODE_STRIPPING on OS X 2012-11-06 00:18:36 +01:00
Timothy J Fontaine
0f3ddad0fc build: let xcode pick proper compiler 2012-11-06 00:18:36 +01:00
Timothy J Fontaine
ac047166f6 build: add configure option to generate xcode build files 2012-11-06 00:18:36 +01:00
Timothy J Fontaine
d264b23077 build: add postmortem as a dependency if enabled 2012-11-06 00:18:36 +01:00
Stephen Gallagher
73ff653a8d build: allow linking against system c-ares 2012-11-06 00:18:35 +01:00
Stephen Gallagher
bfd78b69fc build: allow linking against system http_parser 2012-11-06 00:18:35 +01:00
Anthony Pesch
fddb5dc2d3 typed arrays: add slice() support to ArrayBuffer 2012-11-06 00:13:26 +01:00
Fedor Indutny
05882668f9 debugger: exit and kill child on SIGTERM or SIGHUP 2012-11-04 01:34:46 +01:00
Ben Noordhuis
83e5e20c2c build: remove _LARGEFILE_SOURCE, _FILE_OFFSET_BITS
Don't define the _LARGEFILE_SOURCE and _FILE_OFFSET_BITS flags, they're
inherited from libuv now.
2012-11-04 01:26:30 +01:00
Ben Noordhuis
a7ac1a1d88 deps: upgrade libuv to 0ddf9d6 2012-11-04 01:25:06 +01:00
Ben Noordhuis
a6fef475ce build: make debug build on os x compile at -O0
Set GCC_OPTIMIZATION_LEVEL explicitly, otherwise GYP defaults to -Os.
2012-11-02 15:58:21 +01:00
Shigeki Ohtsu
148f5e6512 build: fix default dtrace flag on Linux
DTrace on Linux should not be enabled by default because not all systems will
have the proper headers installed. Only enable when --with-dtrace is passed to
the configure script.
2012-11-01 22:20:21 +01:00
Girish Ramakrishnan
2f03eaf76f doc: tls: rejectUnauthorized defaults to true after 35607f3a 2012-11-01 16:16:27 +01:00
Scott Blomquist
66f64ae072 windows: generate ETW events to track v8 compiled code positions
Patch by Henry Rawas and Scott Blomquist.
2012-11-01 14:06:26 +01:00
Ben Noordhuis
2f5fa089e9 build: add --systemtap-includes configure switch 2012-11-01 01:36:46 +01:00
Jan Wynholds
06810b29fa tracing: add systemtap support 2012-11-01 01:25:22 +01:00
Ben Noordhuis
ab1e66d93f deps: upgrade libuv to 97c527a 2012-11-01 01:22:16 +01:00
isaacs
a12c42ca2f test: Use setImmediate for recursive deferral
This should have been with 21c741f, but didn't catch it then.
Taking our own advice.
2012-10-31 17:07:58 -07:00
isaacs
07d3b21f43 zlib: s/clear/close/ and match other close() semantics 2012-10-31 16:56:30 -07:00
Frederico Silva
cfbfaaa87d build: let gyp choose msvs version 2012-10-31 23:17:45 +01:00
J. Lee Coltrane
54d293da56 url: make url.format escape delimiters in path and query
`url.format` should escape ? and # chars in pathname, and # chars in
search, because they change the semantics of the operation otherwise.
Don't escape % chars, or anything else. (see: #4082)
2012-10-30 09:16:13 -07:00
Brandon Philips
19b87bbda0 tls: delete useless removeListener call
onclose was never attached to 'end' so this call to remove this listener
is useless.  Delete it.
2012-10-30 16:58:07 +01:00
Ben Noordhuis
a93424da4a zlib: pass object size hint to V8
Inform V8 that the zlib context object is tied to a large off-heap buffer.

This makes the GC run more often (in theory) and improves the accuracy of
--trace_external_memory.
2012-10-30 15:03:27 +01:00
Ben Noordhuis
570e4be932 zlib: reduce memory consumption, release early
In zlibBuffer(), don't wait for the garbage collector to reclaim the zlib memory
but release it manually. Reduces memory consumption by a factor of 10 or more
with some workloads.

Test case:

  function f() {
    require('zlib').deflate('xxx', g);
  }
  function g() {
    setTimeout(f, 5);
  }
  f();

Observe RSS memory usage with and without this commit. After 10,000 iterations,
RSS stabilizes at ~35 MB with this commit. Without, RSS is over 300 MB and keeps
growing.

Cause: whenever the JS object heap hits the high-water mark, the V8 GC sweeps
it clean, then tries to grow it in order to avoid more sweeps in the near
future. Rule of thumb: the bigger the JS heap, the lazier the GC can be.

A side effect of a bigger heap is that objects now live longer. This is harmless
in general but it affects zlib context objects because those are tied to large
buffers that live outside the JS heap, on the order of 16K per context object.

Ergo, don't wait for the GC to reclaim the memory - it may take a long time.

Fixes #4172.
2012-10-30 15:03:17 +01:00
Francois Marier
44dd2c392a doc: remove duplicate set of options 2012-10-30 01:20:17 +01:00
Francois Marier
326bce91d6 doc: reflect hostname v. host preference in examples
The documentation for http.request and https.request states that
`hostname` is preferred over `host` so the code examples should
use that option name.
2012-10-29 20:34:03 +01:00
isaacs
21c741f257 Print warning when maxTickDepth is reached 2012-10-29 10:53:39 -07:00
Scott Blomquist
953b049a89 windows: correct outputs list in "node_etw" gyp target
The gyp target node_etw didn't list its output dependencies. This
was causing virgin builds to fail with a "failed to open file for
write" error.

With this corrected outputs list, gyp reliably pre-creates
required output directories.
2012-10-29 14:27:30 +01:00
isaacs
5f0a10ad21 blog: Correct shasums for v0.8.14 2012-10-25 14:42:47 -07:00
isaacs
7fe1671727 blog: Post for v0.8.14 2012-10-25 14:17:43 -07:00
isaacs
54e88b3d61 Now working on 0.8.15 2012-10-25 14:16:53 -07:00
isaacs
4379e49818 Merge branch 'v0.8.14-release' into v0.8 2012-10-25 14:15:27 -07:00
isaacs
b00527fcf0 2012.10.25, Version 0.8.14 (Stable)
* events: Don't clobber pre-existing _events obj in EE ctor (isaacs)
2012-10-25 13:49:32 -07:00
isaacs
45a13d9674 events: Don't clobber pre-existing _events obj in EE ctor 2012-10-25 13:37:08 -07:00
isaacs
d130bb060e blog: Post for v0.8.13 2012-10-25 12:54:00 -07:00
isaacs
648e38771e Now working on 0.8.14 2012-10-25 12:52:46 -07:00
isaacs
d269f7e48c Merge branch 'v0.8.13-release' into v0.8 2012-10-25 12:52:26 -07:00
isaacs
ff4c974873 2012.10.25, Version 0.8.13 (Stable)
* V8: Upgrade to 3.11.10.25

* npm: Upgrade to 1.1.65

* url: parse hostnames that start with - or _ (Ben Noordhuis)

* repl: Fix Windows 8 terminal issue (Bert Belder)

* typed arrays: use signed char for signed int8s (Aaron Jacobs)

* crypto: fix bugs in DiffieHellman (Ben Noordhuis)

* configure: turn on VFPv3 on ARMv7 (Ben Noordhuis)

* Re-enable OpenSSL UI for entering passphrases via tty (Ben Noordhuis)

* repl: ensure each REPL instance gets its own "context" (Nathan Rajlich)
2012-10-25 11:46:13 -07:00
isaacs
e1bdde05c7 V8 build: 'echo -n' considered harmful 2012-10-25 11:46:13 -07:00
isaacs
822e13d375 npm: Upgrade to 1.1.65 2012-10-25 09:15:35 -07:00
isaacs
c7b2e29e5e events: Make the EventEmitter class monomorphic
Always add domain, _events, and _maxListeners properties, set to the
default values at first.

Leads to a very very slight perf improvement when using setMaxListeners,
or dealing with a lot of EE objects that don't have any listeners.
2012-10-25 07:51:05 -07:00
Ben Noordhuis
9b61f570d8 Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	configure
	deps/v8/build/common.gypi
2012-10-25 16:08:58 +02:00
Ben Noordhuis
4b8629db37 v8: remove optimization switches
Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi, we set
them globally in $(TOPLEVEL)/common.gypi.

Commit 29d12c73 accidentally reintroduced the switches again. In particular,
the 'cflags!': ['-O2','-Os'] section forced building V8 without any
optimizations, resulting in a steep (~66%) performance drop on some benchmarks.

Fixes #4191.
2012-10-25 01:06:00 +02:00
Ben Noordhuis
28e6403a56 build: add --unsafe-optimizations configure switch
Turns on -O3 and other optimizations that may produce buggy code with some
toolchains. Use at your own risk.
2012-10-25 01:06:00 +02:00
Ben Noordhuis
de0303d3ad url: parse hostnames that start with - or _
Allow hostnames like '-lovemonsterz.tumblr.com' and '_jabber._tcp.google.com'.

Fixes #4177.
2012-10-25 01:06:00 +02:00
Bert Belder
fa94f0fe83 v8: don't show performance warnings when compiling with msvc
Patch sent upstream: http://codereview.chromium.org/10829109/
2012-10-24 21:29:46 +02:00
isaacs
78dbb15858 Now working on v0.9.4 2012-10-24 10:10:57 -07:00
isaacs
9b3f63503e Merge branch 'v0.9.3-release' 2012-10-24 10:10:30 -07:00
isaacs
82a72e9591 blog: Post for v0.9.3 release 2012-10-24 10:08:58 -07:00
isaacs
1ed4c6776e 2012.10.24, Version 0.9.3 (Unstable)
* V8: Upgrade to 3.13.7.4

* crypto: Default to buffers instead of binary strings (isaacs, Fedor Indutny)

* crypto: add getHashes() and getCiphers() (Ben Noordhuis)

* unix: add custom thread pool, remove libeio (Ben Noordhuis)

* util: make `inspect()` accept an "options" argument (Nathan Rajlich)

* https: fix renegotation attack protection (Ben Noordhuis)

* cluster: make 'listening' handler see actual port (Aaditya Bhatia)

* windows: use USERPROFILE to get the user's home dir (Bert Belder)

* path: add platform specific path delimiter (Paul Serby)

* http: add response.headersSent property (Pavel Lang)

* child_process: make .fork()'d child auto-exit (Ben Noordhuis)

* events: add 'removeListener' event (Ben Noordhuis)

* string_decoder: Add 'end' method, do base64 properly (isaacs)

* buffer: include encoding value in exception when invalid (Ricky Ng-Adam)

* http: make http.ServerResponse no longer emit 'end' (isaacs)

* streams: fix pipe is destructed by 'end' from destination (koichik)
2012-10-24 09:21:44 -07:00
isaacs
abf37c1e66 V8 build: 'echo -n' considered harmful 2012-10-24 09:21:44 -07:00
Ben Noordhuis
8ac017eba7 test: fix pummel/test-crypto-dh, pummel/test-dh-regr
Forgotten in the switch to buffers as the default output in 3570f20.

Fixes #4188.
2012-10-24 15:37:34 +02:00
Bert Belder
f34f1e30a6 repl: call resume() after setRawMode()
Solves #4178, but does not fix the underlying issue
2012-10-24 02:52:18 +02:00
Bert Belder
6822488c93 repl: call resume() after setRawMode()
Solves #4178, but does not fix the underlying issue
2012-10-24 02:42:57 +02:00
Olivier Lalonde
626db18635 doc: child_process: document uid and gid spawn() options 2012-10-24 01:24:00 +02:00
isaacs
c3ca783525 Merge remote-tracking branch 'ry/v0.8'
Conflicts:
	deps/v8/src/arm/code-stubs-arm.cc
	deps/v8/src/version.cc
2012-10-23 11:59:19 -07:00
isaacs
a0ee291566 V8: Reapply patches 2012-10-23 11:50:46 -07:00
isaacs
95c9305874 V8: Upgrade to 3.13.7.4 2012-10-23 11:48:55 -07:00
isaacs
76a6c4bf2e V8: Reapply patches 2012-10-23 11:38:09 -07:00
isaacs
29d12c7342 V8: Upgrade to 3.11.10.25 2012-10-23 11:35:27 -07:00
isaacs
7413df0c1f npm: Upgrade to 1.1.64 2012-10-23 11:34:46 -07:00
isaacs
3570f2097f Merge branch 'crypto-buffers' 2012-10-23 11:26:06 -07:00
isaacs
1122e3af28 crypto: Style. Prefer 'char*' over 'char *' 2012-10-23 10:48:51 -07:00
isaacs
f2fa97f178 crypto: Remove many unnecessary toObjects 2012-10-23 10:48:51 -07:00
isaacs
d7da20c812 crypto: pbkdf2 throws when no callback provided 2012-10-23 10:48:51 -07:00
isaacs
f3621359f4 doc: OpenSSL is bundled now. 2012-10-23 10:48:51 -07:00
isaacs
c87b524c5f crypto: Clean up buffer handling and DH methods 2012-10-23 10:48:51 -07:00
isaacs
76b0bdf720 crypto: Add crypto.DEFAULT_ENCODING (defaults to 'buffer')
This is a flag to make it easier for users to upgrade through the
breaking crypto change, and easier for us to switch it back if it's a
problem.

Explicitly set default encoding to 'buffer' in other tests, in case it
ever changes back.
2012-10-23 10:48:51 -07:00
isaacs
4266f5cf2e tls: Provide buffer to Connection.setSession 2012-10-23 10:48:50 -07:00
isaacs
bfb9d5bbe6 crypto: Binding only accepts buffers 2012-10-23 10:48:50 -07:00
isaacs
9901b69c8e crypto: Move encoding logic to JS, default=buffer
crypto: Hash and Hmac default to buffers

crypto: Move Cipher encoding logic to JS

crypto: Move Cipheriv encoding logic to JS

crypto: Move Decipher encoding logic to JS

crypto: Move Decipheriv into JS, default to buffers

crypto: Move Sign class to JS

crypto: Better encoding handling in Hash.update

crypto: Move Verify class to JS

crypto: Move DiffieHellman to JS, default to buffers

crypto: Move DiffieHellmanGroup to JS, default to buffers

Also, create a test for this feature
2012-10-23 10:22:42 -07:00
Ben Noordhuis
160e4d0534 build: re-enable gdbjit, honor --gdb again
Note that you need to start node with --gdbjit for it to become effective.
2012-10-23 17:43:38 +02:00
mstarzinger@chromium.org
e8b0427be2 v8: make GDBJIT interface compile again
R=ulan@chromium.org
BUG=v8:1804

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

This is a back-port of upstream commits 12679, 12686 and 12738.
2012-10-23 17:42:43 +02:00
isaacs
18beea4a3f Merge remote-tracking branch 'ry/v0.8' 2012-10-23 08:22:47 -07:00
Ben Noordhuis
b6b881378a test: add typed arrays regression test
Ensure that uint8 values >= 128 are correctly promoted to int8 <= -1.
2012-10-23 17:12:39 +02:00
Aaron Jacobs
49f0f618a9 typed arrays: use signed char for signed int8s
The C standard allows plain `char` to be unsigned. The build environment
at Google trips this issue.
2012-10-23 16:55:59 +02:00
yangguo@chromium.org
9fa953d3e7 v8: use correct timezone information on Solaris
`timezone` variable contains the difference, in seconds, between UTC and
local standard time (see `man 3 localtime` on Solaris).

Call to `tzset` is required to apply contents of `TZ` variable to
`timezone` variable.

BUG=v8:2064

Review URL: https://chromiumcodereview.appspot.com/10967066
Patch from Maciej Małecki <me@mmalecki.com>.

This is a back-port of upstream commit r12802.
2012-10-23 16:43:38 +02:00
Ben Noordhuis
844a0058d0 crypto: fix DH use-after-free and memory leak
Fix a use-after-free bug and a memory leak in the error path of
DiffieHellman::ComputeSecret().

* the BIGNUM key was used after being freed with BN_free().
* the output buffer was not freed
2012-10-22 00:20:45 +02:00
Ben Noordhuis
de18e29784 crypto: fix DH 1 byte buffer underflow
Passing a bad key to DiffieHellman::ComputeSecret() made it zero the byte
before the heap allocated buffer due to an erroneous size calculation.
2012-10-22 00:20:32 +02:00
Ben Noordhuis
82df345fbb test: add diffie-hellman regression test
Exercises the error path in DiffieHellman::ComputeSecret() in src/node_crypto.cc
2012-10-21 23:56:01 +02:00
Ben Noordhuis
d0227b0308 Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	deps/openssl/openssl.gyp
2012-10-21 23:06:48 +02:00
Soarez
72ce9baa75 streams: remove useless line
The removed line was removing a calllback that was never setup
in first place. 016afe2 forgot to remove this.
2012-10-21 22:58:14 +02:00
Ben Noordhuis
cb6d084d35 node: update description of --print 2012-10-20 15:03:48 +02:00
Bert Belder
c11c19b92c uv: upgrade to 1e32cb0 2012-10-17 18:33:45 +02:00
isaacs
627f0d27e8 doc: Typo. s/arguemnt/argument/ 2012-10-16 10:59:23 -07:00
Nathan Rajlich
cca15e8e33 test: disable global variable check for "test-repl-options.js"
Previously, the "global" mode of REPLs was broken when created after another
non-global REPL (they would end up sharing the same context). Now that "global"
mode is fixed for that case (b1e78cef09), this
test case gets its global scope modified with "module" and other REPL-specific
properties, so disable the global check.
2012-10-15 14:59:57 -07:00
Ben Noordhuis
1205734e69 configure: turn on VFPv3 on ARMv7
Fixes a V8 build error caused by missing arm_fpu and arm_neon settings.

This is a back-port of commit bbf6b4e from the master branch.

Fixes #4142.
2012-10-15 23:55:26 +02:00
Ben Noordhuis
28b0cc08b8 Revert "Disable OpenSSL UI"
This reverts commit 1c88c3b3b5.

It breaks the "read a password from stdin" functionality that OpenSSL provides.

Fixes #4059, #4143.

Conflicts:

	deps/openssl/openssl.gyp
2012-10-15 23:40:15 +02:00
Jan Lehnardt
a7b5938715 docs: fix copy and paste error 2012-10-14 14:47:02 +02:00
Nathan Rajlich
4b238b4c2a Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	AUTHORS
	ChangeLog
	deps/uv/test/runner-win.c
	doc/api/process.markdown
	lib/repl.js
	src/node_crypto.cc
	src/node_version.h
2012-10-13 16:16:56 -07:00
Dean McNamee
47643d2ec5 typed arrays: remove unnecessary special-casing
Uint32Value() on undefined is equal to 0, no need to special case it.
2012-10-14 00:57:09 +02:00
Dean McNamee
93efc7f78d typed arrays: simplify typed array get() and set()
Instead of duplicating V8's logic (including clamping), just simply call into
V8's Get() and Set() methods, which handles all conversions and typing.
2012-10-14 00:54:20 +02:00
Ben Noordhuis
4a23add90f doc: rectify http.ClientResponse close/end events
* The 'close' event doesn't emit an error object.

* It's possible for a 'close' event to come after an 'end' event, contrary to
  what the documentation said.

Fixes #4116.
2012-10-13 15:17:51 +02:00
Ben Noordhuis
2fbf0612a1 crypto: sort return value of getCiphers/getHashes 2012-10-13 02:55:17 +02:00
Ben Noordhuis
14a6c4efb8 crypto: add crypto.getHashes() 2012-10-13 02:55:14 +02:00
Ben Noordhuis
f53441ab1f crypto: add crypto.getCiphers()
Returns a list of, unsurprisingly, the available ciphers.
2012-10-13 01:49:57 +02:00
Nathan Rajlich
b1e78cef09 repl: ensure each REPL instance gets its own "context"
Before there was this weird module-scoped "context" variable which seemingly
shared the "context" of subsequent REPL instances, unless ".clear" was invoked
inside the REPL. To be proper, we need to ensure that each REPL gets its own
"context" object. I literally don't know why this "sharing" behavior was in place
before, but it was just plain wrong.
2012-10-12 16:37:17 -07:00
Ben Noordhuis
61978f57e6 dgram: remove stale code 2012-10-13 01:27:15 +02:00
Max Ogden
323bbdb0cb doc: set default background color to white 2012-10-13 00:54:21 +02:00
isaacs
8509073458 lint 2012-10-12 11:46:36 -07:00
isaacs
58db21e6c5 Now working on 0.8.13 2012-10-12 08:57:25 -07:00
isaacs
b3536ae0a8 blog: Post about 0.8.12 2012-10-12 08:57:12 -07:00
isaacs
d411622814 Merge branch 'v0.8.12-release' into v0.8 2012-10-12 08:56:53 -07:00
isaacs
061f2075cf string_decoder: Add 'end' method, do base64 properly 2012-10-11 16:46:18 -07:00
isaacs
38c72d4e29 2012.10.12, Version 0.8.12 (Stable)
* npm: Upgrade to 1.1.63

* crypto: Reduce stability index to 2-Unstable (isaacs)

* windows: fix handle leak in uv_fs_utime (Bert Belder)

* windows: fix application crashed popup in debug version (Bert Belder)

* buffer: report proper retained size in profiler (Ben Noordhuis)

* buffer: fix byteLength with UTF-16LE (koichik)

* repl: make "end of input" JSON.parse() errors throw in the REPL (Nathan Rajlich)

* repl: make invalid RegExp modifiers throw in the REPL (Nathan Rajlich)

* http: handle multiple Proxy-Authenticate values (Willi Eggeling)
2012-10-11 14:34:11 -07:00
isaacs
218f08dbde npm: Upgrade to 1.1.63 2012-10-11 14:11:38 -07:00
isaacs
99b2368a6c doc: Reduce crypto stability to 2-Unstable 2012-10-11 08:32:46 -07:00
Ben Noordhuis
d7c45ea7d0 deps: upgrade libuv to 47b2cd3 2012-10-11 14:36:23 +02:00
Ben Noordhuis
6a128e037e buffer: report proper retained size in profiler
Make buffers report the proper retained size in heap snapshots.

Before this commit, Buffer objects would show up in the heap profiler as being
only a few hundred bytes large, even if the actual buffer was many megabytes.
2012-10-11 01:05:18 +02:00
Nathan Rajlich
4eb5399bb2 util: add a "customInspect" option to util.inspect()
For disabling calling the custom `inspect()` function when defined on an object
that is being inspected.
2012-10-10 14:40:36 -07:00
Ben Noordhuis
e3ee289cca Update AUTHORS and .mailmap 2012-10-10 23:14:55 +02:00
Nathan Rajlich
07774e6b95 util: make inspect() accept an "options" argument
Consolidates all the formatting options into an "options" object argument.
This is so that we don't have to be constantly remembering the order of
the arguments and so that we can add more formatting options easily.

Closes #4085.
2012-10-10 13:31:47 -07:00
Bert Belder
87518f1e3c uv: upgrade to b0c1a38 2012-10-10 17:18:48 +02:00
Ben Noordhuis
5823290390 deps: upgrade libuv to cb03e3b 2012-10-10 02:17:32 +02:00
Ben Noordhuis
0ad005852c https: fix renegotation attack protection
Listen for the 'clientError' event that is emitted when a renegotation attack
is detected and close the connection.

Fixes test/pummel/test-https-ci-reneg-attack.js
2012-10-09 16:38:00 +02:00
Ben Noordhuis
7394e89ff6 tls: remove dead code
Remove dead code. Forgotten in 76ddf06.
2012-10-09 16:32:51 +02:00
Aaditya Bhatia
c668185add cluster: make 'listening' handler see actual port
Make the 'listening' event handler in the master process see the actual port
that the worker bound to when the worker specified port 0, i.e. a random port.
2012-10-09 16:23:24 +02:00
Ricky Ng-Adam
8bd4590a31 buffer: include encoding value in exception when invalid
Encoding failures can be somewhat confusing, especially when they are due to
control flow frameworks auto-filling parameters from the previous step output
values to functions (such as toString and write) that developers don't expect
to take an encoding parameter. By outputting the value as part of the message,
should make it easier to track down these sort of bugs.
2012-10-09 16:18:26 +02:00
Bert Belder
5288ed75be windows: use USERPROFILE to get the user's home dir
Fixes #3461
Close #3462
Close #4093
2012-10-09 00:47:38 +02:00
Ben Noordhuis
eec8c2edaf crypto: fix -Wtautological-compare warning 2012-10-09 00:46:51 +02:00
Andreas Madsen
be5a8e24c2 doc: consistent use of the callback argument 2012-10-08 22:58:11 +02:00
Ben Noordhuis
76ddf06f10 tls: don't use a timer to track renegotiations
It makes tls.createSecurePair(null, true) hang until the timer expires.

Using a timer here is silly. Use a timestamp instead.
2012-10-08 02:23:46 +02:00
Ben Noordhuis
16a9dac8ea deps: upgrade libuv to 40134c3 2012-10-08 00:44:47 +02:00
Ben Noordhuis
da1f48328c test: write to temp dir, not fixtures dir 2012-10-08 00:26:04 +02:00
Andrew Paprocki
8c5f269f90 Fix -Wsizeof-array-argument compiler warning. 2012-10-07 23:22:31 +02:00
Nathan Rajlich
7611c7cd25 repl: dynamically lookup the require extensions for tab complete
Removes 2 TODO items
2012-10-07 11:33:33 -07:00
Ben Noordhuis
621caa7bc5 Update LICENSE file. 2012-10-07 00:46:35 +02:00
Ben Noordhuis
ee77a6a953 deps: upgrade libuv to b9ed1a6 2012-10-07 00:44:38 +02:00
Nathan Rajlich
59c166cfba repl: move "isSyntaxError()" definition to the bottom
fixes lint "line length too long" error
2012-10-05 18:33:28 -07:00
Nathan Rajlich
f826b3269d doc: document the custom "inspect()" function behavior
Closes #3361.
2012-10-05 16:48:13 -07:00
koichik
fbb0ee6f24 buffer: fix byteLength with UTF-16LE
Fixes #4075.
2012-10-04 18:18:15 +09:00
isaacs
836a06fc4f Revert "http: make http.ServerResponse emit 'end'"
This reverts commit 790d651f0d.

This makes Duplex streams unworkable, and would only ever be a special
case for HTTP responses, which is not ideal.

Intead, we're going to just bless the 'finish' event for all Writable
streams in 0.10
2012-10-03 17:40:14 -07:00
Alex Kocharin
bf0bc3565b doc: better example for process.hrtime()
Fixes #3984.
2012-10-03 22:18:33 +02:00
koichik
016afe21ae streams: fix pipe is destructed by 'end' from destination 2012-10-03 10:57:31 -07:00
Ben Noordhuis
b0d04ffbd8 doc: stream: clarify meaning of 'drain' some more
Courtesy of Lee Coltrane (@coltrane).
2012-10-03 13:38:03 +02:00
Ben Noordhuis
f624be4093 doc: stream: clarify meaning of 'drain' event 2012-10-03 00:49:27 +02:00
Ben Noordhuis
109f8e2773 node_http_parser: fix whitespace errors 2012-10-02 14:50:25 +02:00
isaacs
b90c1502e5 doc: Correct stream.write fd mention
No streams actually work this way.
2012-10-01 14:30:02 -07:00
Paul Serby
41e53e5579 path: add platform specific path delimiter
Closes #3728
Closes #4071
2012-10-01 22:10:36 +02:00
Nathan Rajlich
3b7312d23a repl: make "end of input" JSON.parse() errors throw in the REPL 2012-10-01 11:36:06 -07:00
Nathan Rajlich
f1722a280c repl: make invalid RegExp modifiers throw in the REPL
Fixes #4012.
2012-09-30 22:47:57 -07:00
isaacs
fa912c246c blog: s/LibUV/libuv/ 2012-09-30 15:47:27 -07:00
isaacs
d3e818cf8f blog: LXJS talk by @piscisaureus 2012-09-30 10:34:28 -07:00
isaacs
3053f4d27d test: Fix stdin message tests 2012-09-28 10:42:52 -07:00
isaacs
5a0056703a test: Fix simple/test-http-client-timeout-agent
Merge breakage.
2012-09-28 09:55:29 -07:00
isaacs
ae40f1c438 Merge remote-tracking branch 'ry/v0.8' into v0.8-merge
Conflicts:
	AUTHORS
	ChangeLog
	deps/openssl/openssl.gyp
	deps/uv/src/unix/linux/linux-core.c
	deps/uv/src/unix/process.c
	deps/uv/src/unix/stream.c
	deps/v8/src/arm/builtins-arm.cc
	deps/v8/src/arm/code-stubs-arm.cc
	deps/v8/src/arm/full-codegen-arm.cc
	lib/tls.js
	src/node_version.h
	test/simple/test-http-client-timeout-agent.js
2012-09-28 09:47:48 -07:00
Fedor Indutny
d68c02e3fe debugger: test repeating last command
* debugger: Add NODE_FORCE_READLINE environment variable, handle
 `SIGINT`'s sent to process while in this mode.
2012-09-28 10:58:50 +04:00
Alex Kocharin
8ac1a73635 Fixed a bug with last command repeating in debugger 2012-09-28 10:21:37 +04:00
Pavel Lang
b38277be26 http: add response.headersSent property
Boolean property getter. True if headers was sent, false otherwise.
2012-09-28 02:57:01 +02:00
thewilli
33a5c8a814 http: handle multiple Proxy-Authenticate values
Just as the 'WWW-Authenticate' HTTP header the 'Proxy-Authenticate' header might
be received several times as well. Currently only one value is preserved. This
change allows to receive multiple values concatenated by space and comma.
2012-09-27 13:28:16 -07:00
isaacs
c08320c957 doc: Make the CLA more simple/sane
1. Emails should go to @isaacs, not emily.
2. Ask for the electronic signature first, not the printed faxed thing.
2012-09-27 13:25:55 -07:00
isaacs
dcc01df968 blog: Post about 0.8.11 2012-09-27 10:25:37 -07:00
isaacs
9877b8f414 Now working on 0.8.12 2012-09-27 10:25:12 -07:00
isaacs
a9429052c2 Merge branch 'v0.8.11-release' into v0.8 2012-09-27 10:24:32 -07:00
isaacs
e1f39468fa 2012.09.27, Version 0.8.11 (Stable)
* fs: Fix stat() size reporting for large files (Ben Noordhuis)
2012-09-27 09:39:23 -07:00
thewilli
ac17dc1764 http: handle multiple Proxy-Authenticate values
Just as the 'WWW-Authenticate' HTTP header the 'Proxy-Authenticate' header might
be received several times as well. Currently only one value is preserved. This
change allows to receive multiple values concatenated by space and comma.
2012-09-27 01:11:00 +02:00
Bert Belder
b5db5fc9dc test: pick another CNAME record to test dns queries
Google.com no longer has a CNAME record.
2012-09-26 01:57:24 +02:00
Ben Noordhuis
ec03c47c19 fs: fix stat() reporting for large files
Use Number::New(), not Integer::New(). Large values won't fit in an Integer.

Apply to the size, ino and blocks fields.
2012-09-26 01:20:56 +02:00
isaacs
8ca44f9928 blog: Post about v0.8.10 2012-09-25 15:37:53 -07:00
isaacs
37869f1c9a Now working on 0.8.11 2012-09-25 15:36:10 -07:00
isaacs
02897bd8de Merge branch 'v0.8.10-release' into v0.8 2012-09-25 15:33:01 -07:00
isaacs
0bc273da4f 2012.09.25, Version 0.8.10 (Stable)
* npm: Upgrade to 1.1.62

* repl: make invalid RegExps throw in the REPL (Nathan Rajlich)

* v8: loosen artificial mmap constraint (Bryan Cantrill)

* process: fix setuid() and setgid() error reporting (Ben Noordhuis)

* domain: Properly exit() on domain disposal (isaacs)

* fs: fix watchFile() missing deletion events (Ben Noordhuis)

* fs: fix assert in fs.watch() (Ben Noordhuis)

* fs: don't segfault on deeply recursive stat() (Ben Noordhuis)

* http: Remove timeout handler when data arrives (Frédéric Germain)

* http: make the client "res" object gets the same domain as "req" (Nathan Rajlich)

* windows: don't blow up when an invalid FD is used (Bert Belder)

* unix: map EDQUOT to UV_ENOSPC (Charlie McConnell)

* linux: improve /proc/cpuinfo parser (Ben Noordhuis)

* win/tty: reset background brightness when color is set to default (Bert Belder)

* unix: put child process stdio fds in blocking mode (Ben Noordhuis)

* unix: fix EMFILE busy loop (Ben Noordhuis)

* sunos: don't set TCP_KEEPALIVE (Ben Noordhuis)

* tls: Use slab allocator for memory management (Fedor Indutny)

* openssl: Use optimized assembly code for x86 and x64 (Bert Belder)
2012-09-25 13:48:15 -07:00
Bert Belder
d05d6a35b6 openssl: fix compilation issues on SmartOS x64
the SunOS linker is more strict than usual, so we have to be more
correct.
2012-09-25 13:48:14 -07:00
isaacs
ea2ceb731c test: Fix premature close in test-http-client-timeout-agent 2012-09-25 11:15:52 -07:00
isaacs
411d46087f tls: lint
cc @indutny >_<
2012-09-25 11:09:39 -07:00
isaacs
2a9a5e2318 domain: Remove stray console.log 2012-09-25 11:08:52 -07:00
Bert Belder
e0e9f0c15a openssl: use optimized asm code on x86 and x64 2012-09-25 08:51:05 -07:00
Bert Belder
823e807b5b openssl: add generated asm code 2012-09-25 08:51:04 -07:00
Bert Belder
62c3879cfa openssl: add 'clean' target to asm Makefile 2012-09-25 08:51:04 -07:00
Ben Noordhuis
202ecbc9c7 openssl: generate asm code with a Makefile 2012-09-25 08:51:04 -07:00
Bert Belder
66638a4435 openssl: disable HT sidechannel attack mitigation
It used to be off before. It's extremely unlikely that such an attack
would be a viable attack against node. And it makes AES much slower.
2012-09-25 08:51:03 -07:00
Bert Belder
d2fb507556 openssl: revert empty_OPENSSL_cpuid_setup.patch 2012-09-25 08:51:03 -07:00
Bert Belder
09ac9d0b2c openssl: fix perlasm issue
When perlasm generates MASM code it sets the assembler target to 468.
In this mode MASM refuses to assemble the CPUID instruction. Bumping
the target to 586 solves this problem.
2012-09-25 08:51:03 -07:00
Bert Belder
3568edf711 openssl: add optimized bignum x64 asm code for windows 2012-09-25 08:51:02 -07:00
Fedor Indutny
7651228ab2 tls: use slab allocator 2012-09-25 08:37:08 -07:00
isaacs
83d39c8d53 npm: upgrade to 1.1.62 2012-09-25 08:29:05 -07:00
Shigeki Ohtsu
a1ba29d110 test: fix failing due to too early timeout 2012-09-25 14:42:59 +02:00
Adam Blackburn
d5e9895ce0 doc: put API table of contents in alphabetical order 2012-09-25 14:38:36 +02:00
Bert Belder
5691e8aca7 windows: fix typo in node.gyp 2012-09-25 00:50:37 +02:00
Nathan Rajlich
0f2ed2bc2c http: make the client "res" object gets the same domain as "req"
Fixes #4046.
2012-09-24 11:48:39 -07:00
Nathan Rajlich
4a2670740c repl: make invalid RegExps throw in the REPL
Fixes #2746.
2012-09-21 19:49:29 -07:00
Bert Belder
f536eb176b uv: upgrade to 39ca621 2012-09-22 03:53:48 +02:00
Bryan Cantrill
4165f736e6 v8: loosen artificial mmap constraint
Fixes #4010.
2012-09-21 18:51:44 -07:00
Ben Noordhuis
17ef062db1 handle_wrap: don't abort if wrap == NULL
After a disconnect, the internal pointer of the parent/child channel is set to
NULL. That's not an error so don't abort().
2012-09-22 03:49:17 +02:00
Andreas Madsen
86d4cf71d6 test: possible ipc.ref() regression 2012-09-22 03:49:17 +02:00
Andreas Madsen
5070eccf1b child_process: don't die when disconnect event exists 2012-09-22 03:49:17 +02:00
Ben Noordhuis
212466bea2 child_process: make .fork()'d child auto-exit
A child process created with .fork() needed to call `process.exit()` explicitly
because the communication channel with the parent kept the event loop alive.

Fix that by only ref'ing the channel when there are 'message' event listeners.

Fixes #3799.
2012-09-22 03:48:59 +02:00
Ben Noordhuis
56668f54d1 events: speed up .removeAllListeners() 2012-09-22 03:48:59 +02:00
Ben Noordhuis
b7fd55e9a0 events: speed up newListener/removeListener events 2012-09-22 03:48:59 +02:00
Ben Noordhuis
84221fd1d6 events: add 'removeListener' event 2012-09-22 03:48:59 +02:00
Ben Noordhuis
d0e6c3f5a6 test: add common.mustCall function
Verifies that the callback gets invoked <n> times during the lifetime of the
test script.
2012-09-22 03:48:58 +02:00
Bryan Cantrill
7bd84de5ed v8: loosen artificial mmap constraint
Fixes #4010.
2012-09-22 02:57:33 +02:00
isaacs
0400571676 domain: Properly exit() on domain disposal
This addresses #4034.  There are two problems happening:

1. The domain is not exited automatically when calling dispose() on it.
Then, since the domain is disposed, attempting to exit it again will do
nothing.

2. The active domain is stored on process.domain.  Since thrown errors
call `process.emit('uncaughtException', er)`, and the process is an
event emitter with a `.domain` member, it re-enters the domain a second
time before calling the error handler, pushing it onto the stack again.

Thus, if the handler calls `domain.dispose()`, then the domain is now on
the stack twice, and cannot be exited properly.  Since the domain is
disposed, any subsequent IO will be no-op'ed, since we've declared that
this context is done and best forgotten.

The solution here is twofold:

1. In EventEmitter.emit, do not enter the domain if `this===process`.
2. Automatically exit the domain when calling `domain.dispose()`.
2012-09-21 09:22:50 -07:00
Bryan Cantrill
017009f8c5 v8: fix postmortem metadata generation 2012-09-21 02:22:23 +02:00
isaacs
d77c24de3f V8: reapply floating patches 2012-09-21 01:52:27 +02:00
isaacs
3411a03dd1 V8: Upgrade to 3.13.7.1 2012-09-21 01:52:24 +02:00
Bryan Cantrill
cc1b09d6b7 test: add tests for postmortem and DTrace support 2012-09-21 01:51:57 +02:00
Ben Noordhuis
bbf6b4ecbb configure: turn on VFPv3 on ARMv7
Fixes a V8 build error caused by missing arm_fpu and arm_neon settings.
2012-09-19 14:38:25 +02:00
Ben Noordhuis
c4aedf8a2a doc: zlib: document flush() and reset() methods 2012-09-19 13:22:29 +02:00
Fedor Indutny
63ff449d87 crypto: bring module into modern age
Introduce 'buffer' encoding, allow returning and giving buffers as
arguments of 'crypto' routines.

Fix #3278
2012-09-18 10:58:37 +04:00
Fedor Indutny
3301c90ff7 authors: add @tasogarepg to AUTHORS 2012-09-18 10:57:59 +04:00
tasogarepg
21c4b9a9eb debugger: fix --debug-brk 2012-09-18 10:56:37 +04:00
isaacs
d406a8250f Now working on v0.9.3 2012-09-17 18:34:48 -07:00
isaacs
7fcb7b4d9c Merge branch 'v0.9.2-release' 2012-09-17 18:34:31 -07:00
isaacs
43a2b29182 blog: Post for 0.9.2 2012-09-17 18:33:36 -07:00
isaacs
6e20558890 2012.09.17, Version 0.9.2 (Unstable)
* http_parser: upgrade to ad3b631

* openssl: upgrade 1.0.1c

* darwin: use FSEvents to watch directory changes (Fedor Indutny)

* unix: support missing API on NetBSD (Shigeki Ohtsu)

* unix: fix EMFILE busy loop (Ben Noordhuis)

* windows: un-break writable tty handles (Bert Belder)

* windows: map WSAESHUTDOWN to UV_EPIPE (Bert Belder)

* windows: make spawn with custom environment work again (Bert Belder)

* windows: map ERROR_DIRECTORY to UV_ENOENT (Bert Belder)

* tls, https: validate server certificate by default (Ben Noordhuis)

* tls, https: throw exception on missing key/cert (Ben Noordhuis)

* tls: async session storage (Fedor Indutny)

* installer: don't install header files (Ben Noordhuis)

* buffer: implement Buffer.prototype.toJSON() (Nathan Rajlich)

* buffer: added support for writing NaN and Infinity (koichik)

* http: make http.ServerResponse emit 'end' (Ben Noordhuis)

* build: ./configure --ninja (Ben Noordhuis, Timothy J Fontaine)

* installer: fix --without-npm (Ben Noordhuis)

* cli: make -p equivalent to -pe (Ben Noordhuis)

* url: Go much faster by using Url class (isaacs)
2012-09-17 17:54:59 -07:00
Bert Belder
9423aa995b openssl: fix the Windows x64 build 2012-09-17 17:54:59 -07:00
isaacs
22974a1acd openssl: Set flags to properly build on sunos 2012-09-17 17:54:59 -07:00
Bert Belder
90a625399f openssl: fix the Windows x64 build 2012-09-18 02:13:29 +02:00
isaacs
1510116337 test: fs.watch filename support on Darwin 2012-09-17 15:49:07 -07:00
isaacs
b788c5e77b uv: Upgrade to 778144f0
joyent/libuv@778144f0b5
2012-09-17 15:36:15 -07:00
Alex Xu
fb6c314b6d configure: always use shlex instead of split
Use shlex module instead of builtin string split to parse CC.
2012-09-17 22:59:42 +02:00
isaacs
7144be70db url: Go much faster by using Url class
V8 loves it when JavaScript pretends to be a Classic inheritance
type of language.

Before:

$ ./node benchmark/url.js
benchmarking parse() ... 1.868 sec
benchmarking format() ... 1.906 sec
benchmarking resolve("../foo/bar?baz=boom") ... 7.800 sec
benchmarking resolve("foo/bar") ... 7.099 sec
benchmarking resolve("http://nodejs.org") ... 8.403 sec
benchmarking resolve("./foo/bar?baz") ... 7.974 sec

After:

$ ./node benchmark/url.js
benchmarking parse() ... 1.769 sec
benchmarking format() ... 1.793 sec
benchmarking resolve("../foo/bar?baz=boom") ... 4.254 sec
benchmarking resolve("foo/bar") ... 3.932 sec
benchmarking resolve("http://nodejs.org") ... 4.382 sec
benchmarking resolve("./foo/bar?baz") ... 4.293 sec
2012-09-17 10:44:23 -07:00
Ben Noordhuis
39a0836d5c fs: fix watchFile() missing deletion events
Make sure the deletion event gets reported in the following scenario:

  1. Watch a file.
  2. The initial stat() goes okay.
  3. Something deletes the watched file.
  4. The second stat() fails with ENOENT.

The second stat() translates into the first 'change' event but a logic error
stopped it from getting emitted.

Fixes #4027.
2012-09-17 17:52:50 +02:00
Robin Lee
a08271c7a8 doc: fix three typos 2012-09-17 16:05:53 +02:00
Ben Noordhuis
96ca59fbf3 process: fix setuid() and setgid() error reporting
Zero errno before calling getgrnam_r() or getpwnam_r(). If errno had previously
been clobbered, node would report the wrong error.
2012-09-17 07:20:47 +02:00
Ben Noordhuis
3806cf0d64 test: set rejectUnauthorized in tls/https tests
Update the tls and https tests to explicitly set rejectUnauthorized instead of
relying on the NODE_TLS_REJECT_UNAUTHORIZED environment variable getting set.
2012-09-15 00:19:30 +02:00
Ben Noordhuis
35607f3a2d tls, https: validate server certificate by default
This commit changes the default value of the rejectUnauthorized option from
false to true.

What that means is that tls.connect(), https.get() and https.request() will
reject invalid server certificates from now on, including self-signed
certificates.

There is an escape hatch: if you set the NODE_TLS_REJECT_UNAUTHORIZED
environment variable to the literal string "0", node.js reverts to its
old behavior.

Fixes #3949.
2012-09-15 00:19:06 +02:00
Bert Belder
4c171a504d uv: upgrade to 3d9de13 2012-09-14 04:00:30 +02:00
Bert Belder
d908b83f59 uv: upgrade to a28f145 2012-09-14 02:56:41 +02:00
Ben Noordhuis
db5c26e3b5 fs: fix assert in fs.watch()
Fix the following error:

  FSEventWrap: Aborting due to unwrap failure at ../../src/fs_event_wrap.cc:169

It's possible and legal for a handle to be closed twice. HandleWrap::Close()
deals with that by ignoring the second close. Now FSEventWrap::Close() does
too.

Fixes #3997.
2012-09-14 02:37:51 +02:00
Ben Noordhuis
07804c7c9a fs: don't segfault on deeply recursive stat()
Check that the calls to Integer::New() and Date::New() succeed and bail out if
they don't.

V8 returns an empty handle on stack overflow. Trying to set the empty handle as
a property on an object results in a NULL pointer dereference in release builds
and an assert in debug builds.

Fixes #4015.
2012-09-14 02:37:51 +02:00
Nathan Rajlich
1d52968d1d v8: Replace VFP by VFP2 in common.gypi
This fixes an omission in cl 10818026.
Patch by Nathan Rajlich.

Review URL: http://codereview.chromium.org/10913256
2012-09-13 15:00:46 -07:00
yangguo@chromium.org
25c2940a08 v8: Relax requirement from VFP3 to VFP2 where possible.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10818026

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@12194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-13 15:00:05 -07:00
Pavel Lang
7ab4a77d6f buffer: update constructor prototype
Change Buffer::New(char*, size_t) to Buffer::New(const char*, size_t).
2012-09-13 16:31:04 +02:00
Ben Noordhuis
bec863b7de crypto: use uv_thread_self() 2012-09-13 16:20:36 +02:00
Ben Noordhuis
dd1b947706 deps: upgrade libuv to 1f9bd99 2012-09-13 16:18:54 +02:00
Ben Noordhuis
2c97da82f5 bench: correct time calculation in url.js 2012-09-13 14:02:22 +02:00
Shigeki Ohtsu
1bcf29ef33 openssl: disable EC_NISTP_64_GCC_128 on ia32
uint128_t won't work on 32-bit platform

Closes #4008.
2012-09-12 20:51:40 -07:00
Ben Noordhuis
10ba95c11a bench: improve url parser benchmark 2012-09-13 01:21:54 +02:00
Felix Böhm
f5c68b280f bench: add url parser benchmark 2012-09-13 01:21:53 +02:00
isaacs
bb207c2827 Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	ChangeLog
	src/node_version.h
	test/simple/test-util-inspect.js
2012-09-12 15:13:07 -07:00
Frédéric Germain
451ff1540a http: Remove timeout handler when data arrives 2012-09-12 09:50:06 -07:00
Ben Noordhuis
d3fa0dcb89 openssl: disable harmless compiler warnings
Compile with -Wno-missing-field-initializers and -Wno-old-style-declaration.
The warnings are harmless but they clutter the build output a great deal.
2012-09-12 17:57:22 +02:00
Ben Noordhuis
58a5bc1ec7 doc: fs: clarfify fs.watch() documentation
fs.watch() is implemented on all supported platforms but, depending on the
object being watched, doesn't always work reliably (or at all).

Fixes #4005.
2012-09-12 17:08:32 +02:00
Bert Belder
4b8721aad0 openssl: remove obsolete patch files
These patches were provided by Android and Chromium. In this form they
are not useful. The ones that we need are landed as separate commits.

As of openssl 1.0.1c, three of them made it upstream:
  * npn.patch (Next Protocol Negotiation support)
  * tls_exporter.patch (RFC 5705 Keying Material Exporters for TLS)
  * openssl_no_dtls1.patch (minor bugfix)
2012-09-12 05:24:03 +02:00
Bert Belder
8d082d0f88 openssl: update the GYP build to work with openssl 1.0.1c 2012-09-12 05:24:01 +02:00
Bert Belder
c4b9be7c5a openssl: replace symlinks by #include shims
Git for Windows can't create symlinks. This works too.
2012-09-12 05:23:59 +02:00
Bert Belder
709e935239 openssl: use dummy OPENSSL_cpuid_setup function
Use a empty implementation for function OPENSSL_cpuid_setup to resolve link
error. We should figure out how to geenrate platform specific implementation
of OPENSSL_cpuid_setup by leveraging crypto/*cpuid.pl.

This patch is taken from Chromium.
2012-09-12 05:23:58 +02:00
Bert Belder
9fc84fdad9 openssl: don't read user input from the TTY 2012-09-12 05:23:56 +02:00
Ben Noordhuis
988a164cd8 openssl: fix uninitialized memory access
ASN1_STRING_to_UTF8() passes an ASN1_STRING to ASN1_STRING_set() but
forgot to initialize the `length` field.

Fixes the following valgrind error:

  $ valgrind -q --track-origins=yes --num-callers=19 \
      out/Debug/node test/simple/test-tls-client-abort.js
  ==2690== Conditional jump or move depends on uninitialised value(s)
  ==2690==    at 0x784B69: ASN1_STRING_set (asn1_lib.c:382)
  ==2690==    by 0x809564: ASN1_mbstring_ncopy (a_mbstr.c:204)
  ==2690==    by 0x8090F0: ASN1_mbstring_copy (a_mbstr.c:86)
  ==2690==    by 0x782F1F: ASN1_STRING_to_UTF8 (a_strex.c:570)
  ==2690==    by 0x78F090: asn1_string_canon (x_name.c:409)
  ==2690==    by 0x78EF17: x509_name_canon (x_name.c:354)
  ==2690==    by 0x78EA7D: x509_name_ex_d2i (x_name.c:210)
  ==2690==    by 0x788058: ASN1_item_ex_d2i (tasn_dec.c:239)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x787C93: ASN1_item_d2i (tasn_dec.c:136)
  ==2690==    by 0x78F5E4: d2i_X509 (x_x509.c:141)
  ==2690==    by 0x7C9B91: PEM_ASN1_read_bio (pem_oth.c:81)
  ==2690==    by 0x7CA506: PEM_read_bio_X509 (pem_x509.c:67)
  ==2690==    by 0x703C9A: node::crypto::SecureContext::AddRootCerts(v8::Arguments const&) (node_crypto.cc:497)
  ==2690==  Uninitialised value was created by a stack allocation
  ==2690==    at 0x782E89: ASN1_STRING_to_UTF8 (a_strex.c:560)
2012-09-12 05:23:54 +02:00
Bert Belder
c23ac14cba openssl: backward compatibility after x509 hash function change
There are many symbolic links under /etc/ssl/certs created by using hash of
the pem certificates in order for OpenSSL to find those certificate.
Openssl has a tool to help you create hash symbolic links. (See tools/c_rehash)
However the new openssl changed the hash algorithm, Unless you compile/install
the latest openssl library and re-create all related symbolic links, the new
openssl can not find some certificates because the links of those certificates
were created by using old hash algorithm, which causes some tests failed.

This patch gives a way to find a certificate according to its hash by using both
new algorithm and old algorithm.

crbug.com/111045 is used to track this issue.

This patch is taken from the Chromium project.
2012-09-12 05:23:52 +02:00
Ben Noordhuis
2fad7a8c1b openssl: apply upstream sha1-armv4-large.pl patch
This is a back-port of r22768: sha1-armv4-large.pl: comply with ABI.
2012-09-12 05:23:51 +02:00
Bert Belder
1d9b4ace8a openssl: support handshake cut-through
Enables SSL3+ clients to send application data immediately following the
Finished message even when negotiating full-handshakes.  With this patch,
clients can negotiate SSL connections in 1-RTT even when performing
full-handshakes.

This patch is taken from the Android Open Source Project.
2012-09-12 05:23:49 +02:00
Bert Belder
ff22a0cb15 openssl: reduce memory consumption
SSL records may be as large as 16K, but are typically < 2K.  In
addition, a historic bug in Windows allowed records to be as large
32K.  OpenSSL statically allocates read and write buffers (34K and
18K respectively) used for processing records.

With this patch, OpenSSL statically allocates 4K + 4K buffers, with
the option of dynamically growing buffers to 34K + 4K, which is a
saving of 44K per connection for the typical case.

This patch is taken from the Android Open Source Project.
2012-09-12 05:23:47 +02:00
Ben Noordhuis
4870a4e3da doc: http: expand request.headers documentation 2012-09-12 02:46:53 +02:00
Bert Belder
b61ae54e18 openssl: upgrade to vanilla openssl 1.0.1c 2012-09-12 00:40:55 +02:00
isaacs
362189a5d3 Now working on 0.8.10 2012-09-11 11:59:37 -07:00
isaacs
d80de98e91 blog: Post for 0.8.9 2012-09-11 11:59:10 -07:00
isaacs
72d3124841 Merge branch 'v0.8.9-release' into v0.8 2012-09-11 11:58:35 -07:00
isaacs
b88c3902b2 2012.09.11, Version 0.8.9 (Stable)
* v8: upgrade to 3.11.10.22

* GYP: upgrade to r1477

* npm: Upgrade to 1.1.61

* npm: Don't create world-writable files (isaacs)

* windows: fix single-accept mode for shared server sockets (Bert Belder)

* windows: fix uninitialized memory access in uv_update_time() (Bert Belder)

* windows: don't throw when a signal handler is attached (Bert Belder)

* unix: fix memory leak in udp (Ben Noordhuis)

* unix: map errno ESPIPE (Ben Noordhuis)

* unix, windows: fix memory corruption in fs-poll.c (Ben Noordhuis)

* sunos: fix os.cpus() on x86_64 (Ben Noordhuis)

* child process: fix processes with IPC channel don't emit 'close' (Bert Belder)

* build: add a "--dest-os" option to force a gyp "flavor" (Nathan Rajlich)

* build: set `process.platform` to "sunos" on SunOS (Nathan Rajlich)

* build: fix `make -j` fails after `make clean` (Bearice Ren)

* build: fix openssl configuration for "arm" builds (Nathan Rajlich)

* tls: support unix domain socket/named pipe in tls.connect (Shigeki Ohtsu)

* https: make https.get() accept a URL (koichik)

* http: respect HTTP/1.0 TE header (Ben Noordhuis)

* crypto, tls: Domainify setSNICallback, pbkdf2, randomBytes (Ben Noordhuis)

* stream.pipe: Don't call destroy() unless it's a function (isaacs)
2012-09-11 11:08:07 -07:00
isaacs
1c2982b94f Update doc and test for sunos/solaris switch 2012-09-11 10:57:25 -07:00
Ben Noordhuis
c8c638a841 buffer: change prototype of Data() and Length()
Make Buffer:Data() and Buffer::Length() accept a Value instead of an Object.
2012-09-11 18:33:30 +02:00
isaacs
6e0b8b169c doc: Fork me image should be full url 2012-09-11 08:45:25 -07:00
isaacs
e35cec5c05 doc: Put current version on homepage 2012-09-11 08:43:31 -07:00
isaacs
005ae23250 doc: Add Node Dublin to community page 2012-09-11 08:43:28 -07:00
Ben Noordhuis
eaf1343100 crypto: remove legacy openssl compatibility code
Remove code that works around a padding bug in older versions of openssl, the
bundled version of openssl contains the bug fix.
2012-09-11 15:42:04 +02:00
Ben Noordhuis
98d53ac51e test: add AES-256 padding crypto test 2012-09-11 15:40:39 +02:00
isaacs
41e1b171ec stream.pipe: Don't call destroy() unless it's a function 2012-09-10 16:00:27 -07:00
isaacs
54a4c639e9 npm: Upgrade to 1.1.61 2012-09-10 09:11:54 -07:00
Ben Noordhuis
5d9968f53d installer: don't install header files
They are no longer necessary now that node-waf has been removed. People need to
switch to node-gyp.
2012-09-10 01:31:13 +02:00
Nathan Rajlich
608898c15b configure: add a "--dest-os" option to force a gyp "flavor"
This makes cross-compiling easier. i.e. from my mac:

    ./configure --dest-cpu=arm --dest-os=linux
2012-09-09 11:41:05 -07:00
Nathan Rajlich
dba47aefa5 docs: fix typo in Buffer#toJSON() docs 2012-09-09 11:15:45 -07:00
Nathan Rajlich
a4ef01df07 buffer: implement Buffer.prototype.toJSON()
Returns an Array-representation of the Buffer.
Closes #3905.
2012-09-09 11:04:16 -07:00
Nathan Rajlich
fb383a0ad0 util: make util.inspect() work when "hasOwnProperty" is overwritten 2012-09-08 15:09:59 -07:00
Ben Noordhuis
9a3521cb25 http: respect HTTP/1.0 TE header
A HTTP/1.0 client does not support 'Transfer-Encoding: chunked' unless it
explicitly requests it by sending a 'TE: chunked' header.

Before this commit, node.js always disabled chunked encoding for HTTP/1.0
clients. Now it will scan for the TE header and turn on chunked encoding if
requested and applicable.

Fixes #940.
2012-09-08 21:43:57 +02:00
Pooya Karimian
0087bc6370 cluster.worker description and examples ere missing from the top level of docs 2012-09-06 22:00:05 +02:00
Fedor Indutny
052e63f27f v8: fix semaphore on MacOS
Landed upstream: https://chromiumcodereview.appspot.com/10867009/
2012-09-06 16:07:40 +02:00
Bert Belder
c5e554dc7e v8: reapply floating patches 2012-09-06 15:58:37 +02:00
Bert Belder
4899116d4b v8: upgrade to 3.11.10.22 2012-09-06 15:58:09 +02:00
Fedor Indutny
8e0c830cd0 tls: async session storage 2012-09-05 02:01:54 +04:00
Ben Noordhuis
790d651f0d http: make http.ServerResponse emit 'end'
This used to be the internal 'finish' event. Make it public so API users will
know when the response has been sent completely.

Fixes #3855.
2012-09-04 22:07:48 +02:00
Bert Belder
6174ea6b4c doc: don't use &apos;
Ref: #3964
2012-09-04 21:15:39 +02:00
Ben Noordhuis
7b6d3cea2c build: add ninja support to Makefile 2012-09-04 16:04:01 +02:00
Timothy J Fontaine
d3135e0f57 build: add configure option to build with ninja 2012-09-04 16:04:01 +02:00
Ben Noordhuis
2efa3ae64f installer: reapply b21c8e0b, honor --without-npm
This bug was already fixed in the v0.8 branch but git skips the patch when
merging v0.8 into master. Reapply it manually.

Fixes #3961.
2012-09-04 15:08:32 +02:00
Ben Noordhuis
972cdf82f1 Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	deps/uv/include/uv.h
	src/node_crypto.cc
2012-09-04 15:02:20 +02:00
Ben Noordhuis
19a432260c test: add extra checks in simple/test-cli-eval 2012-09-04 14:41:08 +02:00
Ben Noordhuis
83b1dda12f cli: make argument to -p optional 2012-09-04 14:39:31 +02:00
Atsuya Takagi
9f57e422cf doc: fix typo in api/cluster 2012-09-04 00:41:40 +02:00
Ben Noordhuis
7dfa587d18 crypto, tls: make setSNICallback() compatible with domains 2012-09-03 23:33:02 +02:00
Ben Noordhuis
7d0543c128 crypto: make pbkdf2() compatible with domains 2012-09-03 23:33:02 +02:00
Ben Noordhuis
d1eff9ab68 crypto: make randomBytes() compatible with domains
Don't execute the callback in the context of the global object.

MakeCallback() tries to apply the active domain to the callback. If the user
polluted the global object with a 'domain' property, as in the code example
below, MakeCallback() will try to apply that.

Example:

    domain = {};                // missing var keyword is intentional
    crypto.randomBytes(8, cb);  // TypeError: undefined is not a function

Fixes #3956.
2012-09-03 23:33:02 +02:00
Bert Belder
ea1cba6246 windows: don't blow when a signal handler is attached
Blowing up when the user attaches a signal handler makes no sense. Also,
in Node 0.10 signals will be supported, so allow people to get used to
it.
2012-09-03 19:05:40 +02:00
Ben Noordhuis
f03c3203a1 cli: make -p equivalent to -pe
Fixes #3938.
2012-09-03 16:42:20 +02:00
koichik
7f404e3509 buffer: added support for writing NaN and Infinity
to writeDoubleBE(), writeDoubleLE(), writeFloatBE() and writeFloatLE().
Fixes #3934.
2012-09-02 21:01:43 +09:00
koichik
37f0eb8df3 Revert "buffer: added support for writing NaN and Infinity"
This reverts commit 6b9425fe37.
2012-09-02 20:59:50 +09:00
Ben Noordhuis
870307de75 crypto: fix build error on OS X
pthread_t is a pointer type on OS X but an unsigned long on most other
platforms. Use a C style cast because reinterpret_cast nor static_cast
work in all cases.
2012-09-02 13:49:15 +02:00
Ben Noordhuis
6c5fdd5223 doc: document prerequisites in README 2012-09-02 13:32:57 +02:00
koichik
6b9425fe37 buffer: added support for writing NaN and Infinity
to writeDoubleBE(), writeDoubleLE(), writeFloatBE() and writeFloatLE().
Fixes #3934.
2012-09-02 00:27:17 +09:00
Ben Noordhuis
298f6bff5b crypto: use CRYPTO_THREADID_set_callback()
Don't use CRYPTO_set_id_callback(), it's deprecated.
2012-08-31 00:40:18 +02:00
Shigeki Ohtsu
f347077e78 tls: support unix domain socket/named pipe in tls.connect 2012-08-31 00:23:36 +02:00
Bert Belder
ed103409c4 uv: upgrade to 5eb1d19 2012-08-30 17:29:47 +02:00
Bert Belder
9603f08f21 uv: upgrade to 24c062c 2012-08-30 17:28:02 +02:00
Bert Belder
b0d2795fe9 child process: fix processes with IPC channel don't emit 'close'
With this patch the IPC socket is no longer available in the
ChildProcess.stdio array. This shouldn't be very problematic, since
this socket was effectively non-functional; it would never emit any
events.
2012-08-30 16:13:27 +02:00
Nathan Rajlich
355c148427 build: set process.platform to "sunos" on SunOS
gyp sets it to "solaris" by default, but versions of node v0.6.x and
older would report "sunos". Let's keep things consistent.

Fixes #3944.
2012-08-29 16:12:59 -07:00
Nathan Rajlich
606a933989 build: set process.platform to "sunos" on SunOS
gyp sets it to "solaris" by default, but versions of node v0.6.x and
older would report "sunos". Let's keep things consistent.

Fixes #3944.
2012-08-29 15:36:15 -07:00
Ankur Oberoi
a57d31595d doc: fix grammar errors 2012-08-30 00:27:00 +02:00
Ben Noordhuis
4784ea1a29 deps: upgrade http_parser to ad3b631 2012-08-30 00:06:47 +02:00
Ben Noordhuis
8bec26122d tls, https: throw exception on missing key/cert
Throw an exception in the tls.Server constructor when the options object
doesn't contain either a PFX or a key/certificate combo.

Said change exposed a bug in simple/test-tls-junk-closes-server. Addressed.

Fixes #3941.
2012-08-29 22:53:07 +02:00
isaacs
dec16aa5c2 Test client renegotiation attacks on HTTPS
This test should output roughly the same results as the tls ci-reneg attack
pummel test.  However, it does not.
2012-08-29 12:26:28 -07:00
Ben Noordhuis
e4cef1a083 doc: update assert.doesNotThrow() docs
It takes an optional "expected exception" argument that is not used meaningfully
but is nevertheless documented. Undocument it, it confuses casual readers of the
documentation.

Fixes #3935.
2012-08-29 02:36:22 +02:00
isaacs
0ef1e5b5eb blog: Post for 0.9.1 release 2012-08-28 15:34:08 -07:00
isaacs
459717efb6 Now working on 0.9.2 2012-08-28 15:32:01 -07:00
isaacs
1550ddaa6b Merge branch 'v0.9.1-release' 2012-08-28 15:31:40 -07:00
isaacs
e6ce259d2c 2012.08.28, Version 0.9.1 (Unstable)
* buffer: Add Buffer.isEncoding(enc) to test for valid encoding values (isaacs)

* Raise UV_ECANCELED on premature close. (Ben Noordhuis)

* Remove c-ares from libuv, move to a top-level node dependency (Bert Belder)

* ref/unref for all HandleWraps, timers, servers, and sockets (Timothy J Fontaine)

* addon: remove node-waf, superseded by node-gyp (Ben Noordhuis)

* child_process: emit error on exec failure (Ben Noordhuis)

* cluster: do not use internal server API (Andreas Madsen)

* constants: add O_DIRECT (Ian Babrou)

* crypto: add sync interface to crypto.pbkdf2() (Ben Noordhuis)

* darwin: emulate fdatasync() (Fedor Indutny)

* dgram: make .bind() always asynchronous (Ben Noordhuis)

* events: Make emitter.listeners() side-effect free (isaacs, Joe Andaverde)

* fs: Throw early on invalid encoding args (isaacs)

* fs: fix naming of truncate/ftruncate functions (isaacs)

* http: bubble up parser errors to ClientRequest (Brian White)

* linux: improve cpuinfo parser on ARM and MIPS (Ben Noordhuis)

* net: add support for IPv6 addresses ending in :: (Josh Erickson)

* net: support Server.listen(Pipe) (Andreas Madsen)

* node: don't scan add-on for "init" symbol (Ben Noordhuis)

* remove process.uvCounters() (Ben Noordhuis)

* repl: console writes to repl rather than process stdio (Nathan Rajlich)

* timers: implement setImmediate (Timothy J Fontaine)

* tls: fix segfault in pummel/test-tls-ci-reneg-attack (Ben Noordhuis)

* tools: Move gyp addon tools to node-gyp (Nathan Rajlich)

* unix: preliminary signal handler support (Ben Noordhuis)

* unix: remove dependency on ev_child (Ben Noordhuis)

* unix: work around darwin bug, don't poll() on pipe (Fedor Indutny)

* util: Formally deprecate util.pump() (Ben Noordhuis)

* windows: make active and closing handle state independent (Bert Belder)

* windows: report spawn errors to the exit callback (Bert Belder)

* windows: signal handling support with uv_signal_t (Bert Belder)
2012-08-28 15:27:49 -07:00
Bert Belder
143e9bef47 test: make test-fs-truncate pass on windows 2012-08-29 00:16:53 +02:00
Bert Belder
4cfd64e0db uv: upgrade to abc945b 2012-08-28 22:49:34 +02:00
Bearice Ren
ef3617c6f8 build: fix make -j' fails after make clean'
make fails if:
    ./configure && make clean && make -j6

as out/Makefile has not yet be made when entering sub dirs
2012-08-28 22:10:56 +02:00
Bert Belder
69d8e77f17 uv: upgrade to 162e57b 2012-08-28 21:50:33 +02:00
Bert Belder
c06e1002c8 windows: make test-child-process-exec-error pass 2012-08-28 21:46:58 +02:00
Ian Babrou
3b17f3b80a constants: add O_DIRECT
This will allow to speed up file i/o in some cases by usage of right offsets
and buffer sizes.
2012-08-28 15:04:55 +02:00
Bert Belder
bf16d9280e Merge branch 'v0.8'
Conflicts:
	ChangeLog
	deps/openssl/openssl.gyp
	src/node_version.h
2012-08-28 02:54:22 +02:00
Bert Belder
4822d780bb uv: upgrade to 621a4e3 2012-08-28 02:44:36 +02:00
Bert Belder
2418434568 windows: fix single-accept mode for shared server sockets 2012-08-28 02:17:08 +02:00
Ben Noordhuis
2786737417 build: compile with -fno-tree-sink if gcc <= 4.4
Fixes a 'pure virtual method called' run-time error with some versions of gcc
on some platforms, notably ARM.
2012-08-27 22:09:23 +02:00
Ben Noordhuis
84590f3fe9 build: fix -fno-tree-vrp heuristic
-fno-tree-vrp is a gcc only switch. Don't enable it when compiling with clang,
it will only complain about -fno-tree-vrp being ignored.
2012-08-27 22:09:01 +02:00
isaacs
985e3a25cb lint 2012-08-27 13:03:30 -07:00
isaacs
e5d95ba939 fs: Throw early on invalid encoding args
Re #3918
2012-08-27 13:03:30 -07:00
isaacs
05282588e0 Buffer.isEncoding(enc)
Re: #3918
2012-08-27 13:01:29 -07:00
Nathan Rajlich
2d0c1da975 docs: fix syntax error in "https" example 2012-08-24 16:11:55 -07:00
Nathan Rajlich
0285dae26a repl: create a new Console instance for the repl when "useGlobal" is off
Now `console.log('blah')` will work in a REPL running over a socket.

Closes #3876.
2012-08-24 14:31:32 -07:00
Nathan Rajlich
025f53c306 console: refactor the console module to be reusable
So that multiple instances can be created pointing
to different writable streams.

This is needed for #3876.
2012-08-24 14:31:32 -07:00
Ben Noordhuis
c4fa77a5ec tools: fix missing initializer warning in js2c.py
Fix a -Wmissing-field-initializers style compiler warning in the code that's
generated by js2c.py.
2012-08-24 22:56:28 +02:00
Brian White
c78678b081 http: bubble up parser errors to ClientRequest
Make parser errors bubble up to the ClientRequest instead of the underlying
net.Socket object.

Fixes #3776.
2012-08-24 17:26:31 +02:00
koichik
752ac320ae https: make https.get() accept a URL
https.get() now accepts either a URL (as a string) or an options object.

Refs #2859.
Fixes #3882.
2012-08-24 16:56:06 +02:00
Brandon Wilson
59011448c0 doc: more uniform and sleek buttons
Closes GH-3909
2012-08-24 15:47:53 +02:00
Nathan Rajlich
7142b260c6 build: tweak the openssl android configuration to build
Removed NO_CAST, NO_MD2 and NO_STORE because otherwise there were build errors.

Added NO_CAMELLIA, NO_MDC2, and NO_CMS because otherwise there were linker errors.
2012-08-23 16:46:03 -07:00
Nathan Rajlich
f8fd9aca8b build: use the openssl android configuration for "arm" builds 2012-08-23 16:45:55 -07:00
Bert Belder
985fdf2cb3 doc: tidy the community page html file 2012-08-23 17:54:25 +02:00
Bert Belder
6c371c6a8c doc: remove Felix's IRC logs from the community page
It's been down for months.
2012-08-23 17:54:24 +02:00
Bert Belder
31ddd9516e doc: move ul styling to pipe.css 2012-08-23 17:54:23 +02:00
Bert Belder
1eab51412f doc: pixel nudge 2012-08-23 17:54:22 +02:00
Bert Belder
45cd4e211e doc: use somewhat consistent styling for css assets 2012-08-23 17:54:12 +02:00
Stéphan Kochen
81b711ba0b doc: remove nodejs-dev from the community page 2012-08-23 16:04:53 +02:00
Ben Noordhuis
422772f23b net: fix asserts
Fixes a 'Converting circular structure to JSON' TypeError.
2012-08-23 16:03:48 +02:00
isaacs
1597ce0eb3 website: Fix download link on win, un-break industry section 2012-08-22 15:11:34 -07:00
Bert Belder
99ad52ecbe doc: remote the "recommended modules" section 2012-08-22 23:58:34 +02:00
isaacs
0407ecfcfb blog: v0.8.8 release 2012-08-22 12:53:22 -07:00
isaacs
0ccdedab79 Now working on 0.8.9 2012-08-22 12:52:05 -07:00
isaacs
0ee1760ee1 Merge branch 'v0.8.8-release' into v0.8 2012-08-22 12:51:53 -07:00
Ryan Dahl
f90c9ce0e2 Upgrade GYP to r1477 2012-08-22 15:18:45 -04:00
isaacs
a299c97bbc 2012.08.22, Version 0.8.8 (Stable)
* V8: upgrade to 3.11.10.19

* npm: upgrade to 1.1.59

* windows: fix uninitialized memory access in uv_update_time() (Bert Belder)

* unix, windows: fix memory corruption in fs-poll.c (Ben Noordhuis)

* unix: fix integer overflow in uv_hrtime (Tim Holy)

* sunos: fix uv_cpu_info() on x86_64 (Ben Noordhuis)

* tls: update default cipher list (Ben Noordhuis)

* unix: Fix llvm and older gcc duplicate symbol warnings (Bert Belder)

* fs: fix use after free in stat watcher (Ben Noordhuis)

* build: Fix using manually compiled gcc on OS X (Nathan Rajlich)

* windows: make junctions work again (Bert Belder)
2012-08-22 11:03:20 -07:00
isaacs
c259499945 npm: Upgrade to 1.1.59 2012-08-22 11:03:15 -07:00
isaacs
ee200942dd lint 2012-08-22 11:03:14 -07:00
Ben Noordhuis
1867511400 build: compile with -Wextra -Wno-unused-parameter 2012-08-22 10:05:18 +02:00
Ron Korving
2e1f2b535e doc: fix typo in cluster example code 2012-08-22 09:33:52 +02:00
isaacs
2f1985ca7d npm: Upgrade to 1.1.57 2012-08-21 17:38:21 -07:00
isaacs
024f4b12a5 npm: Upgrade to 1.1.56 2012-08-21 16:27:30 -07:00
Bert Belder
ed093f1314 uv: upgrade to 564e7c7 2012-08-22 00:54:15 +02:00
isaacs
2bcb9ab7bc npm: Upgrade to 1.1.55 2012-08-21 15:29:37 -07:00
Ben Noordhuis
badbd1af27 tls: update default cipher list
Update the default cipher list from RC4-SHA:AES128-SHA:AES256-SHA
to ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
in order to mitigate BEAST attacks.

The documentation suggested AES256-SHA but unfortunately that's a CBC cipher
and therefore susceptible to attacks.

Fixes #3900.
2012-08-21 22:27:13 +02:00
Ben Noordhuis
63d13e86a5 child_process: emit error on exec failure
libuv calls the exit cb with exit code == -1 when it fails to spawn the new
process. Anticipate that and emit the error on the ChildProcess object.
2012-08-21 14:29:20 +02:00
Ben Noordhuis
7c75ca7182 doc: cluster: setupMaster() can be called only once 2012-08-21 13:44:29 +02:00
Ben Noordhuis
2cdf427dce signal_wrap: fix unused variable compiler warning 2012-08-21 12:50:34 +02:00
Bert Belder
ef0ca2affd v8: reapply floating patches 2012-08-21 03:05:25 +02:00
Bert Belder
2d9239359d v8: upgrade to v3.11.10.19 2012-08-21 03:04:16 +02:00
Bert Belder
2c5828b65b Remove node_io_watcher 2012-08-21 00:37:59 +02:00
Bert Belder
34fc97880f Delete the old node_signal_watcher code 2012-08-21 00:32:45 +02:00
Bert Belder
600a6468dc process: use uv_signal instead of ev_signal 2012-08-21 00:18:10 +02:00
Bert Belder
d38d7bea6c unix: don't explicitly instantiate v8::Persistent<x> templates
These explicit instantiations were added to make MSVC happy. It turns
out that some older versions of gcc and llvm now complain about duplicate
symbols, so we instantiate these templates only when MSVC is used.
2012-08-20 18:42:05 +02:00
Bert Belder
6bec5440eb uv: upgrade to 8073a26 2012-08-20 18:41:31 +02:00
Bert Belder
772b3bf4c8 unix: don't explicitly instantiate v8::Persistent<x> templates
These explicit instantiations were added to make MSVC happy. It turns
out that some older versions of gcc and llvm now complain about duplicate
symbols, so we instantiate these templates only when MSVC is used.
2012-08-20 19:13:05 +03:00
Ben Noordhuis
b1ffbdc975 fs: fix use after free in stat watcher
The uv_fs_poll_t handle was stopped but not closed, leaving libuv's internal
handle queue in a corrupted state.
2012-08-20 17:29:58 +02:00
Ben Noordhuis
0844e2359b deps: upgrade libuv to 012cbda 2012-08-20 17:29:58 +02:00
Nathan Rajlich
be3a77bd42 build: don't use "-Wnewline-eof" on OS X
This is the only thing preventing a manually compiled version of GCC
(rather than Apple's provided llvm-gcc or heavily modified gcc 4.2)
from working properly, so we might as well enable support for that.

With this patch I was able to compile node using a manually compiled
gcc 4.7.1.

Closes #3887.
2012-08-20 08:18:14 -07:00
Ben Noordhuis
6c999fd285 timers: fix assertion in Timeout.unref()
Ensure that the delay >= 0 when detaching the timer from the queue. Fixes the
following assertion:

  uv_timer_start: Assertion `timeout >= 0' failed.

No test included, it's timing sensitive.
2012-08-17 14:11:35 +02:00
Ben Noordhuis
05b3f88064 test: use common.PORT in simple/test-regress-GH-1697 2012-08-17 14:03:36 +02:00
Ben Noordhuis
28d30346f4 test: use common.PORT in pummel/test-net-timeout2 2012-08-17 14:03:26 +02:00
Ben Noordhuis
916832cd2c test: fix function name typo
It doesn't affect the semantics of the test because it checks if that
particular bit of code throws an exception. It does, only it's a SyntaxError.
2012-08-17 13:45:45 +02:00
Ben Noordhuis
a177f55b0c Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	ChangeLog
	src/node_version.h
	test/message/stdin_messages.out
	tools/install.py
2012-08-17 13:05:20 +02:00
Bert Belder
9918e5d4f6 windows: make junctions work again
Closes GH-3879
2012-08-17 02:30:57 +02:00
Bert Belder
9263213d8e Avoid compiler warning about negating unsigned value 2012-08-17 01:08:06 +02:00
Bert Belder
e8fd808dfb windows: avoid MSVC warnings about templates not having a dll interface 2012-08-17 01:02:03 +02:00
isaacs
060141c58a website: Improved install button behavior
Just install whatever's best for the OS.

Detect host os and architecture from the navigator properties.  If we
can't make a good guess, then they get the tarball, and of course
everything we have is on the full download page.
2012-08-16 15:41:23 -07:00
isaacs
b7223abbdc v8: Reapply floating patches 2012-08-16 14:43:42 -07:00
isaacs
73976b6c9d v8: Upgrade to 3.11.10.18 2012-08-16 14:42:56 -07:00
isaacs
226d37bb68 blog: Fix binary links for 0.8.7 post 2012-08-15 18:56:48 -07:00
Nathan Rajlich
f9df96b950 email-footer: update the binary package links to x86/x64 2012-08-15 18:05:33 -07:00
isaacs
c0558ff774 website: fix font-size on 'explore' list items 2012-08-15 17:33:03 -07:00
isaacs
073c7b4d08 Now working on 0.8.8 2012-08-15 17:25:25 -07:00
isaacs
25de1c1feb Merge branch 'v0.8.7-release' into v0.8 2012-08-15 17:25:01 -07:00
isaacs
b6cf0454a9 blog: release 0.8.7 2012-08-15 17:23:59 -07:00
isaacs
f640c5d35c 2012.08.15, Version 0.8.7 (Stable)
* npm: Upgrade to 1.1.49

* website: download page (Golo Roden)

* crypto: fix uninitialized memory access in openssl (Ben Noordhuis)

* buffer, crypto: fix buffer decoding (Ben Noordhuis)

* build: compile with -fno-tree-vrp when gcc >= 4.0 (Ben Noordhuis)

* tls: handle multiple CN fields when verifying cert (Ben Noordhuis)

* doc: remove unused util from child_process (Kyle Robinson Young)

* build: rework -fvisibility=hidden detection (Ben Noordhuis)

* windows: don't duplicate invalid stdio handles (Bert Belder)

* windows: fix typos in process-stdio.c (Bert Belder)
2012-08-15 15:52:57 -07:00
isaacs
24ff8f4c79 website: Sharpen and clean up download page more
Retinaify the images!
2012-08-15 15:52:57 -07:00
isaacs
86778607c9 build: Don't set gcc_version for Windows 2012-08-15 11:29:34 -07:00
isaacs
afa57799e4 website: Use table for download page
Paragraphs of text are too wordy.

Use big pretty images and clickable blocky links.
2012-08-15 09:10:03 -07:00
Golo Roden
15c6c0eecc website: download page
- Improved styling of download links.
- index.html#download now redirects to /download/
- Added missing hyphens, and added the missing "and 64-bit" for the Mac
  Installer.
2012-08-15 09:09:23 -07:00
isaacs
3ccee08759 npm: Upgrade to 1.1.49
- node-gyp@0.6.5
- abstracted-out configs
- publishing over proxies
- bugfixes to all the deps
2012-08-14 20:27:28 -07:00
Ben Noordhuis
2c13cbbc0b crypto: fix uninitialized memory access in openssl
ASN1_STRING_to_UTF8() passes an ASN1_STRING to ASN1_STRING_set() but forgot to
initialize the `length` field.

Fixes the following valgrind error:

  $ valgrind -q --track-origins=yes --num-callers=19 \
      out/Debug/node test/simple/test-tls-client-abort.js
  ==2690== Conditional jump or move depends on uninitialised value(s)
  ==2690==    at 0x784B69: ASN1_STRING_set (asn1_lib.c:382)
  ==2690==    by 0x809564: ASN1_mbstring_ncopy (a_mbstr.c:204)
  ==2690==    by 0x8090F0: ASN1_mbstring_copy (a_mbstr.c:86)
  ==2690==    by 0x782F1F: ASN1_STRING_to_UTF8 (a_strex.c:570)
  ==2690==    by 0x78F090: asn1_string_canon (x_name.c:409)
  ==2690==    by 0x78EF17: x509_name_canon (x_name.c:354)
  ==2690==    by 0x78EA7D: x509_name_ex_d2i (x_name.c:210)
  ==2690==    by 0x788058: ASN1_item_ex_d2i (tasn_dec.c:239)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x7890D4: asn1_template_noexp_d2i (tasn_dec.c:746)
  ==2690==    by 0x788CB6: asn1_template_ex_d2i (tasn_dec.c:607)
  ==2690==    by 0x78877A: ASN1_item_ex_d2i (tasn_dec.c:448)
  ==2690==    by 0x787C93: ASN1_item_d2i (tasn_dec.c:136)
  ==2690==    by 0x78F5E4: d2i_X509 (x_x509.c:141)
  ==2690==    by 0x7C9B91: PEM_ASN1_read_bio (pem_oth.c:81)
  ==2690==    by 0x7CA506: PEM_read_bio_X509 (pem_x509.c:67)
  ==2690==    by 0x703C9A: node::crypto::SecureContext::AddRootCerts(v8::Arguments const&) (node_crypto.cc:497)
  ==2690==  Uninitialised value was created by a stack allocation
  ==2690==    at 0x782E89: ASN1_STRING_to_UTF8 (a_strex.c:560)
2012-08-15 02:15:47 +02:00
Ben Noordhuis
90ea68107a test: fix up make valgrind-test
* valgrind complained too much about memory leaks from the V8 heap to be
  useful, run it with --leak-check=no. Not ideal, needs to be revisited,
  preferably with a suppression file.

* tools/run-valgrind.py didn't deal with tests that logged to stderr, rewrite
  the heuristic and make valgrind write to a socket instead of stderr.

Fixes #3869.
2012-08-15 01:37:16 +02:00
Ben Noordhuis
bcb5bdebe7 test: raise pummel/test-net-throttle write req size
pummel/test-net-throttle assumes that a couple of big write requests result in
some of them getting queued because the kernel's send buffer fills up.

Said assumption breaks on systems with large send buffers. Raise the size of
the write request to ameliorate the issue.

This is a back-port of commit 6770555 from the master branch.
2012-08-14 23:11:28 +02:00
Ben Noordhuis
de32b38992 addon: remove node-waf, superseded by node-gyp 2012-08-14 23:06:32 +02:00
Ben Noordhuis
786e1e8712 buffer, crypto: fix buffer decoding
Before this commit, DecodeWrite() mistakenly tried to convert buffers to
UTF-8 strings which:

  a) produced invalid character sequences when the buffer contained
     octets > 127, and
  b) lead to spurious test failures because DecodeWrite() wrote less bytes
     than DecodeBytes() said it would, with the remainder either containing
     zeros or garbage

Fix that by simply copying the buffer's data to the target buffer when the
encoding is BINARY or by converting the buffer to a binary string when it's
UTF8 or ASCII.

Fixes #3651, #3866.
2012-08-14 23:00:09 +02:00
isaacs
22804a9eb8 module: use 'repl' as the filename arg if missing
Fix #3859
2012-08-13 22:07:03 +02:00
isaacs
50c7d80fb0 events: emitter.listeners() should not have side effects
Fixes #3803
2012-08-13 19:04:40 +02:00
jbergstroem
8eccc417a7 bench: fetch port from env
http_simple.js honors $PORT, http_simple_bench.sh should too.
2012-08-13 18:52:06 +02:00
Ben Noordhuis
c492d43f48 tls: fix segfault in pummel/test-tls-ci-reneg-attack
Commit 4e5fe2d changed the way how process.nextTick() works:

    process.nextTick(function foo() {
      process.nextTick(function bar() {
        // ...
      });
    });

Before said commit, foo() and bar() used to run on separate event loop ticks
but that is no longer the case.

However, that's exactly the behavior that the TLS renegotiation attack guard
relies on. It gets called by OpenSSL and needs to defer the 'error' event to a
later tick because the default action is to destroy the TLS context - the same
context that OpenSSL currently operates on.

When things change underneath your feet, bad things happen and OpenSSL is no
exception. Ergo, use setImmediate() instead of process.nextTick() to ensure
that the 'error' event is actually emitted at a later tick.

Fixes #3840.
2012-08-13 18:10:26 +02:00
Ben Noordhuis
100e163dda build: compile with -fno-tree-vrp when gcc >= 4.0 2012-08-13 15:33:27 +02:00
Ben Noordhuis
9f26130a0e deps: upgrade libuv to 2c3e8b6 2012-08-13 15:33:27 +02:00
Nathan Rajlich
00fa8864b4 tools: remove "addon.gypi" and "gyp_addon"
They've been merged into `node-gyp` and aren't serving any purpose
in the node repo. Fixes #3760.
2012-08-12 14:49:44 -07:00
Ben Noordhuis
6b18e88b68 tls: handle multiple CN fields when verifying cert
Fixes #3861.
2012-08-12 21:48:26 +02:00
Timothy J Fontaine
320ae691d8 timers: make unref'd timeouts execute in a domain 2012-08-12 01:15:08 +02:00
Kyle Robinson Young
4ef808ec0a doc: remove unused util from child_process 2012-08-12 00:08:43 +02:00
Timothy J Fontaine
382f22f229 timers: implement setImmediate 2012-08-12 00:07:22 +02:00
Felix Böhm
d15bfc04cd path: small speed improvements 2012-08-10 12:55:49 +02:00
Nathan Rajlich
64ac54a64d Makefile: add a better check to ensure a node "release"
Closes #3841.
Closes #3842.
2012-08-09 17:11:41 -07:00
Ben Noordhuis
9693d3334c node: remove process.uvCounters() 2012-08-10 01:25:00 +02:00
Ben Noordhuis
6b588007df test: fix pummel/test-net-connect-econnrefused
The test relied on a peculiarity of process.nextTick() that was changed in
commit 4e5fe2d. Before that commit, each nextTick callback corresponded with
the event loop moving forward one tick. That's no longer the case.
2012-08-09 01:02:48 +02:00
Ben Noordhuis
6770555551 test: raise pummel/test-net-throttle write req size
pummel/test-net-throttle assumes that a couple of big write requests result in
some of them getting queued because the kernel's send buffer fills up.

Said assumption breaks on systems with large send buffers. Raise the size of
the write request to ameliorate the issue.
2012-08-09 00:06:01 +02:00
Ben Noordhuis
5fba3b85c5 fs: fix ReferenceError in truncateSync()
Fixes a minor oversight introduced in 168a555, resulting in the following error:

  fs.js:467
      return fs.ftruncateSync(path, len, callback);
                                         ^
  ReferenceError: callback is not defined
      at Object.fs.truncateSync (fs.js:467:40)
2012-08-08 23:07:18 +02:00
Ben Noordhuis
08b382c2fb installer: remove c-ares header files
Fixes #3847.
2012-08-08 20:25:33 +02:00
isaacs
c82e2889e8 blog post for 0.8.6 2012-08-07 12:05:23 -07:00
isaacs
e8bc2edabf Now working on 0.8.7 2012-08-07 12:02:49 -07:00
isaacs
e8834dc1a1 Merge branch 'v0.8.6-release' into v0.8 2012-08-07 12:02:38 -07:00
isaacs
0544a586ca 2012.08.07, Version 0.8.6 (Stable)
* npm: Upgrade to v1.1.48

* Add 'make binary' to build binary tarballs for all Unixes (Nathan Rajlich)

* zlib: Emit 'close' on destroy(). (Dominic Tarr)

* child_process: Fix stdout=null when stdio=['pipe'] (Tyler Neylon)

* installer: prevent ETXTBSY errors (Ben Noordhuis)

* installer: honor --without-npm, default install path (Ben Noordhuis)

* net: make pause work with connecting sockets (Bert Belder)

* installer: fix cross-compile installs (Ben Noordhuis)

* net: fix .listen({fd:0}) (Ben Noordhuis)

* windows: map WSANO_DATA to UV_ENOENT (Bert Belder)
2012-08-07 11:56:58 -07:00
isaacs
f11a3dfcd6 npm: Upgrade to 1.1.48
Fixes an issue with publishing readmes that are not called
'README.md', so that they still end up on the website
2012-08-06 19:09:58 -07:00
Bert Belder
658cf43b7c uv: upgrade to 41b1265 2012-08-07 01:58:00 +02:00
Bert Belder
acea4c4123 dns: use uv_inet_ntop/uv_inet_pton instead of c-ares equivalents 2012-08-07 01:57:58 +02:00
Bert Belder
e0a603a499 uv: upgrade to 3a8bb3b 2012-08-07 01:57:56 +02:00
Bert Belder
9e55ba7d6b dns: don't rely on libuv for c-ares integration 2012-08-07 01:57:50 +02:00
Bert Belder
22d03c9108 node.cc: include ares.h 2012-08-07 01:49:13 +02:00
Bert Belder
81791ff33c Add c-ares dependency
This is the c-ares code that used to live in the libuv source tree.
It is based on c-ares 1.9.0.
2012-08-07 01:49:02 +02:00
Ben Noordhuis
4c150ca0d0 net: fix listen() regression, revert patches
This commit reverts the following commits (in reverse chronological order):

  74d076c errnoException must be done immediately
  ddb02b9 net: support Server.listen(Pipe)
  085a098 cluster: do not use internal server API
  d138875 net: lazy listen on handler

Commit d138875 introduced a backwards incompatible change that broke the
simple/test-net-socket-timeout and simple/test-net-lazy-listen tests - it
defers listening on the target port until the `net.Server` instance has at
least one 'connection' event listener.

The other patches had to be reverted in order to revert d138875.

Fixes #3832.
2012-08-06 23:55:38 +02:00
Josh Erickson
7b367a93ce net: add support for IPv6 addresses ending in ::
Modified net.isIP Ipv6 regex to allow for addresses ending in "::".
Added tests for new IPv6 matching reqex.
2012-08-06 22:25:55 +02:00
Nathan Rajlich
093be8b16b install: prevent a KeyError from being thrown when PORTABLE is not set 2012-08-06 13:22:05 -07:00
isaacs
caf69aa91a npm: Upgrade to 1.1.47 2012-08-06 13:07:31 -07:00
isaacs
9badc002b4 uv: Upgrade to dfb6be0 2012-08-06 12:40:40 -07:00
Nathan Rajlich
a23df7710a Merge branch 'binary-tarballs' into v0.8 2012-08-06 12:25:45 -07:00
Nathan Rajlich
cc6034ac86 email-footer: add links to the expected common binary packages
We can do other OSs like 32 and 64-bit OS X, but we should encourage
users to use the installer on OS X so we'll omit it here.
2012-08-06 11:57:47 -07:00
Nathan Rajlich
dc818135a5 Makefile: move the release verification logic into a make release-only target 2012-08-06 11:41:45 -07:00
Nathan Rajlich
8b11f29cf3 Makefile: properly set the ARCH variable when forcing a DESTCPU 2012-08-06 11:40:44 -07:00
Nathan Rajlich
dc9ae01ef7 Makefile: allow the dest-cpu to be specified for make binary
Needed for 64-bit Solaris, and 32-bit OS X
2012-08-06 11:40:44 -07:00
Nathan Rajlich
eadc2ec5c8 Makefile: add make binary helper target 2012-08-06 11:40:39 -07:00
Nathan Rajlich
bd10bf4418 Makefile: add make tar helper target 2012-08-06 11:40:01 -07:00
Nathan Rajlich
42aac41b93 Makefile: add target for precompiled binary tarballs
This target compiles node with "/" as the prefix and installs into a directory
like: "node-v0.8.6-darwin-x86_64". Then it creates a gzipped-tarball of that
directory, called something like: "node-v0.8.6-darwin-x86_64.tar.gz".
2012-08-06 10:22:08 -07:00
Nathan Rajlich
7a9db6cfb1 install: add a "portable" mode to the shebang-rewriting logic
This "portable" mode rewrites the npm shebang to use the "node" executable
in the same directory relative to the "npm" script. This makes the "npm"
script "just work" even when "node" is not in the user's $PATH.

This mode is necessary for the precompiled binary packages that may potentially
be extracted to anywhere. The regular shebang-rewriting logic would normally
set the npm script's shebang to "/bin/node" which will not be present on anyone's
machine. In the end, we want the precompiled packages to be as user-friendly as
possible.
2012-08-06 10:18:27 -07:00
Nathan Rajlich
6bdd4d0205 install: install the "wafadmin/Tools" files into the correct dir
Previously they were going into just "wafadmin" and node-waf wasn't working.
2012-08-06 10:16:09 -07:00
isaacs
168a555780 fs: fix naming of truncate/ftruncate functions
For backwards compatibility, fs.truncate(<number>) will proxy to
fs.ftruncate.

Fix #3805
2012-08-06 08:40:56 -07:00
isaacs
0414e14702 doc: util.pump is deprecated. Use Stream.pipe
Conflicts:

	doc/api/util.markdown
2012-08-06 08:23:11 -07:00
Ben Noordhuis
2f7e0f2da6 fs: remove undocumented .destroy callbacks
The destroy() method of fs.ReadStream and fs.WriteStream takes a callback.
It's a leftover from the node 0.1 days, undocumented and not part of the
streams API. Remove it.
2012-08-06 00:45:32 +02:00
Kyle Robinson Young
bc7479d232 doc: fix typos in child_process 2012-08-06 00:13:56 +02:00
isaacs
4ff56aa15e doc: util.pump is deprecated. Use Stream.pipe 2012-08-05 14:47:23 -07:00
isaacs
7bb814f9db errnoException must be done immediately 2012-08-05 14:42:22 -07:00
Ben Noordhuis
624788df7e Makefile: DRY js lint 2012-08-05 23:40:39 +02:00
Ben Noordhuis
3219616f43 util: mark util.pump() as deprecated 2012-08-05 23:40:28 +02:00
isaacs
93be4ffd4b test-message: fix message output
1. The net changes add a stack frame to stdin errors.
2. The error line numbers were overly strict in many places.
2012-08-05 14:33:23 -07:00
isaacs
74d076caf1 errnoException must be done immediately 2012-08-05 14:22:44 -07:00
Nathan Rajlich
3254caceef install: use os.path.join() to create the npm shebang
Prettier formatting for the shebang if the "prefix" ends with a /
2012-08-05 14:02:30 -07:00
isaacs
99ad0561c0 test-message: fix message output
1. The net changes add a stack frame to stdin errors.
2. The error line numbers were overly strict in many places.
2012-08-05 13:53:31 -07:00
Andreas Madsen
ddb02b978d net: support Server.listen(Pipe) 2012-08-05 13:53:31 -07:00
Andreas Madsen
085a09874b cluster: do not use internal server API 2012-08-05 13:53:31 -07:00
Andreas Madsen
d13887512e net: lazy listen on handler
This allow the server to be shared without the need to handle connection
from master
2012-08-04 22:13:07 -07:00
Dominic Tarr
f4a4ef7a2d zlib: Emit 'close' on destroy(). 2012-08-04 13:04:15 -07:00
Tyler Neylon
b48684c6f1 child_process: Fix stdout=null when stdio=['pipe']
Previously, a command with a short stdio array would result in the child's
stdout and stderr objects set to null. For example:

var c = child_process.spawn(cmd, args, {stdio: ['pipe']});
// results in c.stdout === null.

The expected behavior is the above line functioning the same as this one:

var c = child_process.spawn(cmd, args, {stdio: ['pipe', null, null]});
// provides correct (non-null) c.stdout; as does the above, after this fix.
2012-08-04 11:30:58 -07:00
isaacs
a7f3288a87 blog post for 0.6.21 2012-08-04 11:30:44 -07:00
Nathan Rajlich
57f785151a install: install the "wafadmin" files into the correct directory
Before they were just being copied into "lib/node/".
Now they go into "lib/node/wafadmin/".
2012-08-04 00:10:58 -07:00
Ben Noordhuis
110e499fe7 installer: prevent ETXTBSY errors
The installer does what amounts to `cp -p`. If the node binary is in use at
the time of the copy, it'd fail with a ETXTBSY error. That's why it's unlinked
first now.
2012-08-04 02:41:34 +02:00
Ben Noordhuis
b21c8e0bfd installer: honor --without-npm, default install path
* honor the --without-waf and --without-npm configure switches

* a small logic bug made the installer script install to $PWD instead of
  /usr/local if --prefix= was not passed to configure
2012-08-04 02:18:18 +02:00
isaacs
3bf1846bb7 Merge remote-tracking branch 'ry/v0.8'
Conflicts:
	ChangeLog
	deps/uv/src/unix/sunos.c
	deps/uv/test/test-tcp-unexpected-read.c
	src/node_version.h
2012-08-03 16:23:14 -07:00
Bert Belder
5fdeebd94d net: make pause work with connecting sockets
This fixes the problem that calling pause() on a socket would not
actually prevent 'data' events from being emitted. It also replaces
the existing test by a more elaborate one.

Ref: #3118
2012-08-03 17:11:08 +02:00
isaacs
585388bbd8 blog: Fix date on 0.8.5 release 2012-08-02 15:00:57 -07:00
isaacs
575c12bba3 Blog post about 0.8.5 2012-08-02 14:59:47 -07:00
isaacs
02dae998c3 Now working on 0.8.6 2012-08-02 14:58:15 -07:00
isaacs
2bee3aeee9 Merge branch 'v0.8.5-release' into v0.8 2012-08-02 14:57:34 -07:00
isaacs
9b86a4453f 2012.08.02, Version 0.8.5 (Stable)
* node: tag Encode and friends NODE_EXTERN (Ben Noordhuis)

* fs: fix ReadStream / WriteStream missing callback (Gil Pedersen)

* fs: fix readFileSync("/proc/cpuinfo") regression (Ben Noordhuis)

* installer: don't assume bash is installed (Ben Noordhuis)

* Report errors properly from --eval and stdin (isaacs)

* assert: fix throws() throws an error without message property (koichik)

* cluster: fix libuv assert in net.listen() (Ben Noordhuis)

* build: always link sunos builds with libumem (Trent Mick)

* build: improve armv7 / hard-float detection (Adam Malcontenti-Wilson)

* https: Use host header as effective servername (isaacs)

* sunos: work around OS bug to prevent fs.watch() from spinning (Bryan Cantrill)

* linux: fix 'two watchers, one path' segfault (Ben Noordhuis)

* windows: fix memory leaks in many fs functions (Bert Belder)

* windows: don't allow directories to be opened for writing/appending (Bert Belder)

* windows: make fork() work even when not all stdio handles are valid (Bert Belder)

* windows: make unlink() not remove mount points, and improve performance (Bert Belder)

* build: Sign pkg installer for OS X (isaacs)
2012-08-02 13:56:50 -07:00
isaacs
2dd710e7ea build: Sign pkg installer for OS X
This makes the installer work on Mountain Lion.
2012-08-02 13:56:50 -07:00
Ben Noordhuis
9315377693 doc: improve cluster.workers documentation 2012-08-02 17:47:33 +02:00
isaacs
37537d5720 test: stdin error messages 2012-08-02 08:11:18 -07:00
isaacs
f5c07b65a0 npm: Upgrade to 1.1.46 2012-08-02 08:09:47 -07:00
Ben Noordhuis
50e00de92a installer: fix cross-compile installs
The old installer was a JS script, which didn't work if node had been
cross-compiled for another architecture. Replace it with a python script.

Fixes #3807.
2012-08-02 13:51:35 +02:00
Ben Noordhuis
34c750d7a9 net: fix .listen({fd:0}) 2012-08-02 13:37:02 +02:00
Ben Noordhuis
6db9e12de5 deps: remove openssl apps and tests
Shrinks the tarball by a few hundred kilobytes and fixes a broken symlinks
issue on Windows.

Fixes #3813.
2012-08-02 12:20:19 +02:00
Ben Noordhuis
53f3b128f5 node: tag Encode and friends NODE_EXTERN
Makes the symbols visible on Windows. They were already visible on Unices.

Fixes #3811.
2012-08-02 01:35:54 +02:00
Gil Pedersen
f1fba8d1f5 fs: fix ReadStream / WriteStream missing callback
The (undocumented) callback argument to .destroy() was not called if the
stream was no longer readable / writable.
2012-08-02 01:25:53 +02:00
Ben Noordhuis
23f09d7e02 fs: fix readFileSync("/proc/cpuinfo") regression
Don't use positional reads. Not all proc files support pread(), especially on
older linux kernels.

Fixes #3808.
2012-08-01 20:30:40 +02:00
isaacs
fd56981b4c blog: Remove all windows line endings once and for all 2012-08-01 10:14:17 -07:00
Dave Pacheco
fe659a6017 update profiling blog post to use shell redirection instead of -o 2012-08-01 10:11:36 -07:00
isaacs
f70be41d80 blog: Remove ^M chars from profiling-node-js blog post 2012-08-01 10:11:30 -07:00
Ben Noordhuis
cccce60b3e installer: don't assume bash is installed
Use `/bin/sh` instead of `bash` when running the relocate.sh script.
2012-08-01 13:39:12 +02:00
Bert Belder
285a46d1ca uv: upgrade to 6209fe5 2012-08-01 01:45:44 +02:00
Eugen Dueck
af699c47d1 doc: http: document res.write() drain return value 2012-08-01 01:45:09 +02:00
Bert Belder
2981f01b46 v8: don't show performance warnings when compiling with msvc
Patch sent upstream: http://codereview.chromium.org/10829109/
2012-08-01 00:52:37 +02:00
Bert Belder
9e2319f977 docs: remove unused require from example
Closes GH-3801
2012-07-31 21:38:58 +02:00
Bert Belder
80ab9a891a uv: upgrade to 69c2ef8 2012-07-31 21:26:26 +02:00
Ben Noordhuis
de16da532e deps, tools: remove stray reject files 2012-07-31 13:45:16 +02:00
Ben Noordhuis
2eb6a62f4f doc: document child_process.fork() limitation 2012-07-31 03:09:49 +02:00
isaacs
f8dab6acb6 doc: Remove timeout arg in child_process.fork
Fix #3784
2012-07-30 11:01:57 -07:00
Shigeki Ohtsu
5b37da2ac0 doc: fix domains example
Need `utf8` encoding for JSON.parse and fix to avoid JSON.parse error when only
one argument is passed in domain.bind
2012-07-30 19:15:46 +02:00
isaacs
b3cf3f35fc Report errors properly from --eval and stdin 2012-07-30 08:21:39 -07:00
koichik
72bc4dcda4 assert: fix throws() throws an error without message property
Fixes #2893.
2012-07-29 19:48:16 +09:00
Ben Noordhuis
aa0650f444 cluster: fix libuv assert in net.listen()
Problem: calling `server.listen()` (no port) on a net.Server triggered the
following libuv assertion:

  node: ../deps/uv/src/unix/stream.c:406: uv__write: Assertion `fd_to_send >= 0'
  failed.

Cause: uv_tcp_t handles are lazily initialized. Omitting the port made the
handle get initialized even more lazily. Too lazily - it wasn't initialized
when the handle was sent over to the child process.

Solution: implicitly bind to a random port in listen() when the port number
is omitted, it forces the handle to initialize. This is not a change in
behavior, listen() has always been identical to listen(0).

Fixes #3325.
2012-07-29 02:07:16 +02:00
Tom Hughes-Croucher
c05f52c254 child_process: improve maxBuffer error message
Mention what buffer (stdout, stderr) overflowed.
2012-07-29 01:28:50 +02:00
Ben Noordhuis
879d329a5a deps: upgrade libuv to 4fe1916 2012-07-28 16:50:55 +02:00
Ben Noordhuis
d559bed0d5 node: use variadic functions in ev-emul.h
Fixes #3786.
2012-07-28 14:10:13 +02:00
Joe Andaverde
20e12e4be3 events: make .listeners() return a copy
Make EventEmitter.listeners(event) return a copy of the listeners array instead
of the array itself.

Fixes #3442.
2012-07-27 20:28:51 +02:00
Trent Mick
f70b138fcb always link sunos builds with libumem 2012-07-27 11:03:26 -07:00
Ben Noordhuis
f69234703f node: don't scan add-on for "init" symbol
From this commit onwards, use of the NODE_MODULE macro is mandatory. This lets
node guard against modules that are ABI incompatible.
2012-07-27 01:19:03 +02:00
Ben Noordhuis
c3d4c3560e node: bump NODE_MODULE_VERSION
Bump NODE_MODULE_VERSION so old modules won't load without recompiling when
the next major release (v0.10) comes out.

This is necessary because the ABI changes between major releases.
2012-07-27 00:55:35 +02:00
Ben Noordhuis
2a30d328fa crypto: add sync interface to crypto.pbkdf2()
Fixes #3766.
2012-07-27 00:02:36 +02:00
Timothy J Fontaine
edd3de8fea test: update dgram tests after API change 2012-07-26 23:55:29 +02:00
Ben Noordhuis
105c6ec8d5 test: suppress simple/test-dgram-pingpong chatter 2012-07-26 23:55:29 +02:00
Ben Noordhuis
332fea5ac1 dgram: make .bind() always asynchronous 2012-07-26 23:55:25 +02:00
Adam Malcontenti-Wilson
90efdb3a5b build: improve armv7 / hard-float detection 2012-07-26 23:38:34 +02:00
Ben Noordhuis
59b584c92d node: remove PrepareTick() and CheckTick()
Superfluous after commit 430d94e. Pointed out by Shigeki Ohtsu.
2012-07-26 22:32:06 +02:00
isaacs
e5498331f4 Merge remote-tracking branch 'ry/v0.8'
Conflicts:
	AUTHORS
	ChangeLog
	src/node_version.h
2012-07-26 11:58:03 -07:00
isaacs
b0c0111b04 https: Use host header as effective servername 2012-07-25 13:38:43 -07:00
Nathan Rajlich
9eddaebb79 assert: remove unnecessary use of __proto__
AssertionError already inherits from Error above using util.inherits(),
so this extra line was redundant.

test/simple/test-assert.js already tests for `instanceof`, and still passes.
2012-07-25 10:41:08 -07:00
isaacs
b207e24bcd Blog post for 0.8.4 2012-07-25 10:38:41 -07:00
isaacs
3d34590fba Now working on v0.8.5 2012-07-25 10:28:03 -07:00
isaacs
32141844f1 Merge branch 'v0.8.4-release' into v0.8 2012-07-25 10:26:03 -07:00
isaacs
8656c2654e Fix #3761 build: Default to V=1 2012-07-25 10:25:37 -07:00
isaacs
f98562fcd7 2012.07.25, Version 0.8.4 (Stable)
* V8: Upgrade to 3.11.10.17

* npm: Upgrade to 1.1.45

* net: fix Socket({ fd: 42 }) api (Ben Noordhuis)

* readline: Remove event listeners on close (isaacs)

* windows: correctly prep long path for fs.exists(Sync) (Bert Belder)

* debugger: wake up the event loop when a debugger command is dispatched (Peter Rybin)

* tls: verify server's identity (Fedor Indutny)

* net: ignore socket.setTimeout(Infinity or NaN) (Fedor Indutny)
2012-07-24 17:06:58 -07:00
isaacs
7fd3cb666b Build: add jslintfix 2012-07-24 17:06:57 -07:00
isaacs
5809426d75 net.js: lint 2012-07-24 17:05:31 -07:00
Ben Noordhuis
1513848f88 net: fix Socket({ fd: 42 }) api
Make the implementation match the documentation. This should work:

  var s = new net.Socket({ fd: 42, allowHalfOpen: true };

And now it does.
2012-07-24 15:53:22 -07:00
isaacs
e4c9c9f412 readline: Remove event listeners on close
Fix #3756
2012-07-24 15:36:53 -07:00
isaacs
2c487669f7 v8: Reapply floating patches 2012-07-24 14:19:50 -07:00
isaacs
f4f0daa44d V8: Upgrade to 3.11.10.17 2012-07-24 14:18:47 -07:00
isaacs
0a0002b480 npm: Upgrade to 1.1.45
This includes node-gyp 0.6.1
2012-07-24 12:34:13 -07:00
Bert Belder
febffc107d Merge branch 'v0.8'
Conflicts:
	lib/tls.js
2012-07-23 18:34:03 +02:00
Timothy J Fontaine
77945d7f0f add unref/ref tests for socket/server/timers 2012-07-23 18:31:32 +02:00
Timothy J Fontaine
bdd1a740cb add docs for socket/server/timer unref and ref 2012-07-23 18:31:31 +02:00
Timothy J Fontaine
cd6122edeb add ref/unref to setTimeout timers 2012-07-23 18:31:30 +02:00
Timothy J Fontaine
2637b5c261 ref/unref for net.Socket net.Server dgram.Socket 2012-07-23 18:31:30 +02:00
Timothy J Fontaine
19d43f852e export HandleWrap Unref Ref in tcp/udp/timer/pipe 2012-07-23 18:31:29 +02:00
Bert Belder
43a0c88116 windows: correctly prep long path for fs.exists(Sync)
Closes GH-3739
2012-07-23 13:55:42 +02:00
Peter Rybin
688859afc0 debugger: wake up the event loop when a debugger command is dispatched
When the event loop was blocked in epoll / kqueue or similar, debugger
commands wouldn't be processed. This patch fixes that by adding an
uv_async handle which is triggered when a debugger command is
dispatched. The async handle's callback makes sure that V8 is entered.

Closes GH-3626
Closes GH-3718
2012-07-23 13:15:51 +02:00
Brian White
e06b5d7af7 http: remove duplicate assignments
Closes GH-3754
2012-07-23 11:35:52 +02:00
koichik
bc30c90af6 doc: remove duplicate section
Fixes #3750.
2012-07-22 02:33:06 +09:00
isaacs
5bb2fe660e Blog post about 0.9.0 2012-07-20 11:56:14 -07:00
isaacs
ec299a1329 Now working on 0.9.0 2012-07-20 11:51:08 -07:00
isaacs
839dfe7570 Merge branch 'v0.9.0-release' 2012-07-20 11:50:47 -07:00
isaacs
f9b237f478 2012.07.20, Version 0.9.0 (Unstable)
* punycode: update to v1.1.1 (Mathias Bynens)

* c-ares: upgrade to 1.9.0 (Saúl Ibarra Corretgé)

* dns: ignore rogue DNS servers reported by windows (Saúl Ibarra Corretgé)

* unix: speed up uv_async_send() (Ben Noordhuis)

* darwin: get cpu model correctly on mac (Xidorn Quan)

* nextTick: Handle tick callbacks before any other I/O (isaacs)

* Enable color customization of `util.inspect` (Pavel Lang)

* tls: Speed and memory improvements (Fedor Indutny)

* readline: Use one history item for reentered line (Vladimir Beloborodov)

* Fix #3521 Make process.env more like a regular Object (isaacs)
2012-07-20 11:08:53 -07:00
isaacs
e16d506a58 uv: Upgrade to ad382bca 2012-07-20 11:08:36 -07:00
Fedor Indutny
42c6952edb tls: pass linting 2012-07-20 22:07:39 +04:00
Fedor Indutny
85185bbbaa tls: pass linting 2012-07-20 22:07:16 +04:00
Fedor Indutny
92e7433ff9 tls: fix 'hostless' tls connection verification
And fix last failing tests
2012-07-20 21:48:59 +04:00
Fedor Indutny
1ccdde9a69 Revert "http/https: pass request to .createConnection()"
This reverts commit 53716eb0b5.
2012-07-20 21:48:56 +04:00
Fedor Indutny
50122fed8a tls: fix 'hostless' tls connection verification
And fix last failing tests
2012-07-20 21:43:12 +04:00
Fedor Indutny
93d496a4ec tls: revert accidental API change
socket.authorizationError should always be string. Also make sni test
pass.
2012-07-20 21:13:54 +04:00
Fedor Indutny
5950db197c tls: revert accidental API change
socket.authorizationError should always be string. Also make sni test
pass.
2012-07-20 21:10:23 +04:00
Fedor Indutny
4aa09d1e0e tls: localhost is valid against identity-check 2012-07-20 20:51:38 +04:00
Fedor Indutny
e43fe5c833 Revert "http/https: pass request to .createConnection()"
This reverts commit 53716eb0b5.
2012-07-20 20:51:02 +04:00
Fedor Indutny
0cf235410d tls: localhost is valid against identity-check 2012-07-20 20:47:05 +04:00
Fedor Indutny
eb2ca10462 tls: veryify server's identity 2012-07-20 01:49:31 +04:00
Fedor Indutny
53716eb0b5 http/https: pass request to .createConnection()
It's useful for passing some additional options of request object to the
underlying API
2012-07-20 01:49:30 +04:00
Fedor Indutny
1fa0bca2ad net: ignore socket.setTimeout(Infinity) (and NaN) 2012-07-20 01:49:30 +04:00
Fedor Indutny
8ba189b8d3 tls: veryify server's identity 2012-07-20 00:53:36 +04:00
Fedor Indutny
2b3ba3f538 http/https: pass request to .createConnection()
It's useful for passing some additional options of request object to the
underlying API
2012-07-20 00:45:10 +04:00
Fedor Indutny
b0950cbea2 net: ignore socket.setTimeout(Infinity) (and NaN) 2012-07-20 00:43:41 +04:00
isaacs
3c998945aa Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
	src/node_version.h
2012-07-19 13:06:46 -07:00
isaacs
d9057cc090 npm: Upgrade to 1.1.44 2012-07-19 13:03:28 -07:00
isaacs
430d94ef85 nextTick: Preserve depth in error/reentry cases
When there is an error that is thrown in a nextTick function, which is
then handled by a domain or other process.on('uncaughtException')
handler, if the error handler *also* adds a nextTick and triggers
multiple MakeCallback events (ie, by doing some I/O), then it would
skip over the tickDepth check, resulting in an infinite spin.

Solution: Check the tickDepth at the start of the tick processing, and
preserve it when we are cleaning up in the error case or exiting early
in the re-entry case.

In order to make sure that tick callbacks are *eventually* handled, any
callback triggered by the underlying spinner in libuv will be processed
as if starting from a tick depth of 0.
2012-07-19 10:29:15 -07:00
isaacs
f6484842b3 Blog post about v0.8.3 2012-07-19 10:20:44 -07:00
isaacs
02ff9741cc Now working on 0.8.4 2012-07-19 10:19:45 -07:00
isaacs
4439f7b879 Merge branch 'v0.8.3-release' into v0.8 2012-07-19 10:19:04 -07:00
isaacs
60bf2d6cb3 2012.07.19, Version 0.8.3 (Stable)
* V8: upgrade to 3.11.10.15

* npm: Upgrade to 1.1.43

* net: fix net.Server.listen({fd:x}) error reporting (Ben Noordhuis)

* net: fix bogus errno reporting (Ben Noordhuis)

* build: Move npm shebang logic into an npm script (isaacs)

* build: fix add-on loading on freebsd (Ben Noordhuis)

* build: disable unsafe optimizations (Ben Noordhuis)

* build: fix spurious mksnapshot crashes for good (Ben Noordhuis)

* build: speed up genv8constants (Dave Pacheco)

* fs: make unwatchFile() remove a specific listener (Ben Noordhuis)

* domain: Remove first arg from intercepted fn (Toshihiro Nakamura)

* domain: Fix memory leak on error (isaacs)

* events: Fix memory leak from removeAllListeners (Nathan Rajlich)

* zlib: Fix memory leak in Unzip class. (isaacs)

* crypto: Fix memory leak in DecipherUpdate() (Ben Noordhuis)
2012-07-19 10:01:56 -07:00
isaacs
0c91b0e48e uv: Upgrade to 94355e4 2012-07-19 09:33:02 -07:00
isaacs
845b9e92d8 uv: Upgrade to 94355e4 2012-07-19 09:32:46 -07:00
Ben Noordhuis
b2648934f0 build: unbreak ustack on smartos
I disabled the -ffunction-sections and -fdata-sections switches in 202df30
because they're horribly buggy with some gcc/binutils combos.

However, it turns out that the dtrace/ustack post-processing tool requires
that V8 is compiled with said switches and was broken because of it.

This commit turns them on again on SunOS systems. Let's hope for the best.
2012-07-19 18:20:34 +02:00
Ben Noordhuis
5a5e128165 build: link with -rdynamic, not -Wl,--export-dynamic
The system linker on SunOS doesn't understand --export-dynamic.
2012-07-19 00:08:37 +02:00
Ben Noordhuis
98b1ce91f6 build: fix mksnapshot crash on sunos
Unconditionally compile V8 with -fno-strict-aliasing on all platforms.

gcc 4.5.2 on sunos generates bad code when -fstrict-aliasing is enabled, which
undoubtedly means that there are more buggy versions of gcc out there.

-fstrict-aliasing does not give a significant performance boost so let's just
disable it.

Fixes #3736.
2012-07-18 23:26:00 +02:00
Ben Noordhuis
beb7425c18 doc: build requires GNU make 3.81+ 2012-07-18 14:23:39 +02:00
Ben Noordhuis
f6f2d42ee9 node: make ev-emul.h compile with -Wextra -Werror
Explicitly cast double to int64_t, it was making add-ons that compile with
`-Wall -Wextra -Werror` fail to build.

Don't use fully variadic macros, gcc in uber-strict mode rejects them.
2012-07-18 13:56:09 +02:00
Ben Noordhuis
e8af340557 doc: advise *strongly* against uncaughtException 2012-07-18 03:46:39 +02:00
isaacs
e1fb7b76e9 uv: Upgrade to b49d6f7 2012-07-17 17:09:34 -07:00
Dave Pacheco
648fdc56a0 tools: speed up genv8constants
genv8constants was much slower than necessary due to lack of pipe buffering.
2012-07-18 00:56:02 +02:00
isaacs
868ffed77c v8: Reapply floating patches 2012-07-17 11:44:01 -07:00
isaacs
a0a0062d61 v8: upgrade to 3.11.10.15 2012-07-17 11:43:02 -07:00
isaacs
7397ab2cf1 uv: Upgrade to a9f6f06 2012-07-17 11:40:13 -07:00
isaacs
c383befd25 npm: Upgrade to 1.1.43 2012-07-17 11:37:39 -07:00
isaacs
a52a44e072 doc: nextTick semantics and justification 2012-07-17 07:13:11 -07:00
isaacs
19ecc17e6b nextTick: explicitly no-op when _exiting 2012-07-16 21:05:26 -07:00
isaacs
4e5fe2d45a nextTick: Handle tick callbacks after each tick 2012-07-16 21:05:10 -07:00
isaacs
0109a9f90a Move MakeCallback to JS 2012-07-16 18:45:14 -07:00
isaacs
8973c3d2b6 Merge remote-tracking branch 'ry/v0.8' 2012-07-16 18:35:07 -07:00
Pavel Lang
ff14007573 Enable color customization of util.inspect
This is rewrite of #3701 and #3603 before.

This patch introduce `util.inspect.styles`
and `util.inspect.colors` objects, which enables customization
of color sequences.
2012-07-16 18:32:03 -07:00
isaacs
d6b78d0e37 domain: Fix stack leak on error 2012-07-16 18:04:55 -07:00
isaacs
b8d861556a test-eio-limit: Remove confusing broken incorrect test 2012-07-16 16:28:34 -07:00
Mike Morearty
19aa05fab8 doc: fix bug in child_process.spawn() sample code 2012-07-16 02:27:01 +02:00
Bert Belder
23dc099299 benchmark: add single process tls connection benchmark 2012-07-14 01:43:34 +02:00
George Shank
8721667a2f doc: update 'Fork me at Github' ribbon
Replace 'Fork me at Github' ribbon with a new one fitting the website's color
scheme.
2012-07-13 14:09:06 -07:00
isaacs
db59c84ba0 Merge remote-tracking branch 'ry/v0.8'
Conflicts:
	deps/npm
2012-07-13 12:18:39 -07:00
isaacs
ef1b7dd3d7 build: Move npm shebang logic into an npm script
This allows us to run npm's scripts/relocate.sh script whenever
necessary, if for example node has been 'make install'ed into one
folder, and then you wish to move it into another one.
2012-07-13 12:08:17 -07:00
isaacs
9d4362403c npm: upgrade to 1.1.41 2012-07-13 12:08:17 -07:00
Ben Noordhuis
acbfc40888 build: fix add-on loading on freebsd
Link with -Wl,--export-dynamic, makes symbols from the node binary visible to
binary add-ons.

Fixes "undefined symbol: _ZN2v811HandleScopeC1Ev" errors when loading add-ons
on FreeBSD and likely other BSDs.

Fixes #3623.
2012-07-13 01:57:00 +02:00
Nathan Rajlich
713b9249e1 Revert "events: don't delete the listeners array in removeListener()"
This reverts commit 928ea564d1.

Keeping the original Array instance in-place essentially causes a memory leak
on EventEmitters that use an infinite number of event names (an incrementing
counter, for example), which isn't an unreasonable thing to want to do.

Fixes #3702.
2012-07-12 15:43:35 -07:00
Ben Noordhuis
3a6314dbe1 net: fix net.Server.listen({fd:x}) error reporting
* don't assert when fd isn't an open file descriptor

* don't die with a ReferenceError when fd isn't a file descriptor
  you can listen() on

Fixes #3699.
2012-07-12 18:18:38 +02:00
Ben Noordhuis
5d97d72753 net: fix bogus errno reporting
_listen2() emits the error on the next tick. The errno value may have changed
by then.
2012-07-12 16:56:44 +02:00
Ben Noordhuis
c6bb361b84 build: partially fix configure on ARM
V8 on ARM requires that armv7 is set. We don't have a good way to detect the
CPU model right now so we pick a default and hope that it works okay for the
majority of people.

Non-scientific sampling - the ARM hardware I have lying around the house -
suggests that ARMv5 and ARMv6 are still most common so armv7=0 it is.

This obviously needs to be revisited sometime in the future.
2012-07-12 16:29:46 +02:00
Ben Noordhuis
202df30aab build: disable unsafe optimizations
Compile at -O2 and disable optimizations that trigger gcc bugs.

Some people still reported mksnapshot crashes after commit b40f813 ("build: fix
spurious mksnapshot crashes for good" - so much for that).

Average performance of the -O2 binary is on par with the -O3 binary. Variance
on the http_simple bytes/8 benchmark appears to be slightly greater but small
enough that the possibly of it being noise cannot be excluded.

The new binary very slightly but consistently outperforms the -O3 binary (by
about 0.5%) on the mostly CPU-bound bytes/102400 benchmark. That could be an
artifact of the system I benchmarked it on, a Core 2 Duo with a puny 32 kB of
L1 instruction cache. The smaller binary seems to play nicer with the cache.
2012-07-12 16:17:25 +02:00
Bert Belder
d2e40f66cc Merge branch 'v0.6' into v0.8 2012-07-12 03:30:04 +02:00
isaacs
eb9b8f51da npm: upgrade to 1.1.39
Fix #3616
2012-07-11 17:54:53 -07:00
isaacs
3ad07ed0b8 lint 2012-07-11 17:46:28 -07:00
isaacs
424cd5a020 Merge remote-tracking branch 'ry/v0.8' into v0.8-merge
Conflicts:
	src/node_version.h
2012-07-11 17:38:11 -07:00
isaacs
b6e916db58 Now working on 0.6.21 2012-07-11 10:15:03 -07:00
Philipp Hagemeister
1d99441d37 tools: fix shebang in tools/doc/generate.js 2012-07-11 14:36:43 +02:00
Ben Noordhuis
b40f813bab build: fix spurious mksnapshot crashes for good
A variety of gcc bugs made mksnapshot crash with either a segmentation fault
or a 'pure virtual method callled' run-time error.

After much wailing and gnashing of teeth I managed to deduce that the bugs
show up when:

  1. gcc 4.5.2 for i386-pc-solaris2.11 is used and -fstrict-aliasing is
     enabled, or

  2. gcc version 4.4.6 for x86_64-redhat-linux is used and
     -ffunction-sections -finline-functions at -O2 or higher is enabled

Therefore, disable -ffunction-sections and -fdata-sections unconditionally
and disable -fstrict-aliasing only on Solaris.

The -ffunction-sections and -fdata-sections switches were nonsense anyway
because we don't link with -Wl,--gc-sections.
2012-07-11 03:52:13 +02:00
isaacs
bf561c52a5 Blog post for v0.6.20 2012-07-10 17:05:54 -07:00
isaacs
952e513379 2012.07.10 Version 0.6.20 (maintenance)
* npm: Upgrade to 1.1.37 (isaacs)

* benchmark: Backport improvements made in master (isaacs)

* build: always link with -lz (Trent Mick)

* core: use proper #include directives (Ben Noordhuis)

* cluster: don't silently drop messages when the write queue gets big (Bert Belder)

* windows: don't print error when GetConsoleTitleW returns an empty string (Bert Belder)
2012-07-10 16:25:12 -07:00
isaacs
17061d981e .gitignore: Don't ignore node_modules (breaks npm) 2012-07-10 16:16:43 -07:00
isaacs
ae5a209b11 npm: Upgrade to 1.1.37 2012-07-10 16:16:25 -07:00
Shigeki Ohtsu
76104f3414 timer: change new Date to Date.now for performance
Speeds up benchmark/settimeout.js by about 30%.
2012-07-10 22:44:07 +02:00
isaacs
fecebe1dbf build: Regenerate docs for tarball and releases
Related: https://twitter.com/kapeli/status/222477400880070658
2012-07-10 08:02:30 -07:00
Ivan Torres
8146f2e607 doc: clarify fs.symlink and fs.symlinkSync parameters 2012-07-10 16:36:08 +02:00
isaacs
71078f91ed Now working on 0.8.3 2012-07-09 10:25:17 -07:00
isaacs
a4da6300c8 v0.8.2 blog post 2012-07-09 10:24:34 -07:00
isaacs
9547ee90db Merge branch 'v0.8.2-release' into v0.8
Conflicts:
	AUTHORS
2012-07-09 10:23:49 -07:00
Toshihiro Nakamura
6530310ed5 domain: Remove first arg from intercepted fn
Fix to remove the first-arg, in case arguments length is more than 2
Add domain.intercept() test about first-arg removal
2012-07-09 09:37:46 -07:00
Bert Belder
2a8380ce57 Update AUTHORS 2012-07-09 17:28:30 +02:00
Bert Belder
f4369d76c8 Add a .mailmap file, and clean up AUTHORS somewhat
* A mailmap makes it easier to keep track of contributors.
* Changes to the AUTHORS file:
  - fix misspellings
  - add missing/incomplete names
  - remove duplicate mentions
* No names were added to or removed from the AUTHORS list.
2012-07-09 16:55:09 +02:00
Justin Plock
fba1e48fae doc: cluster: worker.pid is now worker.process.pid 2012-07-09 15:57:44 +02:00
Ben Noordhuis
63c2391984 test: make test-fs-watch-file write to tmp dir
Write temp files to test/tmp, not test/fixtures.
2012-07-09 15:48:43 +02:00
Ben Noordhuis
5b5362aa8d fs: make unwatchFile() remove a specific listener
Before this commit, `fs.unwatchFile(path)` removed *all* listeners for `path`.

The function is overloaded now: `fs.unwatchFile(path)` still removes all
listeners, but `fs.unwatchFile(path, cb)` lets you remove a specific listener.

Fixes #3660.
2012-07-09 15:48:43 +02:00
isaacs
bf539f9bfd zlib: Call inflateEnd for UNZIP. Fixes memory leak.
Fix #2595
2012-07-08 22:22:01 -07:00
Nathan Rajlich
d3d83d7b90 process: throw a TypeError when anything but an Array is passed to hrtime()
Fixes #3664.
2012-07-08 20:53:19 -07:00
Ben Noordhuis
26f1bc8e8c crypto: fix DecipherUpdate() memory leak
Fix a memory leak in the the code path that deals with partial hex strings.
2012-07-08 14:45:55 +02:00
isaacs
cc6084b9ac 2012.07.09, Version 0.8.2 (Stable)
* npm: Upgrade to 1.1.36

* readline: don't use Function#call() (Nathan Rajlich)

* Code cleanup to pass 'use strict' (Jonas Westerlund)

* module: add filename to require() json errors (TJ Holowaychuk)

* readline: fix for unicode prompts (Tim Macfarlane)

* timers: fix handling of large timeouts (Ben Noordhuis)

* repl: fix passing an empty line inserting "undefined" into the buffer (Nathan Rajlich)

* repl: fix crashes when buffering command (Maciej Małecki)

* build: rename strict_aliasing to node_no_strict_aliasing (Ben Noordhuis)

* build: disable -fstrict-aliasing for any gcc < 4.6.0 (Ben Noordhuis)

* build: detect cc version with -dumpversion (Ben Noordhuis)

* build: handle output of localized gcc or clang (Ben Noordhuis)

* unix: fix memory corruption in freebsd.c (Ben Noordhuis)

* unix: fix 'zero handles, one request' busy loop (Ben Noordhuis)

* unix: fix busy loop on unexpected tcp message (Ben Noordhuis)

* unix: fix EINPROGRESS busy loop (Ben Noordhuis)
2012-07-07 15:15:17 -07:00
isaacs
c4e9226bdb Fix test-require-json on Windows 2012-07-07 15:15:17 -07:00
Bert Belder
1c1ad9bcf4 v8: reapply floating patches 2012-07-07 23:45:02 +02:00
isaacs
5b5c8b6005 v8: Upgrade to 3.11.10.14 2012-07-07 23:45:00 +02:00
Bert Belder
3e5139fd2f Fix the Windows build 2012-07-07 23:40:12 +02:00
Bert Belder
c6843f40c8 gitignore: ignore .svn directories 2012-07-07 23:19:12 +02:00
isaacs
c49888bd84 Now working on 0.8.2 2012-07-07 13:42:25 -07:00
isaacs
59a40fc8ed npm: Upgrade to 1.1.36 2012-07-07 12:40:06 -07:00
isaacs
559a98f0d7 doc: Formatting and grammar on stream api doc 2012-07-07 09:53:33 -07:00
Dominic Tarr
7accaeb490 correct documentation of Stream#destroy 2012-07-07 09:51:00 -07:00
Nathan Rajlich
8a9e8d60d2 readline: don't use Function#call()
It wasn't necessary.
2012-07-06 19:41:01 -07:00
Jonas Westerlund
2297d638c1 Forgotten commit: add arguments to handleGroup 2012-07-06 19:28:35 -07:00
Jonas Westerlund
a9b0bcfafe Assign to property of global, instead of implicit global variable
Fixes crash in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
c7bc4cacde Use unicode escape sequences instead of octal
The latter is illegal in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
4cfdc57712 Inline timeout function, avoiding declaration in conditional
Moving it out would require an anonymous function, or bind(), anyway.
Luckily It's a tiny function. Fixes crash in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
7e7d5d38ea Move function declaration out of conditional
Also avoid using eval as identifier.
Fixes crashes in strict mode.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
0b0b72c2fa Move function declaration to top-level
Gets rid of a strict mode error and a few levels of indentation.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
e5bb8391a8 Do not assign to properties that only have getters
It is an error in strict mode, and silent failure otherwise.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
93d4259cf0 Avoid redeclaring variable
Capitalize the constructor to avoid redeclaration.
Fixes strict mode error.
2012-07-06 19:28:35 -07:00
Jonas Westerlund
e11b6b8f75 Remove octal escape sequences and avoid reserved keyword
Both are errors in strict mode.
2012-07-06 19:28:35 -07:00
TJ Holowaychuk
ed7fb149a2 module: add filename to require() json errors
Otherwise it can be quite difficult to figure out which file is busted.

Closes #3580.
2012-07-06 15:26:41 -07:00
Tim Macfarlane
0dba28b5c2 readline: fix for unicode prompts
prompt length is char length, not byte length
2012-07-06 02:14:47 +02:00
Ben Noordhuis
0c47219a72 timers: fix handling of large timeouts
Don't use the double-negate trick to coalesce the timeout argument into a
number, it produces the wrong result for very large timeouts.

Example:

    setTimeout(cb, 1e10); // doesn't work, ~~1e10 == 1410065408
2012-07-05 23:07:27 +02:00
Fedor Indutny
f210530f46 tls: use slab allocator 2012-07-05 16:06:33 -04:00
Fedor Indutny
d923269e13 tls: make tls a little bit faster
Compile OpenSSL with inline assembly for big numbers
2012-07-05 00:23:49 -04:00
Vladimir Beloborodov
3ea0397a1a readline: Use one history item for reentered line
If the command entered is exactly the same as the last history item,
don't dupe it in the history
2012-07-05 01:40:43 +02:00
Nathan Rajlich
9126dd2d90 repl: fix passing an empty line inserting "undefined" into the buffer
There was a possiblity of insering the string "undefined" into the repl's
command buffer, which would cause interesting results while evaluating.
2012-07-04 11:51:24 -07:00
Maciej Małecki
6a11f3edf4 repl: fix crashes when buffering command
Wrong order of operands was causing problems while trying to use command
buffering:

    > {
    ...   a: 3,
    ...

    repl.js:284
            if (cmd.trim().match(/^npm /) && !self.bufferedCommand) {
                    ^
    TypeError: Cannot call method 'trim' of undefined
        at finish (repl.js:284:17)
        at REPLServer.self.eval (repl.js:118:5)
        at rli.on.e (repl.js:260:20)
        at REPLServer.self.eval (repl.js:118:5)
        at Interface.<anonymous> (repl.js:250:12)
        at Interface.EventEmitter.emit (events.js:88:17)
        at Interface._onLine (readline.js:183:10)
        at Interface._line (readline.js:502:8)
        at Interface._ttyWrite (readline.js:720:14)
        at ReadStream.<anonymous> (readline.js:105:12)

Test included.

Closes #3515.
Closes #3517.
Closes #3621.
2012-07-04 11:22:10 -07:00
Ben Noordhuis
4fbe7a5fab deps: upgrade libuv to be09be7 2012-07-04 14:08:07 +02:00
Mathias Bynens
2ba96451a9 punycode: update to v1.1.1 2012-07-04 13:45:14 +02:00
Ben Noordhuis
41b129fbde Merge remote-tracking branch 'origin/v0.8'
Conflicts:
	configure
	src/node_version.h
2012-07-04 13:41:56 +02:00
Ben Noordhuis
fc4e12b8f1 tools: update gyp to r1426 2012-07-03 20:56:35 +02:00
Ben Noordhuis
5da78905a6 deps: upgrade libuv to 5031a5b 2012-07-03 20:56:26 +02:00
Ben Noordhuis
b1cce04646 build: rename strict_aliasing to node_no_strict_aliasing
Make the variable naming consistent with the other strict aliasing var,
v8_no_strict_aliasing.
2012-07-03 15:28:45 +02:00
Ben Noordhuis
b731c96679 build: disable -fstrict-aliasing for any gcc < 4.6.0
It has been conclusively demonstrated that the -fstrict-aliasing bugs in gcc's
optimizer are not limited to the 4.5.x releases only.

Fixes #3601 among others.
2012-07-03 15:19:17 +02:00
Ben Noordhuis
a0add91987 build: detect cc version with -dumpversion
The heuristic introduced in f78ce08 ("build: handle output of localized gcc or
clang") does not handle "branded" versions of gcc, i.e. a gcc whose output has
been customized by the distro vendor.

Fixes #3601.
2012-07-03 15:15:28 +02:00
Ben Noordhuis
a25a27817f deps: upgrade libuv to cc1b3de 2012-07-02 00:07:11 +02:00
Ben Noordhuis
b53cd9798f doc: document setTimeout / setInterval behavior 2012-07-01 20:09:55 +02:00
Ben Noordhuis
f78ce087ba build: handle output of localized gcc or clang
Before this commit, we used to scan the output of `$CC -v` for strings like
"gcc version x.y.z".

It was pointed out that this approach fails with localized versions of gcc
because those print (for example) "gcc versión x.y.z".

Use the output of `$CC --version` instead and only look at the first line.
2012-06-30 17:49:37 +02:00
Ben Noordhuis
f315029268 build: rename openssl configure switches
For consistency's sake, rename:

  --openssl-use-sys
  --openssl-includes
  --openssl-libpath

To:

  --shared-openssl
  --shared-openssl-includes
  --shared-openssl-libpath

And add --shared-openssl-libname while we're at it.

The old switches still work but `./configure --help` won't print them.

Fixes #3591.
2012-06-30 04:30:49 +02:00
Ben Noordhuis
7e5aeac28f deps: upgrade libuv to 3b8c0da 2012-06-30 03:27:54 +02:00
Ben Noordhuis
b9abb64fbb doc: fs.lchmod() is only available on OS X 2012-06-30 02:23:31 +02:00
isaacs
bc71874262 Blog post about 0.8.1 2012-06-29 10:20:25 -07:00
isaacs
cb64adaadc Merge branch 'v0.8.1-release' into v0.8 2012-06-29 10:14:58 -07:00
Ben Noordhuis
fee02db705 Re-apply commit e307468.
The V8 assert got triggered by a missing HandleScope::Close().
2012-06-29 17:29:32 +02:00
Bert Belder
0581afe531 Revert "Fix #3521 Use an object as the process.env proto"
The reverted commit caused a v8 assertion to trigger in debug mode.
This reverts commit e3074689f5.
2012-06-29 17:03:37 +02:00
isaacs
2134aa3d5c 2012.06.29, Version 0.8.1 (stable)
* V8: upgrade to v3.11.10.12

* npm: upgrade to v1.1.33
  - Support for parallel use of the cache folder
  - Retry on registry timeouts or network failures (Trent Mick)
  - Reduce 'engines' failures to a warning
  - Use new zsh completion if aviailable (Jeremy Cantrell)

* Fix #3577 Un-break require('sys')

* util: speed up formatting of large arrays/objects (Ben Noordhuis)

* windows: make fs.realpath(Sync) work with UNC paths (Bert Belder)

* build: fix --shared-v8 option (Ben Noordhuis)

* doc: `detached` is a boolean (Andreas Madsen)

* build: use proper python interpreter (Ben Noordhuis)

* build: expand ~ in `./configure --prefix=~/a/b/c` (Ben Noordhuis)

* build: handle CC env var with spaces (Gabriel de Perthuis)

* build: fix V8 build when compiling with gcc 4.5 (Ben Noordhuis)

* build: fix --shared-v8 option (Ben Noordhuis)

* windows msi: Fix icon issue which caused huge file size (Bert Belder)

* unix: assume that dlopen() may clobber dlerror() (Ben Noordhuis)

* sunos: fix memory corruption bugs (Ben Noordhuis)

* windows: better (f)utimes and (f)stat (Bert Belder)
2012-06-29 02:11:19 -07:00
isaacs
40f70673c6 blog: Require posts to have a date 2012-06-29 01:22:10 -07:00
isaacs
b919e29871 blog: Direct bugs/feature feedback to issues 2012-06-29 01:20:59 -07:00
isaacs
5193d59219 blog: Don't print 'undefined' for missing author/category 2012-06-29 01:20:13 -07:00
isaacs
103921dac0 blog css: Styling of nested lists 2012-06-29 00:45:55 -07:00
isaacs
1747eeff1a homepage: Update Claudio's title/link 2012-06-28 22:23:53 -07:00
isaacs
3e0757c101 lint 2012-06-28 22:06:53 -07:00
isaacs
3644b0bc96 uv: upgrade to 5b8a112 2012-06-28 19:11:30 -07:00
isaacs
c721604d25 npm: Upgrade to 1.1.33
Support for parallel use of the cache folder
Retry on registry timeouts or network failures
Reduce 'engines' failures to a warning
Use new zsh completion if aviailable
2012-06-28 19:08:32 -07:00
Bert Belder
ba0efd6de0 Merge branch 'v0.8' 2012-06-29 02:20:39 +02:00
isaacs
f2a9ed4873 Fix #3577 Un-break require('sys') 2012-06-28 10:14:03 -07:00
Bert Belder
3ea2a618ad uv: upgrade to 4a88b3b 2012-06-28 16:17:56 +02:00
isaacs
37bdd36d70 blog: Show 0.8.0 even after 0.8.1 ships
The 0.(even).0 releases typically have benchmarks and other interesting
stuff, since that's a milestone.
2012-06-27 23:32:50 -07:00
Ben Noordhuis
2d0011f532 Revert "tools: update closure_linter to the latest(2.3.5)"
This reverts commit 6d98524609.
This reverts commit 60ff789618.

closure_linter now depends on the gflags module and not everyone will have that
installed by default.
2012-06-28 04:14:43 +02:00
Ben Noordhuis
6531f187d8 util: speed up formatting of large arrays/objects
Don't .indexOf() into the keys array. V8 is smart but not so smart that it
knows how to turn the linear scan into a O(1) lookup.

Fixes #3562.
2012-06-28 03:51:42 +02:00
Ben Noordhuis
be3afd0bec doc: remove references to deprecated fs api
The string-based versions of fs.read() and fs.write() have been deprecated
since before v0.2.0.
2012-06-28 03:50:48 +02:00
Shigeki Ohtsu
e7e34ddb66 test: fix test-dgram-broadcast-multi-process
The test failed when a router replies IPADDR_BROADCAST.
Fixed it by specifying only one address to bind a socket.
2012-06-28 03:17:47 +02:00
Shigeki Ohtsu
60ff789618 LICENSE: update Closure Linter to Apache 2.0 2012-06-28 02:33:12 +02:00
Shigeki Ohtsu
6d98524609 tools: update closure_linter to the latest(2.3.5) 2012-06-28 02:33:12 +02:00
Ben Noordhuis
d5f13f6c08 build: use proper python interpreter
Make configure start gyp with the same python interpreter that is used to
run configure itself.

Fixes an issue where configure fails with a SyntaxError because the user
has multiple python binaries on his $PATH and the default one is too old.
2012-06-28 01:07:45 +02:00
Gabriel
9e72b7b65c build: handle CC env var with spaces
For example:

    CC='ccache gcc' ./configure
2012-06-27 19:52:01 +02:00
Bert Belder
0cdeb8ed96 windows: make fs.realpath(Sync) work with UNC paths
Closes #3542
2012-06-27 01:59:25 +02:00
Ben Noordhuis
f00c8bcef8 build: fix --shared-v8 option 2012-06-27 00:35:16 +02:00
isaacs
21aa0df8b2 realpath: No sync cb() calling allowed. 2012-06-26 15:20:26 -07:00
Ben Noordhuis
1e50282ae8 deps: upgrade libuv to 4d42af2 2012-06-26 23:38:35 +02:00
Tim Oxley
69f594d22c Added % difference for perf benchmarks in 0.8 post 2012-06-26 10:54:20 -07:00
Bert Belder
10448487e5 configure: don't fail if compiler_version() doesn't work
This fixes the Windows build.
2012-06-26 19:23:24 +02:00
isaacs
42ea37afb2 Now working on 0.9.0 2012-06-26 09:13:59 -07:00
isaacs
e3074689f5 Fix #3521 Use an object as the process.env proto
For some reason, though, it looks like EnvGetter is not called for the
key `__proto__`, so I can't make the info->Data() accessible.  However,
putting the Object.prototype keys there, in such a way that they are not
OwnProperties, and are supersceded by environs, makes process.env much
less weird.
2012-06-26 09:08:40 -07:00
Andreas Madsen
401ff10295 doc: detached is a boolean 2012-06-26 17:30:07 +02:00
Ben Noordhuis
06c82c5069 build: expand ~ in ./configure --prefix=~/a/b/c 2012-06-26 16:35:14 +02:00
Ben Noordhuis
57276ae70a build: enable strict aliasing if gcc < 4.5.0
We already enable -fstrict-aliasing when gcc >= 4.6.0 but let's enable it for
gcc < 4.5.0 as well. The aliasing bugs that we ran into in the past are all
particular to the 4.5.x releases.
2012-06-26 03:39:34 +02:00
Ben Noordhuis
4f27a0822a Merge remote-tracking branch 'origin/v0.8' 2012-06-26 03:38:39 +02:00
Ben Noordhuis
07e5877144 build: disable strict aliasing in v8 with gcc 4.5.x
The gcc 4.5.x have various bugs that make V8 crash in various and interesting
ways when -fstrict-aliasing is in effect.
2012-06-26 03:01:46 +02:00
Ben Noordhuis
5a2cc626b2 build: disable strict aliasing in v8 with gcc 4.5.x
The gcc 4.5.x have various bugs that make V8 crash in various and interesting
ways when -fstrict-aliasing is in effect.
2012-06-26 02:54:13 +02:00
Bert Belder
f60def5e9a v8: reapply floating patches 2012-06-26 02:03:49 +02:00
Bert Belder
74872b0dc9 v8: upgrade to version 3.11.10.12 2012-06-26 02:03:24 +02:00
Andreas Madsen
3d51646c4b doc: replace references to cluster.autoFork 2012-06-25 23:17:18 +02:00
Bert Belder
41a4b734d3 windows: remove 256x256 version of the icon
Nobody needs that anyway, it's just eating up space.
2012-06-25 18:40:48 +02:00
Bert Belder
3f932c52b0 windows msi: don't use .exe file as icon
This makes the installer nice and small again.
2012-06-25 18:40:12 +02:00
koichik
d7825b3c1d docs: add punycode to TOC
Refs #3301.
2012-06-25 09:07:57 -07:00
isaacs
7823474022 blog post for v0.8.0 2012-06-25 07:59:14 -07:00
isaacs
b07b391304 Now working on 0.8.1 2012-06-25 07:58:03 -07:00
isaacs
5feea97b53 Merge branch 'v0.8.0-release' into v0.8 2012-06-25 07:57:45 -07:00
isaacs
8b8a7a7f9b 2012.06.25, Version 0.8.0 (stable)
* V8: upgrade to v3.11.10.10

* npm: Upgrade to 1.1.32

* Deprecate iowatcher (Ben Noordhuis)

* windows: update icon (Bert Belder)

* http: Hush 'MUST NOT have a body' warnings to debug() (isaacs)

* Move blog.nodejs.org content into repository (isaacs)

* Fix #3503: stdin: resume() on pipe(dest) (isaacs)

* crypto: fix error reporting in SetKey() (Fedor Indutny)

* Add --no-deprecation and --trace-deprecation command-line flags
* (isaacs)

* fs: fix fs.watchFile() (Ben Noordhuis)

* fs: Fix fs.readfile() on pipes (isaacs)

* Rename GYP variable node_use_system_openssl to be consistent (Ryan
* Dahl)
2012-06-25 07:37:20 -07:00
isaacs
9a7158de18 Hotfix for #3528 Add strdup in uv_cpu_info 2012-06-25 07:37:19 -07:00
Ben Noordhuis
6003912f81 test: use RC4-MD5 cipher in tls test
NULL-MD5 is not always compiled into openssl but RC4-MD5 should always be
available.

Fixes #3531.
2012-06-25 16:36:02 +02:00
George Shank
bc73abe5a8 doc: update 'Fork me at Github' ribbon
Replace 'Fork me at Github' ribbon with a new one fitting the website's color
scheme.
2012-06-24 04:34:23 +02:00
Mathias Bynens
839bf025a8 docs: Switch to the asynchronous Google Analytics snippet
The old snippet needlessly uses `document.write`. Let’s use the
optimized version of the most recent, asynchronous GA snippet:
http://mathiasbynens.be/notes/async-analytics-snippet
2012-06-23 11:54:51 -07:00
isaacs
8a946c2ee7 benchmark: Backport improvements made in master
Ported to v0.6 for easier comparison in the 0.8.0 blog post.
2012-06-23 10:03:12 -07:00
Ben Noordhuis
c40875ee13 repl: fix buffer clearing after npm command 2012-06-23 02:29:36 +02:00
isaacs
38250f6403 npm: Upgrade to 1.1.32 2012-06-22 15:14:12 -07:00
Bert Belder
1b114162ab uv: upgrade to 0387c23 2012-06-22 20:53:04 +02:00
isaacs
2603cc564d blog: add RSS link tag for discovery 2012-06-22 09:04:14 -07:00
isaacs
d34fea59e1 blog: Generate RSS feeds 2012-06-22 08:49:20 -07:00
isaacs
91835966eb npm: Upgrade to 1.1.31 2012-06-22 07:45:21 -07:00
isaacs
5565366a33 uv: Upgrade to 171e2f71b9 2012-06-22 07:44:40 -07:00
Bert Belder
a1b274108f windows msi: use .url files for documentation and website shortcuts 2012-06-22 15:24:23 +02:00
Bert Belder
399731e3a0 windows msi: add npm dir to user PATH only
The NPM folder is personal to the user. It shouldn't be added to the
system-wide path.
2012-06-22 15:24:22 +02:00
Bert Belder
2dccebd4b8 windows msi: set icon for add/remove programs dialog 2012-06-22 15:24:21 +02:00
Bert Belder
3bab12197f windows: fix/improve nodejsvars.bat
- Fix: it didn't work for the x86 version of node
- Also add NPM to path
- Also print node version
- Don't change dir to home dir if not started from the start menu
2012-06-22 15:24:21 +02:00
isaacs
de89bbb00c blog: Show category in post metadata 2012-06-21 19:45:11 -07:00
isaacs
441e792849 stdin.pipe: Replace forgotten opts member 2012-06-21 19:36:17 -07:00
isaacs
6014a62b3e blog: Missing title tag 2012-06-21 19:20:09 -07:00
isaacs
ff2a1b86c3 blog: Minor tweaks to style and some data conversion cleanup 2012-06-21 19:15:03 -07:00
Joe Shaw
38250f9aef authors: update email address
Closes #3507.
2012-06-22 02:09:45 +02:00
isaacs
9df5fda777 Merge branch 'blog' 2012-06-21 16:19:56 -07:00
isaacs
8f1a38d916 Generate static HTML blog content out of markdown 2012-06-21 16:18:17 -07:00
isaacs
ddf52bd347 Initial blog source
Exported from WP and cleaned up a bit.
2012-06-21 16:18:17 -07:00
isaacs
c6f7fd7e47 Merge branch 'stdin-resume-pipe' 2012-06-21 16:18:00 -07:00
isaacs
5ec056633f Fix #3503: stdin: resume() on pipe(dest) 2012-06-21 16:16:30 -07:00
Fedor Indutny
af52bc4fe6 crypto: fix error reporting in SetKey() 2012-06-21 16:06:06 -07:00
isaacs
fce7c958ed test: add deprecation fixture 2012-06-21 14:47:25 -07:00
isaacs
8988af58f4 Externalize node::no_deprecation 2012-06-21 13:55:40 -07:00
isaacs
48c3d20041 Apply --no-deprecation to C++ warnings as well 2012-06-21 12:29:33 -07:00
isaacs
5b39929d47 Add --no-deprecation and --trace-deprecation flags 2012-06-21 12:05:33 -07:00
isaacs
260695afd0 http: Hush 'MUST NOT have a body' warnings to debug() 2012-06-21 12:05:33 -07:00
Bert Belder
6e5217d320 Fix bug in io benchmark 2012-06-21 20:52:38 +02:00
Ben Noordhuis
1bf704a571 iowatcher: add deprecation warning 2012-06-21 17:55:05 +02:00
Ben Noordhuis
8708bb0280 doc: update fs.watchFile() docs 2012-06-21 15:03:49 +02:00
Ben Noordhuis
ef1ffcb717 fs: make fs.watchFile() interval default to 5007 2012-06-21 15:03:21 +02:00
Ben Noordhuis
f0ce98441f fs: make fs.watchFile() work on windows 2012-06-21 03:05:18 +02:00
Ben Noordhuis
d98a8578d6 test: add another fs.watchFile() test 2012-06-21 02:50:13 +02:00
Ben Noordhuis
09150b0616 node: replace NODE_STAT_STRUCT with uv_statbuf_t 2012-06-21 02:42:28 +02:00
Bert Belder
ae7a3cddae uv: upgrade to da59427 2012-06-21 02:39:13 +02:00
Karl Skomski
57d53a47e8 Use parent SlowBuffer, if any, when Buffer is sliced
Closes #3416
Closes #3477
2012-06-21 01:46:04 +02:00
Fedor Indutny
81a889fd88 v8: fix postmortem debugging tools build 2012-06-21 00:35:52 +02:00
Bert Belder
6b8ae8e66d v8: reapply floating patches 2012-06-21 00:35:46 +02:00
Bert Belder
6b26583e84 v8: upgrade to v3.11.10.10 2012-06-21 00:33:44 +02:00
Ryan Dahl
fe464a2fea Rename GYP variable node_use_system_openssl to be consistent 2012-06-20 22:38:30 +02:00
isaacs
1d3d02c70d Fix fs.readfile('/dev/stdin')
There is no need for fs.readFile() to be using pread rather than read.
The default semantics of read() are such that subsequent reads are where
we want them anyway.
2012-06-20 10:28:44 -07:00
Bert Belder
7887e68ff7 uv: upgrade to 6e8eb332 2012-06-20 04:23:32 +02:00
isaacs
e4017402ef Now working on 0.8.0 2012-06-19 17:03:12 -07:00
isaacs
fbc2ad5815 Merge branch 'v0.7.12-release' 2012-06-19 17:01:11 -07:00
Bert Belder
26b11915b1 test-domain: fix the test to work on Windows
On Windows, full pathnames are stored in the Error object when
a file i/o error happens. This is not the case on Unix. Before
this fix the test would break because of these full paths.
2012-06-20 01:07:57 +02:00
Bert Belder
7a4dfb6aa8 test-cluster-worker-kill: use SIGKILL instead of SIGHUP
In this test sending SIGKILL has the same effect as sending SIGHUP,
but SIGKILL has the advantage that it works on Windows too.
2012-06-20 00:56:33 +02:00
Bert Belder
3795d77113 windows: listen(pipe_name) is not supported when running cluster
- Added a note to the cluster module documentation.
- Disabled test-cluster-http-pipe.
2012-06-20 00:53:01 +02:00
Bert Belder
41d5fefc10 windows: update icon 2012-06-19 23:51:38 +02:00
isaacs
a72120190a 2012.06.19, Version 0.7.12 (unstable)
* npm: Upgrade to 1.1.30
  - Improved 'npm init'
  - Fix the 'cb never called' error from 'oudated' and 'update'
  - Add --save-bundle|-B config
  - Fix isaacs/npm#2465: Make npm script and windows shims cygwin-aware
  - Fix isaacs/npm#2452 Use --save(-dev|-optional) in npm rm
  - `logstream` option to replace removed `logfd` (Rod Vagg)
  - Read default descriptions from README.md files

* Shims to support deprecated ev_* and eio_* methods (Ben Noordhuis)

* #3118 net.Socket: Delay pause/resume until after connect (isaacs)

* #3465 Add ./configure --no-ifaddrs flag (isaacs)

* child_process: add .stdin stream to forks (Fedor Indutny)

* build: fix `make install DESTDIR=/path` (Ben Noordhuis)

* tls: fix off-by-one error in renegotiation check (Ben Noordhuis)

* crypto: Fix diffie-hellman key generation UTF-8 errors (Fedor Indutny)

* node: change the constructor name of process from EventEmitter to process (Andreas Madsen)

* net: Prevent property access throws during close (Reid Burke)

* querystring: improved speed and code cleanup (Felix Böhm)

* sunos: fix assertion errors breaking fs.watch() (Fedor Indutny)

* unix: stat: detect sub-second changes (Ben Noordhuis)

* add stat() based file watcher (Ben Noordhuis)
2012-06-19 14:07:49 -07:00
isaacs
f105f2f2fd trivial: Doc typo and lint fix 2012-06-19 14:07:48 -07:00
isaacs
252f034b30 email-footer: Label Windows x64 installer properly 2012-06-19 14:07:48 -07:00
Ben Noordhuis
067be2b3fe node: fix namespacing issue in ev-emul.h
Always use C linkage, prevent accidental name mangling.
2012-06-19 23:04:59 +02:00
Bert Belder
3f687dbddf uv: upgrade to b496c122 2012-06-19 21:12:48 +02:00
Bert Belder
5e1d844f3d uv: upgrade to 67090653 2012-06-19 20:48:02 +02:00
isaacs
6ba1c625cd npm: Upgrade to 1.1.30 2012-06-19 09:53:26 -07:00
verwaest@chromium.org
8a6ef65c2c Fixing bugs in promotion of elements transitions (r1175). - Fixed invalid memory access when reading enum-cache from descriptor array with elements transitions but 0 real descriptors. - Fixed infinite recursion in the intrusive map iterator when visiting elements transitions. - Properly cached non-fastmode elements transitions.
Review URL: https://chromiumcodereview.appspot.com/10565030

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11841 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:52 +02:00
jkummerow@chromium.org
7282ce9014 Remove unused-but-set variable from objects.cc.
This fixes compilation with newer GCCs.

R=erik.corry@gmail.com

Review URL: https://chromiumcodereview.appspot.com/10568006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11838 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:51 +02:00
erik.corry@gmail.com
f94b85db83 Revert part of 11727 as it sometimes tanked V8 benchmark (raytrace) performance for reasons that are not obvious. Now we make objects into fast-case objects when they are made prototypes for other objects, but we do not mark objects that are already fast case with a bit that helps keep them in fast case. Review URL: https://chromiumcodereview.appspot.com/10556004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:50 +02:00
danno@chromium.org
bf682afb98 MIPS: Fix packed-element.js test on ARM with no snap
Port r11826 (5be3568a)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10559002
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11840 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-19 17:56:49 +02:00
Ben Noordhuis
8966480c0e Revert "build: fix make install DESTDIR=/path"
This reverts commit f80513974e.

The reverted commit made DESTDIR behave more like we want it to but it was
pointed out in #3489 that it makes life a lot harder for distro package
maintainers.

Those guys and gals already have a hard enough time as it is, let's not make
their jobs even more hellish.
2012-06-19 17:50:34 +02:00
Ben Noordhuis
7de6eba061 node: preemptively unbreak windows build
No one has complained about it so far but I'm sure MSVC doesn't like things
like __attribute__((unused)). Include the libev and libeio shims only on
non-Windows platforms.
2012-06-19 13:51:00 +02:00
isaacs
edb62dd902 npm: Upgrade to 1.1.29 2012-06-18 18:08:48 -07:00
isaacs
10fa526fa0 Update npm's license
Adds the Gubblebum Blocky copyright statement
2012-06-18 18:08:45 -07:00
isaacs
5cfe0b86d5 eio-emul: Cast eio_custom method to void(*)(eio_req*) 2012-06-18 17:48:16 -07:00
Trent Mick
dd1c3d72e2 build: always link with -lz
Fix building with a shared zlib: ensure link with '-lz'.

Configuring for a shared zlib:

    LDFLAGS="-L/opt/local/lib -R/opt/local/lib" \
        ./configure --shared-zlib \
        --shared-zlib-includes=/opt/local/include \
        --shared-zlib-libpath=/opt/local/lib

and building would fail on SmartOS because the link would not include '-lz'.
This doesn't fail on Mac (at least in my setup) because you get lucky with the
openssl libs reported from the Homebrew pkg-config:

    $ pkg-config --libs openssl
    -lssl -lcrypto -lz

On SmartOS, the pkgsrc libs for openssl are:

    $ pkg-config --libs openssl
    -Wl,-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto -lsocket -lnsl -ldl

The patch has no adverse effect on the Mac build (by control case).
2012-06-19 02:23:19 +02:00
Ben Noordhuis
1b22f5376b build: install eio-emul.h 2012-06-19 02:15:29 +02:00
Ben Noordhuis
f405517de1 build: install ev-emul.h 2012-06-19 02:15:29 +02:00
isaacs
1df222f179 Fix breakage introduced in de65ba7 2012-06-18 16:04:36 -07:00
isaacs
de65ba7aba net.Socket: Delay pause/resume until after connect
Fix #3118
2012-06-18 15:17:20 -07:00
Trent Mick
196207c228 node: remove unused flags and files
Drop vestigial `process.installPrefix`, `node --vars`, NODE_CFLAGS and
NODE_PREFIX.

Also removed unused node_config.h.in (replaced with config.gypi a while back).
2012-06-18 23:56:42 +02:00
isaacs
0ef6cfd39b Fix #3465 Add ./configure --no-ifaddrs flag
For Old Solaris.
2012-06-18 14:52:12 -07:00
isaacs
d0111aa0c4 uv: Upgrade to 382f2a26 2012-06-18 14:51:41 -07:00
Fedor Indutny
0a89e8b838 child_process: add .stdin stream to forks
Remove test as it doesn't make any sense after the latest stdio API
changes.
2012-06-19 01:46:28 +04:00
Fedor Indutny
057b80611f uv: upgrade to 61a6e06e 2012-06-19 01:03:11 +04:00
Bert Belder
30ab1f567d test-eio-limit: bump the number of allowed background tasks to 200
This makes the test pass on Windows.
2012-06-18 15:58:43 +02:00
Bert Belder
1b7d23e81e Fix test-cluster-message so it passes on Windows
The test was relying on a particular order of events that cannot be
guaranteed.

Also fixes some typos.
2012-06-18 15:36:26 +02:00
Ben Noordhuis
f80513974e build: fix make install DESTDIR=/path
Install to $DESTDIR, not $DESTDIR/$PREFIX.

Example: if DESTDIR=/opt/node, install to /opt/node, not /opt/node/usr/local.
2012-06-18 15:13:39 +02:00
Ben Noordhuis
ff552ddbaa tls: fix off-by-one error in renegotiation check
Make CLIENT_RENEG_LIMIT inclusive instead of exclusive, i.e. a limit of 2
means the peer can renegotiate twice, not just once.

Update pummel/test-tls-ci-reneg-attack accordingly and make it less timing
sensitive (and run faster) while we're at it.
2012-06-18 04:31:40 +02:00
Ben Noordhuis
eef57dddf4 core: use proper #include directives 2012-06-18 02:35:14 +02:00
Fedor Indutny
ae5b0e1fc1 crypto: add padding to diffie-hellman key
DH_size returns number of bytes in a prime number, DH_compute_key returns number
of bytes in a remainder of exponent, which may have less bytes than a prime
number. Therefore add 0-padding to the allocated buffer.

Fixes #3372
2012-06-18 00:59:31 +04:00
Andreas Madsen
6d70a4ae16 node: change the constructor name of process from EventEmitter to process 2012-06-17 13:14:11 -07:00
Maciej Małecki
3db2e034c4 events: cache domain module locally
It's faster than calling `require` every time we create an
`EventEmitter`.
2012-06-17 13:07:20 -07:00
Reid Burke
71a2a2caa6 net: Prevent property access throws during close
Fix #3455.

The remoteAddress and remotePort properties are
dynamically retrieved from _getpeername().

While _getpeername() checks if the _handle is
null, it is also possible for the tcp_wrapped
_handle.getpeername() to return null on error.

Such a condition happens when the remote closes
and one of these properties is accessed before
_handle is set to null.
2012-06-17 13:00:00 -07:00
isaacs
b0b707cb6e npm: Upgrade to 1.1.27
- severely enhanced 'npm init'
- upgraded node-gyp
2012-06-17 12:04:35 -07:00
isaacs
d614d161c7 test: Don't reuse common.PORT in test-child-process-fork-net
This fixes #3447
2012-06-16 16:26:22 -07:00
isaacs
41421ff9da Make listenFD just DTRT after warning 2012-06-16 16:26:16 -07:00
Bert Belder
55ef9ef680 Revert "Check if a stream has a valid fd before read_start"
uv_stream_t.fd is a private field which exists only on unix.
This reverts commit 8d5c1201f2.
2012-06-16 20:14:21 +02:00
isaacs
a90bc78534 Revert "DNS: Support NAPTR queries"
This reverts commit 91bf18fcc5.
2012-06-16 11:02:49 -07:00
ssuda
91bf18fcc5 DNS: Support NAPTR queries
Adding support for NAPTR records
fixes #3170
2012-06-16 10:56:49 -07:00
Felix Böhm
3a5798b097 querystring: improved speed and code cleanup 2012-06-16 10:43:17 -07:00
isaacs
e74a733024 Fix #3448 Use listen callback in test-regress-GH-1697 2012-06-16 10:19:34 -07:00
Charlie McConnell
8a068ce849 s/exit/close/ in test-child-process-stdout-flush, fixes #3449 2012-06-16 09:43:04 -07:00
isaacs
bc18bf4ec0 Add test-stdin-pause-resume-sync
This is the last bit needed to Close #3346
2012-06-16 09:05:28 -07:00
Karl Skomski
8d5c1201f2 Check if a stream has a valid fd before read_start
Closes #3118
2012-06-16 09:00:20 -07:00
isaacs
bdd57f0756 Makefile: Refuse to build release from unclean repo
Root cause of an error during the 0.7.11 release
2012-06-16 08:51:33 -07:00
Charlie McConnell
145612c2f5 test: skip test-http-full-response on ab errors
If we get errors from ab or apr, skip the test and move on.

Fix #3451
2012-06-16 08:38:47 -07:00
isaacs
c49f3b5df6 email footer: Change Windows msi paths for x86 and x64 2012-06-15 12:50:37 -07:00
isaacs
2b15cf57dd Now working on 0.7.12 2012-06-15 12:47:08 -07:00
isaacs
de2eb600b3 Merge branch 'v0.7.11-release' 2012-06-15 12:46:55 -07:00
isaacs
1f93aa5d5d 2012.06.15, Version 0.7.11 (unstable)
* V8: Upgrade to v3.11.10

* npm: Upgrade to 1.1.26

* doc: Improve cross-linking in API docs markdown (Ben Kelly)

* Fix #3425: removeAllListeners should delete array (Reid Burke)

* cluster: don't silently drop messages when the write queue gets big (Bert Belder)

* Add Buffer.concat method (isaacs)

* windows: make symlinks tolerant to forward slashes (Bert Belder)

* build: Add node.d and node.1 to installer (isaacs)

* cluster: rename worker.unqiueID to worker.id (Andreas Madsen)

* Windows: Enable ETW events on Windows for existing DTrace probes. (Igor Zinkovsky)

* test: bundle node-weak in test/gc so that it doesn't need to be downloaded (Nathan Rajlich)

* Make many tests pass on Windows (Bert Belder)

* Fix #3388 Support listening on file descriptors (isaacs)

* Fix #3407 Add os.tmpDir() (isaacs)

* Unbreak the snapshotted build on Windows (Bert Belder)

* Clean up child_process.kill throws (Bert Belder)

* crypto: make cipher/decipher accept buffer args (Ben Noordhuis)
2012-06-15 12:10:43 -07:00
isaacs
911b0fddd3 Upgrade npm to 1.1.26 2012-06-15 10:00:30 -07:00
Andreas Madsen
1e0ce5d1bd domain: the EventEmitter constructor is now always called in nodecore 2012-06-15 09:49:05 -07:00
Ben Kelly
c6185c8484 doc: Improve cross-linking in API docs markdown
Cross-link EventEmitter references in API docs to events.html

Fix broken cross-reference links with wrong anchor names in API docs.
2012-06-15 09:44:37 -07:00
isaacs
a111390c56 zlib: use Buffer.concat() 2012-06-15 09:44:37 -07:00
Bert Belder
8ccb3cbdba test-domain-implicit-fs: make it pass on windows
The error message is slightly different on windows. However there was no
need to verify the exact error message - there are assert()s that check
all the properties of the error object.
2012-06-15 18:34:27 +02:00
isaacs
283d735e2b doc: Include zlib constants 2012-06-14 22:17:39 -07:00
isaacs
e72addcf8e event: Document the mutability of listeners() 2012-06-14 17:26:51 -07:00
Nathan Rajlich
032fc42e64 readline: don't cache the "keypress" listeners
it's not safe to since `removeAllListeners()` will detach the returned
Array from the stream instance if that's ever called by the user.
2012-06-14 17:26:50 -07:00
Reid Burke
c9a1b5d162 Fix #3425: removeAllListeners should delete array
When removeAllListeners is called, the listeners array
is deleted to maintain compatibility with v0.6.

Reverts "events: don't delete the listeners array"

This reverts commit 78dc13fbf9.

Conflicts:

	test/simple/test-event-emitter-remove-all-listeners.js
2012-06-14 17:26:50 -07:00
Bert Belder
13400e3e58 windows: make symlinks tolerant to forward slashes
Closes #3440
2012-06-15 01:37:24 +02:00
isaacs
412c1ab5bc Fix test-fs-realpath on Windows
Also, in the process, fix a bug in fs.realpath on Windows.

If the user has permission to create symlinks, then use symlinks.  If
not, then skip over all the tests that cannot be run using Junctions
instead.
2012-06-14 16:15:12 -07:00
danno@chromium.org
00247d53db Fix Kraken regression due to optimistic monomorphic element transitions
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10539141

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-15 00:40:35 +02:00
mstarzinger@chromium.org
c231321cd3 Fix assertion for map code cache of shared maps.
R=danno@chromium.org
TEST=mjsunit/compare-known-objects-slow

Review URL: https://chromiumcodereview.appspot.com/10548046

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-15 00:35:37 +02:00
Bert Belder
7f896889ba uv: upgrade to b1649b6f 2012-06-14 21:23:37 +02:00
isaacs
a0a5c4c5af doc: update v8-options in man page 2012-06-14 10:39:05 -07:00
isaacs
8bec3febd8 build: Add node.d and node.1 to installer 2012-06-14 10:39:05 -07:00
isaacs
f70fa3bae6 v8: Replace 'echo -n' with 'echo' in build commands 2012-06-14 10:11:55 -07:00
Bert Belder
58b8b3fa07 uv: upgrade to 5d5688f2 2012-06-14 18:36:49 +02:00
Bert Belder
ca003f4f3e license2rtf: collapse whitespace 2012-06-14 18:36:49 +02:00
Andreas Madsen
c2c08196d8 cluster: rename worker.unqiueID to worker.id 2012-06-14 09:32:56 -07:00
isaacs
dd85a8c183 Update message test for new v8 behavior 2012-06-14 08:37:44 -07:00
Bert Belder
34b0b6a613 test-bad-unicode: update to reflect V8 3.11 behavior 2012-06-14 16:06:53 +02:00
Igor Zinkovsky
39d2337859 Windows: don't fire GC ETW events without ETW consumers 2012-06-14 15:26:47 +02:00
Nathan Rajlich
05fe70b582 test: use the debug build of node-weak when necessary 2012-06-13 17:58:28 -07:00
Nathan Rajlich
c752f6c013 test: add a .gitignore file to ignore weak's compiled "build" dir 2012-06-13 17:58:28 -07:00
Bert Belder
511e328727 LICENSE: add node-weak 2012-06-14 02:52:57 +02:00
Bert Belder
4a1698c6ba LICENSE: punctuation fixes 2012-06-14 02:52:55 +02:00
yangguo@chromium.org
54b74b8e85 Remove faster ticks for debug mode.
This solves the problem that code runs very slow when the debugger is enabled.

BUG=v8:2179
TEST=

Review URL: https://chromiumcodereview.appspot.com/10544135

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 02:16:27 +02:00
Bert Belder
2701a6bd48 Unbreak the snapshotted build on Windows
The v8 team apparently decided that all build products should go
into ./build/«type», and updated their common.gypi file to do so.
Unfortunately v8's common.gypi is only used for some targets. All
the other targets would still look in the old place to find their
their dependencies, which effectively broke the build.

In the long run it would be good for node to send all build
output to ./build too, on all platforms.
2012-06-14 01:51:13 +02:00
Fedor Indutny
fac6c69456 v8: fix postmortem debugging tools build 2012-06-14 01:37:15 +02:00
Bert Belder
ac64c9e546 v8: reapply floating patches
Note that 26f754d9 ('fix error handling in SendConnectMessage') is no
longer necessary; it was properly fixed upstream in V8 r11609.
2012-06-14 01:37:14 +02:00
mstarzinger@chromium.org
48893af7bb Fix performance regression caused by r11202.
R=erik.corry@gmail.com
BUG=v8:2156,v8:2034
TEST=mjsunit/regress/regress-2156,mjsunit/regress/regress-2034

Review URL: https://chromiumcodereview.appspot.com/10539131

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11800 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 01:37:14 +02:00
Bert Belder
50464cd4f4 v8: upgrade to v3.11.10 2012-06-14 01:37:13 +02:00
Bert Belder
09be360a0f Inherited FDs should not accidentally be inherited by child processes
This makes test-child-process-detached pass on Windows.
2012-06-14 01:28:51 +02:00
Bert Belder
37d75ba241 uv: upgrade to 4d7f1e18 2012-06-14 01:27:31 +02:00
Bert Belder
029e01bb80 vcbuild.bat: add duplicate arg-ok label to work around cmd.exe bug 2012-06-14 00:56:43 +02:00
Nathan Rajlich
6a8b5b36b4 test: bundle node-weak in test/gc so that it doesn't need to be downloaded 2012-06-14 00:56:35 +02:00
Igor Zinkovsky
35a1421e96 Windows: Enable ETW events.
This commit enables ETW events to be fired on Windows for existing
DTrace probes.  ETW instrumentation is enabled by default.  It
is possible to build node.exe without ETW instrumentation by
using --without-etw option with configure script.
2012-06-13 15:36:08 -07:00
Bert Belder
74c8041fb6 test-child-process-spawn-loop: make it pass on Windows.
It wasn't waiting for the child process' stderr to close, so not an
assertion was made *before* all the data that the child process sent
was received by node.
2012-06-13 22:12:30 +02:00
isaacs
e733dc3bc3 Fix #3388 Support listening on file descriptors
This implements server.listen({ fd: <filedescriptor> }).  The fd should
refer to an underlying resource that is already bound and listening, and
causes the new server to also accept connections on it.

Not supported on Windows.  Raises ENOTSUP.
2012-06-13 12:24:45 -07:00
Bert Belder
0187b657ae Move resource files to src/res.
tools/msvs/res is not an appropriate place.
2012-06-13 17:40:50 +02:00
isaacs
a11bf99ce0 Fix #3407 os.tmpDir() 2012-06-12 19:08:47 -07:00
Bert Belder
0dba4ad0f9 tests: make all message tests pass on Windows 2012-06-13 03:02:53 +02:00
Bert Belder
5209dad907 test-net-timeout: make it pass on Windows
The test didn't take into account that some time might pass before
libuv makes close callbacks. This is now fixed.
2012-06-13 02:49:33 +02:00
Bert Belder
e4f4c63370 uv: upgrade to 9f44b0e3 2012-06-13 01:35:51 +02:00
Bert Belder
b866a96cfa test-child-process-kill: make it pass on windows
The test would fail if the child process writes anything to the stdout.
This doesn't happen on unix, since `cat` is spawned. However, on Windows
`cmd` is started, which *does* write stuff to it's stdout. This
meanlingless assert is now removed.
2012-06-12 23:30:57 +02:00
Bert Belder
10f85fadfe Fix child_process.kill oddities
* When the process is already dead, but the `exit` signal wasn't raised
  yet, the ESRCH error should be ignored.

* When an invalid signal is specified, kill() should throw.

* Like process.kill(), child_process.kill() now preserves a `0` signal
  which can be used to check the liveliness of the child process.

* process.kill() and child_process.kill() will now return true if the
  signal was actually delivered, and false otherwise.

* When an `exec`-ed process is automatically killed because a time or
  buffer limit is exceeded, and the kill() fails, this error should be
  reported through the `exec` callback.

Fixes: #3409
2012-06-12 23:30:56 +02:00
Bert Belder
b53b8b8ae7 test-exec: make it work on Windows 2012-06-12 23:30:54 +02:00
Ben Noordhuis
8963a5228d doc: update crypto cipher/decipher docs 2012-06-12 22:02:35 +02:00
Ben Noordhuis
900196e135 crypto: make cipher/decipher accept buffer args 2012-06-12 21:50:05 +02:00
Bert Belder
a55faeac18 uv: upgrade to b7e150ee 2012-06-12 19:54:56 +02:00
Bert Belder
cbeeea62cf Revert "uv: upgrade to b7e150ee"
Upgrade wasn't done correctly.
This reverts commit b615077bab.
2012-06-12 19:52:38 +02:00
Bert Belder
b615077bab uv: upgrade to b7e150ee 2012-06-12 17:06:54 +02:00
Ben Noordhuis
0385b17ce0 fs: fix infinite loop in fs.readFileSync()
Fix an infinite loop in the case where the file got truncated by a concurrent
writer while fs.readFileSync() was busy reading in the file.
2012-06-12 16:31:49 +02:00
Ben Noordhuis
408bfece51 fs: fix infinite loop in fs.readFile()
Fix an infinite loop in the case where the file got truncated by a concurrent
writer while fs.readFile() was busy reading in the file.
2012-06-12 16:31:44 +02:00
Bert Belder
bb2ce1a108 cluster: don't silently drop messages when the write queue gets big 2012-06-12 15:57:27 +02:00
Shigeki Ohtsu
e3a2dd1b13 fs: fix fs.readFileSync to work on real empty file 2012-06-12 15:02:39 +02:00
Shigeki Ohtsu
4eb2804db9 fs: fix typo in fs.readFile of lying size=0 stat 2012-06-12 15:02:39 +02:00
Bert Belder
517cea3636 test-net-connect-econnrefused: don't take forever to complete 2012-06-12 02:22:30 +02:00
Bert Belder
b27a4cbe2a test-module-loading: convert backslashes to forward slashes
This makes the test pass on Windows.
2012-06-12 02:04:44 +02:00
Bert Belder
094f742657 test-http-get-pipeline-problem: don't fail if there are stray files in the temp dir 2012-06-12 01:56:48 +02:00
Bert Belder
00ba1cbce1 test-net-write-slow: increase the socket timeout period
In Windows the callbacks arrive in slightly different order. A bunch
of write operations complete immediately, and after that there is a
gap of a few hundred ms. This causes the timeout timer to fire, which
is not really warranted; the first few write operations just finished a
little quicker than expected.
2012-06-12 01:43:45 +02:00
isaacs
6ce013dd4b fix fs.readFile with lying size=0 stat results 2012-06-11 15:54:28 -07:00
isaacs
d53cdc5378 Add Buffer.concat method
We write out this loop a lot of places throughout node.
It clearly needs to be an API method.
2012-06-11 15:51:23 -07:00
Bert Belder
cfa28690db cluster: don't silently drop messages when the write queue gets big 2012-06-11 23:46:17 +02:00
Bert Belder
2301eb69b1 v8: force inlining of v8::internal::DescriptorArray methods 2012-06-11 21:24:29 +02:00
yangguo@chromium.org
33be3016fb Force inlining CopyChars and String::Get.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10332054

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 21:24:27 +02:00
Charlie McConnell
2eb181d28c child_process: fix test implementation for options.detached 2012-06-11 10:27:51 -07:00
isaacs
25e8ea17e1 Do not gitignore npm's node_modules 2012-06-11 09:54:39 -07:00
isaacs
1358632e67 Remove auto-unref
cc: @AvianFlu @AndreasMadsen
2012-06-11 09:07:42 -07:00
isaacs
e9aa57e8bd Now working on 0.7.11 2012-06-11 08:58:33 -07:00
isaacs
4f235ef87f Merge branch 'v0.7.10-release' 2012-06-11 08:57:32 -07:00
isaacs
8d9766a9df 2012.06.11, Version 0.7.10 (unstable)
* Roll V8 back to 3.9.24.31

* build: x64 target should always pass -m64 (Robert Mustacchi)

* add NODE_EXTERN to node::Start (Joel Brandt)

* repl: Warn about running npm commands (isaacs)

* slab_allocator: fix crash in dtor if V8 is dead (Ben Noordhuis)

* slab_allocator: fix leak of Persistent handles (Shigeki Ohtsu)

* windows/msi: add node.js prompt to startmenu (Jeroen Janssen)

* windows/msi: fix adding node to PATH (Jeroen Janssen)

* windows/msi: add start menu links when installing (Jeroen Janssen)

* windows: don't install x64 version into the 'program files (x86)' folder (Matt Gollob)

* domain: Fix #3379 domain.intercept no longer passes error arg to cb (Marc Harter)

* fs: make callbacks run in global context (Ben Noordhuis)

* fs: enable fs.realpath on windows (isaacs)

* child_process: expose UV_PROCESS_DETACHED as options.detached (Charlie McConnell)

* child_process: new stdio API for .spawn() method (Fedor Indutny)

* child_process: spawn().ref() and spawn().unref() (Fedor Indutny)

* Upgrade npm to 1.1.25
- Enable npm link on windows
- Properly remove sh-shim on Windows
- Abstract out registry client and logger
2012-06-11 08:19:55 -07:00
isaacs
76f6a4abb4 Remove dep symlinks from tarball 2012-06-11 08:19:55 -07:00
Bert Belder
5432a1d985 process_wrap: set duplex flags when creating a pipe 2012-06-11 08:13:36 -07:00
isaacs
54a4f99c4e lint 2012-06-11 08:13:36 -07:00
isaacs
13198357e9 Upgrade npm to 1.1.25 2012-06-11 08:13:36 -07:00
Nuno Job
284816ee9f test: add test for bad unicode sequences
This was a regression in 0.7.9.
2012-06-09 20:30:16 +02:00
isaacs
65242abc3b Fix fs.realpath tests so that they actually run 2012-06-09 09:43:47 -07:00
isaacs
131a67e7ef Fix #3394 fs.realpath: Properly cache symlink targets 2012-06-09 09:43:47 -07:00
isaacs
424bca15c8 Fix fs.realpath to work on Windows
1. Make the isRoot check valid
2. Don't cache results based on dev/ino, since those are alwasy 0 on
windows.
2012-06-09 09:43:46 -07:00
isaacs
6332a4cf00 Expose posix realpath on windows as well 2012-06-09 09:43:46 -07:00
Andreas Madsen
60b45dcbb6 domain: document and test dispose event 2012-06-09 18:15:38 +02:00
Andreas Madsen
535e109a3a domain: run now return callback result
both domain.bind and domain.intercept act this way
2012-06-09 18:15:38 +02:00
Andreas Madsen
77cfbd9f2d domain: dry decorate using util._extend 2012-06-09 18:15:38 +02:00
Ben Noordhuis
26f754d9dd v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-06-09 08:10:03 -07:00
isaacs
c08357c32f v8: Floating patches 2012-06-09 08:09:58 -07:00
isaacs
940a6863ea Roll V8 back to 3.9.24.31 2012-06-09 08:09:42 -07:00
Marc Harter
569acea0ee Fix #3379 prevent domain.intercept passing 1st arg to cb 2012-06-08 23:32:13 -07:00
Charlie McConnell
4b021a3541 child_process: expose UV_PROCESS_DETACHED as options.detached 2012-06-08 22:57:22 -07:00
Bert Belder
5046f8501c Revert "Unbreak the Windows build"
It is not needed for v8 3.10, and actually breaks the build.
This reverts commit bd33fea732.
2012-06-08 20:46:34 +02:00
Robert Mustacchi
f62441367f x64 target should always pass -m64 2012-06-07 17:54:56 -07:00
isaacs
0435f9b28c v8: Don't use 'echo -n' in configure script 2012-06-07 17:54:22 -07:00
Bert Belder
bd33fea732 Unbreak the Windows build
The v8 team apparently decided that all build products should go
into ./build/«type», and updated their common.gypi file to do so.
Unfortunately v8's common.gypi is only used for some targets. All
the other targets would still look in the old place to find their
their dependencies, which effectively broke the build.

In the long run it would be good for node to send all build
output to ./build too, on all platforms.

Conflicts:

	deps/v8/build/common.gypi
2012-06-07 17:54:22 -07:00
Ben Noordhuis
1fb9cfcdb1 v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-06-07 17:54:21 -07:00
isaacs
43ff46becf v8: Floating patches 2012-06-07 17:54:21 -07:00
isaacs
46b09e4190 Roll V8 back to 3.10.8.13 2012-06-07 17:54:21 -07:00
Fedor Indutny
3116522e7c child_process: spawn().ref() and spawn().unref() 2012-06-07 23:20:56 +04:00
Bert Belder
f482236665 windows: don't print error when GetConsoleTitleW returns an empty string 2012-06-07 19:44:31 +02:00
isaacs
c45522df4c build: Prevent duplication of doc/api folder 2012-06-06 15:02:23 -07:00
isaacs
f9abf5e0e2 build: Prevent duplication of doc/api folder 2012-06-06 15:01:47 -07:00
Ben Noordhuis
463d6bac8b fs: make callbacks run in global context
Callbacks that were passed to the binding layer ran in the context of the
(internal) binding object. Make sure they run in the global context.

Before:

  fs.symlink('a', 'b', function() {
    console.log(this); // prints "{ oncomplete: [Function] }"
  });

After:

  fs.symlink('a', 'b', function() {
    console.log(this); // prints "{ <global object> }"
  });
2012-06-06 21:49:39 +02:00
Ben Noordhuis
c381662cac fs: make fs.symlink() with no callback async
Fix a bug where fs.symlink('foo', 'bar') executed symlink(2) synchronously.
2012-06-06 21:08:38 +02:00
isaacs
1285cd9011 Now working on 0.6.20 2012-06-06 09:58:46 -07:00
isaacs
79d77cfd81 Merge branch 'v0.6.19-release' into v0.6 2012-06-06 09:58:24 -07:00
Joel Brandt
b9c5eee7d9 add NODE_EXTERN to node::Start 2012-06-06 05:31:09 +02:00
Ben Noordhuis
5f41140535 deps: upgrade libuv to 649ad50 2012-06-06 05:31:08 +02:00
isaacs
debf552ed2 2012.06.06 Version 0.6.19 (stable)
* npm: upgrade to 1.1.24

* fs: no end emit after createReadStream.pause() (Andreas Madsen)

* vm: cleanup module memory leakage (Marcel Laverdet)

* unix: fix loop starvation under high network load (Ben Noordhuis)

* unix: remove abort() in ev_unref() (Ben Noordhuis)

* windows/tty: never report error after forcibly aborting line-buffered read (Bert Belder)

* windows: skip GetFileAttributes call when opening a file (Bert Belder)
2012-06-05 17:46:27 -07:00
isaacs
e5d3ea7771 Upgrade npm to 1.1.24 2012-06-05 17:46:27 -07:00
isaacs
28e851c169 Warn about running npm in the repl 2012-06-05 12:35:49 -07:00
Nathan Rajlich
c69d7f1a6c test: make the node-weak install build agaist this repo
This prevents node-gyp from attempting to download dev header files from
nodejs.org. Instead, the files in this repo will be used to build the module.
2012-06-05 10:25:39 -07:00
Ben Noordhuis
cb76999bad deps: upgrade libuv to 06e0319 2012-06-05 17:07:43 +02:00
Ben Noordhuis
0a2076b26a deps: upgrade libuv to c8c9fe1 2012-06-05 16:48:17 +02:00
Ben Noordhuis
27061cc9f4 udp_wrap, stream_wrap: lazy init slab allocator
Create slab allocator when binding is initialized.

Add an AtExit handler to destroy the slab before the VM shuts down, it can't be
disposed when V8 is dead and Valgrind will complain about memory leaks.
2012-06-05 16:48:17 +02:00
Ben Noordhuis
cc0e7efb37 slab_allocator: fix crash in dtor if V8 is dead
Don't try to dispose the persistent handles if the VM is already dead, it
triggers an assertion inside V8.
2012-06-05 16:27:57 +02:00
Shigeki Ohtsu
208d1715a7 slab_allocator: fix leak of Persistent handles 2012-06-05 15:45:08 +02:00
koichik
0742f5629c Revert "punycode: Update to v1.0.0"
This reverts commit 483edbdf1a.
Fixes #3359.
2012-06-05 22:10:37 +09:00
isaacs
b9e40fbaac Upgrade npm to 1.1.24 2012-06-04 17:32:59 -07:00
isaacs
cc36cc5999 build: Don't clobber symlinked npm 2012-06-04 17:32:59 -07:00
Bert Belder
4f6882e898 windows/msi: minor installer tweaks 2012-06-04 21:39:58 +02:00
Jeroen Janssen
01432403af windows/msi: add node.js prompt to startmenu 2012-06-04 21:39:51 +02:00
isaacs
04e484c484 v8: Don't use 'echo -n' in configure script 2012-06-04 11:10:31 -07:00
Ben Noordhuis
f0a561fe67 net: rename flag FLAG_SHUTDOWNQUED 2012-06-04 15:02:09 +02:00
Jeroen Janssen
7161ecd31b windows/msi: fix adding node to PATH
Closes #3366
2012-06-04 14:16:39 +02:00
Bert Belder
0699f5bfb4 Improve child process stdio documentation 2012-06-04 14:12:59 +02:00
Jeroen Janssen
943448772e windows/msi: add start menu links when installing 2012-06-03 00:45:39 +02:00
Jeroen Janssen
e2126e05e7 windows/msi: cleanup WiX project files
The current WiX project files do some manual processing and generation
which WiX supports doing out of the box. This patch will use the
HeatDirectory task to generate the npm.wxs file and use the auto GUID
generation. I also changed the msi filename generation to include the
version number to match the currently used name for released msi files.

Closes #3360
2012-06-02 18:39:41 +02:00
Bert Belder
3b6a00b664 Unbreak the Windows build
The v8 team apparently decided that all build products should go
into ./build/«type», and updated their common.gypi file to do so.
Unfortunately v8's common.gypi is only used for some targets. All
the other targets would still look in the old place to find their
their dependencies, which effectively broke the build.

In the long run it would be good for node to send all build
output to ./build too, on all platforms.
2012-06-02 16:06:00 +02:00
isaacs
e0f5d8e86d test: v8 stack trace messages changed slightly 2012-06-01 22:31:05 -07:00
Ben Noordhuis
eabf3c8d0f v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-06-01 22:31:04 -07:00
isaacs
7946ad2634 v8: Floating patches 2012-06-01 22:31:04 -07:00
isaacs
cbdf3393a2 Upgrade v8 to 3.11.7 2012-06-01 22:31:04 -07:00
Fedor Indutny
0262b6d2a5 child_process: new stdio API for .spawn() method 2012-06-02 12:12:48 +07:00
Simon Sturmer
9a998d5e24 http: don't lowercase http req header until later
Don't lowercase the request header until we're in the _addHeaderLine method,
makes it easier to intercept the raw request headers.
2012-06-02 03:07:43 +02:00
Matt Gollob
9fe39ede9f windows: don't install x64 version into the 'program files (x86)' folder
* Update nodemsi.sln and .wixproj to include support for x64 platform
  - Add ProgramFilesFolderId to the DefineConstants property for each
    configuration/platform's property group with the appropriate value
    (ProgramFilesFolder for x86 builds, ProgramFiles64Folder for x64
    builds)

* Update product.wxs:
  - update the Id value for the "Program Files" Directory element to
    use a preprocessor constant.
  - remove hard-coded platform from the Package element.  MSI platform
    will be automatically detected based on MSBuild's Platform property.
    (This was already supported in the Wix MSBuild targets, we just
    weren't taking advantage of it.)

*  Update vcbuild.bat to set MSBuild's Platform property appropriately,
   defaulting to x86 if not explicitly supplied by the user. Note that
   creating an x64 build requires that vcbuild.bat be run from a VS
   64-bit command prompt.

Closes #3312
Closes #3356
2012-06-02 02:18:09 +02:00
Bert Belder
8a52a16847 windows: add icon to node.exe
The icon could definitely be nicer, patches welcome.
Credits to Nathan Rajlich for putting together this one.
2012-06-02 02:01:57 +02:00
isaacs
434404e3bb website: Add nodejs.es to localized sites 2012-06-01 10:21:02 -07:00
Fedor Indutny
af98fc9d5f child_process: new stdio API for .spawn() method 2012-06-01 20:52:13 +04:00
Bert Belder
30a0e58d63 uv: upgrade to 87dbffbd 2012-06-01 20:19:42 +04:00
Erwin van der Koogh
ccc854d14e doc: remove all references to setsid
Fixes #2299.
2012-05-31 15:38:05 +02:00
Ben Noordhuis
b337577cf1 test: update pummel/test-exec
ChildProcess.prototype._internal is called ChildProcess.prototype._handle now.
2012-05-31 01:46:56 +02:00
isaacs
dc8b488bbe Now working on 0.7.10 2012-05-29 10:08:24 -07:00
isaacs
a9e40281e7 Merge branch 'v0.7.9-release' 2012-05-29 10:07:44 -07:00
Fedor Indutny
761e0c460a deps: upgrade libuv to 7556590 2012-05-29 18:26:40 +04:00
Andreas Madsen
2ae9b69871 fs: no end emit after createReadStream.pause()
In case a fd option is given to fs.createReadStream a read will instantly
happen. But in the edge case where fd point to an empty file and .pause()
was executed instantly, the end event would emit since no async wait was
between fs.createReadStream and the file read there emits end.

This is a cherry-pick of commit 1f3e4a7 into the v0.6 branch.
2012-05-29 15:34:01 +02:00
Ben Noordhuis
fa9aa1c961 net: fix 'close' event emit order
The server 'close' event was emitted before the last client 'close' event. Not
exactly fatal but potentially confusing.

Before this commit the order looked something like [client, server, client],
now it looks like [client, client, server].

See #3340 for more details.
2012-05-29 13:05:51 +02:00
isaacs
782277f11a 2012.05.28, Version 0.7.9 (unstable)
* Upgrade V8 to 3.11.1

* Upgrade npm to 1.1.23

* uv: rework reference counting scheme (Ben Noordhuis)

* uv: add interface for joining external event loops (Bert Belder)

* repl, readline: Handle Ctrl+Z and SIGCONT better (Nathan Rajlich)

* fs: 64bit offsets for fs calls (Igor Zinkovsky)

* fs: add sync open flags 'rs' and 'rs+' (Kevin Bowman)

* windows: enable creating directory junctions with fs.symlink (Igor Zinkovsky, Bert Belder)

* windows: fix fs.lstat to properly detect symlinks. (Igor Zinkovsky)

* Fix #3270 Escape url.parse delims (isaacs)

* http: make http.get() accept a URL (Adam Malcontenti-Wilson)

* Cleanup vm module memory leakage (Marcel Laverdet)

* Optimize writing strings with Socket.write (Bert Belder)

* add support for CESU-8 and UTF-16LE encodings (koichik)

* path: add path.sep to get the path separator. (Yi, EungJun)

* net, http: add backlog parameter to .listen() (Erik Dubbelboer)

* debugger: support mirroring Date objects (Fedor Indutny)

* addon: add AtExit() function (Ben Noordhuis)

* net: signal localAddress bind failure in connect (Brian Schroeder)

* util: handle non-string return value in .inspect() (Alex Kocharin)
2012-05-28 20:03:03 -07:00
isaacs
8a411bae66 Revert "tests: kill process group on failure"
This reverts commit 0cebfc8ddb.
2012-05-28 20:02:49 -07:00
isaacs
719376730d upgrade npm to 1.1.23
This also upgrades node-gyp to 0.4.3
2012-05-28 20:02:39 -07:00
Ben Noordhuis
0bd410a66a deps: cherry-pick libuv commit 4690204
libuv cannot be upgraded right now (API change in upstream libuv) but this
commit fixes a segmentation fault on SunOS systems, hence the cherry-pick.
2012-05-28 22:10:38 +00:00
Shigeki Ohtsu
f721d02c8a http: fix duplicated variable declaration 2012-05-28 23:26:02 +02:00
Maciej Małecki
c96df0e37a stream: don't call cleanup twice on end and close 2012-05-28 01:35:36 +02:00
Ben Noordhuis
0fd2834539 deps: upgrade libuv to 2ec0986 2012-05-28 00:32:16 +02:00
Andreas Madsen
1f3e4a76f9 fs: no end emit after createReadStream.pause()
In case a fd option is given to fs.createReadStream a read will instantly
happen. But in the edge case where fd point to an empty file and .pause()
was executed instantly, the end event would emit since no async wait was
between fs.createReadStream and the file read there emits end.
2012-05-27 20:00:19 +02:00
Jeroen Janssen
82bcdbb8aa doc: add npm search to appendix
Fixes #3327.
2012-05-26 19:41:37 +09:00
Jeroen Janssen
1fc2c3823c doc: updated JavaScript casing where relevant
Fixes #3326.
2012-05-26 19:34:13 +09:00
Ben Noordhuis
578f69bcf4 deps: upgrade libuv to 28766dc 2012-05-25 14:02:35 +02:00
Ben Noordhuis
5ff2ae8389 bench: start a worker for each CPU 2012-05-25 00:35:10 +02:00
Ben Noordhuis
7535e3930a bench: add http_simple_auto benchmark
Starts a server and benchmarks it with ab.
2012-05-25 00:35:07 +02:00
isaacs
24de89bd0e Upgrade uv to 604802a 2012-05-24 14:26:32 -07:00
Igor Zinkovsky
b4ed3c1969 remove NODE_USE_64BIT_UV_FS_API 2012-05-24 11:49:51 -07:00
Jeroen Janssen
66e12dbd69 doc: update possible values for process.platform 2012-05-24 18:55:08 +02:00
Ben Noordhuis
078763a94c test: update addons .gitignore 2012-05-24 14:07:09 +02:00
Igor Zinkovsky
39e25528eb windows: enable creating directory junctions with fs.symlink 2012-05-24 01:15:15 -07:00
Mathias Bynens
a2fcc47772 doc: add punycode.js documentation 2012-05-23 04:04:12 +02:00
Jeroen Janssen
f079c0bd9f doc: process get/setuid and get/setgid are POSIX only
Fixes #3302
2012-05-23 04:01:45 +02:00
Ben Noordhuis
1358bac6d1 deps: upgrade libuv to 5b9c451 2012-05-23 04:01:19 +02:00
Igor Zinkovsky
dff467d982 update uv to 2df831723fad25d2d97b824b2e52c65082af2723 2012-05-22 16:49:19 -07:00
Igor Zinkovsky
6e435da7f9 remove race from test-child-process-fork-exec-argv test 2012-05-22 13:59:40 -07:00
Ben Noordhuis
0888cdd412 test: fix bad comment 2012-05-22 16:14:30 +02:00
Ben Noordhuis
989ae81c71 test: fix simple/test-process-active-wraps
Said test relies a great deal on internals and implementation details (I should
know, I wrote it). Patch it up to work with libuv's new refcounting scheme.
2012-05-22 16:14:30 +02:00
Ben Noordhuis
039fac633e deps: upgrade libuv to a478847
The event loop's reference counting scheme in this version of libuv has changed.
Update the libuv bindings to reflect that fact.
2012-05-22 16:14:24 +02:00
Nathan Rajlich
a608f65b24 repl: preserve the cursor when redisplaying the prompt on SIGCONT
Otherwise the cursor position was being reset to 0, even when there was
already part of a line, which was strange.

Part of #3295.
2012-05-21 21:09:46 -03:00
Nathan Rajlich
3f69c71157 readline: explicitly disable and re-enable "raw mode" on Ctrl+Z
Fixes #3295.
2012-05-21 21:09:46 -03:00
Nathan Rajlich
2b9967fbcc readline: move the "setRawMode" logic into a private function 2012-05-21 21:09:46 -03:00
Oleg Efimov
45de259b43 Make UNWRAP macro generic. 2012-05-21 23:29:06 +02:00
Andreas Madsen
81a4edcf6a cluster: remove NODE_UNIQUE_ID from env on startup
In case a worker would spawn a new subprocess with process.env, NODE_UNIQUE_ID
would have been a part of the env. Making the new subprocess believe it is a
worker, this would result in some confusion if the subprocess where to listen to
a port, since the server handle request would then be relayed to the worker.

This patch removes the NODE_UNIQUE_ID flag from process.env on startup so any
subprocess spawned by a worker is a normal process with no cluster stuff.
2012-05-21 23:27:44 +02:00
Oleg Efimov
968b49ba0a Check for tabs in source line in DisplayExceptionLine
Fix for joyent/node#3280
2012-05-21 18:30:16 +02:00
Marcel Laverdet
7865c5c51d vm: cleanup module memory leakage
There are some paths here that led to dangling contexts. By being smarter with
handle management we can get rid of all the cleanup code and fix those issues.

This is a backport of commit 7063575.
2012-05-21 01:30:58 +02:00
Ben Noordhuis
ca642b020d test: add http 'data after timeout' test
See #3234. TDB if this is or is not the desired behavior.
2012-05-21 00:31:28 +02:00
isaacs
75670d3f63 test: wait for 'close' event for stdout
At the 'exit' event, it is sometimes not done writing to stdout.
2012-05-20 09:40:10 -03:00
isaacs
d0c010e39b test: root can connect to chmod'd pipes 2012-05-20 09:24:47 -03:00
isaacs
b48f7f7eac test: Solaris is not as granular with rename fs watch events 2012-05-20 00:17:18 -03:00
Andreas Madsen
a039bad299 fs.watch should not require a listener arguments
Since fs.watch returns an event emitter where the change event is exactly
the same as the listener callback, the argument should be required
2012-05-19 18:58:28 -03:00
Ben Noordhuis
18b94ea838 doc: improve fs.open() docs 2012-05-17 06:18:25 +02:00
Kevin Bowman
ccc4e547ea doc: document fs 'rs+' open mode 2012-05-17 06:05:33 +02:00
isaacs
1a2255ab44 Faster fs.readFile and fs.readFileSync 2012-05-16 20:04:44 -07:00
isaacs
ee6c11876a benchmark for fs.readfile 2012-05-16 20:04:44 -07:00
isaacs
a3753b496e Revert "Fix #3242 Actually deprecate 'binary' buffer encoding"
This reverts commit 5979f096d1.

Related:
- #3279
- #3278
2012-05-16 16:32:37 -07:00
isaacs
9fc7283a40 Fix #3270 Escape url.parse delims
Rather than omitting them.
2012-05-16 15:41:28 -07:00
isaacs
c393853b4e build: Set strict_aliasing on SunOS always
A build failure was introduced on c9676c9147
in SmartOS systems.  This makes it build properly.
2012-05-16 14:49:51 -07:00
isaacs
564172510d Revert "test: stack overflow output"
This reverts commit f8519e10b8.

Recent update to V8 fixes the problem where it incorrectly reports the
line number as 0 for thrown RangeErrors.
2012-05-16 14:44:15 -07:00
isaacs
3b95d88bf2 v8: s/echo -n/echo/. Not all sh's are bash. 2012-05-16 14:22:57 -07:00
isaacs
2cca7488bf Patches floating on V8 2012-05-16 14:22:57 -07:00
isaacs
3f3f958c14 Upgrade V8 to 3.11.1 2012-05-16 14:22:33 -07:00
Adam Malcontenti-Wilson
4099d1eeba http: make http.get() accept a URL
http.get() now accepts either a URL (as a string) or an options object.
2012-05-16 16:43:18 +02:00
Ben Noordhuis
05b81f333c doc: clarify stream 'close' event 2012-05-16 16:08:18 +02:00
isaacs
1665b4a2a3 lint 2012-05-15 18:04:43 -07:00
Kevin Bowman
dfcdd5b8aa fs: add sync open flags 'rs' and 'rs+' 2012-05-16 00:14:46 +02:00
isaacs
643f00d3f9 Merge branch 'master' into v0.6-merge
Conflicts:
	src/node.cc
2012-05-15 14:21:22 -07:00
isaacs
faa4d9ff5f Re-apply http fixes from v0.6 branch properly 2012-05-15 14:19:46 -07:00
Sadique Ali
c9676c9147 build: improve c compiler detection 2012-05-15 22:51:17 +02:00
Ben Noordhuis
9ae6d8fee3 http: fix client request.end() EPIPE race
request.end() would sometimes try to write a zero-length buffer to the socket.
Don't do that, it triggers an unnecessary EPIPE when the other end has closed
the connection.

Fixes #3257.
2012-05-15 22:05:36 +02:00
isaacs
f8519e10b8 test: stack overflow output 2012-05-15 13:03:56 -07:00
isaacs
9611354f08 lint 2012-05-15 13:03:43 -07:00
Ben Noordhuis
e813e3491e node: make _getActiveHandles() return user objects
Before this commit, process._getActiveHandles() returned a list of internal
handles. Now, it returns the user objects that handles are attached to.

For example, a tcp_wrap handle will now return its parent net.Socket object.

It works for all handle types except timers because timer handles are shared
across multiple user objects.
2012-05-15 21:01:36 +02:00
Ben Noordhuis
88d7a10128 test: verify that connect reqs are cleaned up 2012-05-15 21:00:27 +02:00
Ben Noordhuis
5f0406534c process: add _getActiveHandles(), _getActiveRequests()
* process._getActiveHandles() returns a list containing all active handles
  (timers, sockets, etc.) that have not been unref'd.

* process._getActiveRequests() returns a list of active requests (in-flight
  actions like connecting to a remote host, writing data to a socket, etc.).
2012-05-15 21:00:27 +02:00
Ben Noordhuis
636add246c req_wrap: share process_symbol, domain_symbol
Share persistent strings process_symbol and domain_symbol across compilation
units. Avoids redefinition errors when src/node.cc includes src/req_wrap.h.
2012-05-15 20:59:43 +02:00
isaacs
5164ae3838 Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	ChangeLog
	deps/uv/include/uv-private/uv-unix.h
	deps/uv/src/unix/core.c
	deps/uv/src/unix/sunos.c
	deps/v8/src/runtime.cc
	doc/api/crypto.markdown
	lib/http.js
	src/node_version.h
	test/gc/test-http-client-timeout.js
	wscript
2012-05-15 11:37:34 -07:00
isaacs
01103d077b Guard against emitting 'end' twice on http responses
Conflicts:

	lib/http.js
2012-05-15 11:29:32 -07:00
isaacs
a98e845516 Break up huge function in ClientRequest.onSocket
Conflicts:

	lib/http.js
2012-05-15 11:26:47 -07:00
isaacs
f19f980724 Now working on 0.6.19 2012-05-15 10:21:57 -07:00
isaacs
2498d15dde Merge branch 'v0.6.18-release' into v0.6 2012-05-15 10:21:40 -07:00
Ben Noordhuis
a3908f47f1 child_process: hook up handle wrap to owning object 2012-05-15 16:59:01 +02:00
Ben Noordhuis
4ec77e2e28 child_process: rename field _internal to _handle
Consistent with how other classes that are built around HandleWraps call it.
2012-05-15 16:59:01 +02:00
Ben Noordhuis
f66f793c07 net: hook up handle wrap to owning object 2012-05-15 16:59:00 +02:00
Ben Noordhuis
25aea2a072 fs: hook up handle wrap to owning object 2012-05-15 16:56:49 +02:00
Ben Noordhuis
d2eaabd0df dgram: hook up handle wrap to owning object 2012-05-15 16:56:48 +02:00
Andreas Madsen
dceebbfa31 child_process: allow sending a net Socket and Server object using child.send
child_process.fork() support sending native hander object, this patch add support for sending
net.Server and net.Socket object by converting the object to a native handle object and back
to a useful object again.

Note when sending a Socket there was emitted by a net Server object, the server.connections
property becomes null, because it is no longer possible to known when it is destroyed.
2012-05-14 07:47:52 -07:00
Andreas Madsen
49f16c4575 doc: move child.send details from child_process.fork to child.send 2012-05-14 07:47:52 -07:00
rsolomo
d40415912f net: make isIP() return 0 on empty input 2012-05-14 16:09:04 +02:00
Nathan Rajlich
38542f76a9 buffer: make SlowBuffer inherit from Buffer
This frees us from manually having to copy over functions to SlowBuffer's
prototype (which has bitten us multiple times in the past).

As an added bonus, the `inspect()` function is now shared between Buffer
and SlowBuffer, removing some duplicate code.

Closes #3228.
2012-05-11 17:27:40 -07:00
isaacs
a811a4a130 Fix #3058 querystring: Fix incorrect handling of empty keys 2012-05-11 08:49:03 -07:00
Ben Noordhuis
12fc9fa8a7 test: add failing dgram refcount test
Idle UDP sockets (reading nor writing) should not keep the event loop alive.
This will get fixed in v0.8 one way or the other.
2012-05-11 04:39:23 +02:00
Ben Noordhuis
68f63fe9ec child_process: make copy of options arg
Make a copy of the options object that the user passes in, we modify it.
2012-05-10 16:54:19 +02:00
Ben Noordhuis
928d28a7b3 util: make _extend() more robust
Add a better 'is object?' check, the old one let values like true slip through.
2012-05-10 16:49:37 +02:00
isaacs
07be9fc3a6 Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	Makefile
	lib/zlib.js
	src/node.cc
	src/node.js
2012-05-09 15:12:13 -07:00
isaacs
5979f096d1 Fix #3242 Actually deprecate 'binary' buffer encoding 2012-05-09 10:08:54 -07:00
Alex Kocharin
e85927119c util: handle non-string return value in .inspect() 2012-05-09 16:44:44 +02:00
Ben Noordhuis
7d2e68fdbd stream_wrap: fix compilation errors 2012-05-09 06:06:42 +02:00
Bert Belder
b673d0670f Net.js: fix UCS2 write crash due to inconsistent naming 2012-05-09 04:58:26 +02:00
Bert Belder
4624cf1214 stream_wrap.cc: fix typo 2012-05-09 04:34:41 +02:00
Bert Belder
27ddd14e9f net.js: make Socket.bytesWritten work again
Earlier string write optimizations broke it.
2012-05-09 04:00:07 +02:00
Bert Belder
726ebad9bc StreamWrap::WriteBuffer: remove superfluous arguments 2012-05-09 04:00:02 +02:00
Bert Belder
0e57aafbb1 Optimize writing strings with Socket.write 2012-05-09 03:56:19 +02:00
Bert Belder
4ddafbd563 Benchmark: add /unicode/nnn bench to http_simple.js 2012-05-09 03:56:09 +02:00
Bert Belder
7f68f256cf Benchmark: clean up http_simple.js 2012-05-09 03:56:07 +02:00
Bert Belder
bb675baaa9 net.js: don't pretend that everything is okay when unwrapping fails
In case of an UNWRAP failure, the binding returns -1, which is truthy.
2012-05-09 03:56:06 +02:00
yangguo@chromium.org
29b2fdb0c5 Force inlining CopyChars and String::Get.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10332054

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-09 03:56:04 +02:00
Ben Noordhuis
78e831a31c Don't use _snprintf() on Windows, it's not safe.
_snprintf() doesn't zero-terminate the buffer on overflow. Use the hand-rolled
version that lives in src/node_internals.h.
2012-05-08 16:02:14 +02:00
Kevin Gadd
1eb9fc5f33 docs: add warning to vm module docs
Add a clear warning about known issues with the module and a pointer to the
GitHub issues list for the module. Describe some of the biggest known issues
with the module.
2012-05-07 21:39:08 +02:00
James Koval
34f05a3195 docs: update var names in readline docs to be consistent
Closes #3201.
2012-05-06 11:23:09 -07:00
isaacs
33a9ac6087 Upgrade npm to 1.1.21
Somehow this got downgraded in the last v0.6 merge.  Very strange.
2012-05-05 22:33:12 -07:00
isaacs
1858d1c340 Document http.STATUS_CODES
This is an incredibly useful thing to know about, and it
will likely never change.  I can't remember why we
didn't ever document it, and people keep suggesting we
do so.
2012-05-05 19:27:42 -07:00
isaacs
3d84c3db25 More cluster event consistency
Regarding discussion in #3198.  Passing the worker as an argument
to an event emitted on the worker is redundant, and an unnecessary
break in consistency vs the events on the ChildProcess objects.

It was removed from 'exit', but 'listening' and others were
overlooked.  This corrects that oversight.
2012-05-05 15:20:10 -07:00
isaacs
1930772693 Move test-fs-largefile into pummel
It's too slow.
2012-05-05 15:05:14 -07:00
Javier Hernández
792d9a921d build: print error message if no compiler found
Make the configure script warn the user about the lack of an acceptable
C compiler on the system.
2012-05-05 16:31:27 +02:00
koichik
9f3c639a9c doc: fix setEncoding()
Fixes #3209.
2012-05-05 23:10:36 +09:00
koichik
40c4beeb57 string_decoder: added support for UTF-16LE
Fixes #3223.
2012-05-05 22:47:24 +09:00
Mark Cavage
5871c81181 Add HTTP Status codes from RFC 6585
See: http://tools.ietf.org/html/rfc6585
2012-05-04 21:51:24 -07:00
koichik
ceb51ddaa1 string_decoder: add support for CESU-8
Fixes #3217.
2012-05-05 12:24:01 +09:00
isaacs
eaf607e88b test: No need for weak in 'make test' 2012-05-04 18:30:38 -07:00
J. Lee Coltrane
a62dd44b20 cluster: worker exit event to match child_process
test: fixes due to new cluster api.

- changed worker `death` to `exit`.
- corrected argument type expected by worker `exit` handler.

test: more tests of cluster.worker death

cluster: fixed arguments on worker 'exit' event

worker 'exit' event now emits arguments consistent with the
corresponding event in child_process module.
2012-05-04 17:28:21 -07:00
isaacs
c1bf810108 Merge branch 'v0.6-merge' 2012-05-04 17:24:30 -07:00
isaacs
cd8f82c007 Fix incorrect merge choices 2012-05-04 17:24:21 -07:00
Brian Schroeder
436a9b69f3 net: signal localAddress bind failure in connect 2012-05-05 01:30:32 +02:00
Marcel Laverdet
c33d3174b8 node: un-revert 9a6012e
The crashes in debug mode after adding Locker are *not* caused by
Locker. Locker is merely exposing issues that already existed. Some of
these issues have since been fixed in 70635753.

This reverts commit 407181538b.
This reapplies commit 9a6012edd9.

Conflicts:
	src/node.cc
2012-05-05 00:56:17 +02:00
isaacs
01d146c29f Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	ChangeLog
	Makefile
	deps/npm/AUTHORS
	deps/npm/html/api/bin.html
	deps/npm/html/api/bugs.html
	deps/npm/html/api/commands.html
	deps/npm/html/api/config.html
	deps/npm/html/api/deprecate.html
	deps/npm/html/api/docs.html
	deps/npm/html/api/edit.html
	deps/npm/html/api/explore.html
	deps/npm/html/api/help-search.html
	deps/npm/html/api/init.html
	deps/npm/html/api/install.html
	deps/npm/html/api/link.html
	deps/npm/html/api/load.html
	deps/npm/html/api/ls.html
	deps/npm/html/api/npm.html
	deps/npm/html/api/outdated.html
	deps/npm/html/api/owner.html
	deps/npm/html/api/pack.html
	deps/npm/html/api/prefix.html
	deps/npm/html/api/prune.html
	deps/npm/html/api/publish.html
	deps/npm/html/api/rebuild.html
	deps/npm/html/api/restart.html
	deps/npm/html/api/root.html
	deps/npm/html/api/run-script.html
	deps/npm/html/api/search.html
	deps/npm/html/api/shrinkwrap.html
	deps/npm/html/api/start.html
	deps/npm/html/api/stop.html
	deps/npm/html/api/submodule.html
	deps/npm/html/api/tag.html
	deps/npm/html/api/test.html
	deps/npm/html/api/uninstall.html
	deps/npm/html/api/unpublish.html
	deps/npm/html/api/update.html
	deps/npm/html/api/version.html
	deps/npm/html/api/view.html
	deps/npm/html/api/whoami.html
	deps/npm/html/doc/README.html
	deps/npm/html/doc/adduser.html
	deps/npm/html/doc/bin.html
	deps/npm/html/doc/bugs.html
	deps/npm/html/doc/build.html
	deps/npm/html/doc/bundle.html
	deps/npm/html/doc/cache.html
	deps/npm/html/doc/changelog.html
	deps/npm/html/doc/coding-style.html
	deps/npm/html/doc/completion.html
	deps/npm/html/doc/config.html
	deps/npm/html/doc/deprecate.html
	deps/npm/html/doc/developers.html
	deps/npm/html/doc/disputes.html
	deps/npm/html/doc/docs.html
	deps/npm/html/doc/edit.html
	deps/npm/html/doc/explore.html
	deps/npm/html/doc/faq.html
	deps/npm/html/doc/folders.html
	deps/npm/html/doc/help-search.html
	deps/npm/html/doc/help.html
	deps/npm/html/doc/index.html
	deps/npm/html/doc/init.html
	deps/npm/html/doc/install.html
	deps/npm/html/doc/json.html
	deps/npm/html/doc/link.html
	deps/npm/html/doc/list.html
	deps/npm/html/doc/npm.html
	deps/npm/html/doc/outdated.html
	deps/npm/html/doc/owner.html
	deps/npm/html/doc/pack.html
	deps/npm/html/doc/prefix.html
	deps/npm/html/doc/prune.html
	deps/npm/html/doc/publish.html
	deps/npm/html/doc/rebuild.html
	deps/npm/html/doc/registry.html
	deps/npm/html/doc/removing-npm.html
	deps/npm/html/doc/restart.html
	deps/npm/html/doc/root.html
	deps/npm/html/doc/run-script.html
	deps/npm/html/doc/scripts.html
	deps/npm/html/doc/search.html
	deps/npm/html/doc/semver.html
	deps/npm/html/doc/shrinkwrap.html
	deps/npm/html/doc/star.html
	deps/npm/html/doc/start.html
	deps/npm/html/doc/stop.html
	deps/npm/html/doc/submodule.html
	deps/npm/html/doc/tag.html
	deps/npm/html/doc/test.html
	deps/npm/html/doc/uninstall.html
	deps/npm/html/doc/unpublish.html
	deps/npm/html/doc/update.html
	deps/npm/html/doc/version.html
	deps/npm/html/doc/view.html
	deps/npm/html/doc/whoami.html
	deps/npm/man/man1/npm.1
	deps/npm/man/man3/npm.3
	deps/npm/package.json
	doc/api/url.markdown
	lib/http.js
	src/node_version.h
	test/simple/test-fs-sync-fd-leak.js
2012-05-04 15:12:47 -07:00
isaacs
1de43149bb http: Clean up parser usage
Move parsers.free(parser) to a single function, which also
nulls all of the various references we hang on them.

Also, move the parser.on* methods out of the closure, so that
there's one shared definition of each, instead of re-defining
for each parser in a spot where they can close over references
to other request-specific objects.

Conflicts:

	lib/http.js
2012-05-04 14:58:30 -07:00
isaacs
a9fc63f7a1 Clean up gc tests
This fixes the additional issues brought up in #3179.
2012-05-04 14:31:13 -07:00
isaacs
0abe42a0f4 http: .once() usage in setTimeout 2012-05-04 14:31:08 -07:00
isaacs
e63c7821d5 Tests for memory leaks
Conflicts:

	Makefile
2012-05-04 14:30:54 -07:00
isaacs
e4dd8dc28e http leak: Null links from parser to req/res 2012-05-04 14:27:47 -07:00
vvo
5eac8d6739 Fix #3179 HTTP memory leak using ClientRequest. 2012-05-04 14:27:41 -07:00
isaacs
2f93eb6102 http client: Destroy on timeout 2012-05-04 14:27:35 -07:00
isaacs
0a414f4caa http: Remove socket ondata/onend in parser cleanup 2012-05-04 14:27:30 -07:00
isaacs
9164fa6aaa Null references to request object on socket errors.
Regarding #3199 and #3179 and issues seen in production.
Hopefully this fixes them.
2012-05-04 14:27:24 -07:00
koichik
ebbd4039bc buffer: add UTF-16LE encoding name. 2012-05-03 23:56:17 +09:00
Ben Noordhuis
e4a8d2617b addon: add AtExit() function
Lets native addons register exit hooks that run after the event loop has quit
but before the VM is killed.

Fixes #3147.
2012-05-03 16:11:42 +02:00
Igor Zinkovsky
6f82b9f482 64bit offsets for fs calls 2012-05-02 22:39:23 -07:00
Ben Noordhuis
4e290e48b2 fs: fix file descriptor leak in sync functions
Fixes #3202.
2012-05-03 01:08:46 +02:00
Ben Noordhuis
6b426a2edd Revert "v8: fix "pure virtual method called" runtime error"
It makes mksnapshot die with a segmentation fault on sunos with gcc 4.5.2.

This reverts commit c21c51a6fc.
2012-05-02 22:53:45 +00:00
Ben Noordhuis
880219645e tcp, udp: share sockaddr-to-object function
Share AddressToJS() function between tcp_wrap.cc and udp_wrap.cc.
2012-05-02 18:03:25 +02:00
Fedor Indutny
c3898f3c1f debugger: support mirroring Date objects
* fixes #3203
2012-05-02 15:48:23 +07:00
Yoshihiro Kikuchi
ee2291eb0d test: add a child domain explicitly 2012-05-02 02:51:28 +02:00
isaacs
fb400b4868 Return after emitting error in tty.js 2012-05-01 15:51:29 -07:00
Nathan Rajlich
b894521bd2 process: ensure that "exit" doesn't get emitted twice on a natural exit
Fixes "test/simple/test-process-exit.js".
2012-05-01 14:09:31 -07:00
Fedor Indutny
9f9c333cbc vm: accept only object as arg of .createContext()
Converting strings and others to objects is very slow and essentially
wrong.
2012-05-02 01:59:59 +07:00
Yi, EungJun
4bd54dad33 path: add path.sep to get the path separator. 2012-05-01 15:19:37 +02:00
Kyle Robinson Young
6ba3e68bd2 doc: correct return value of string-based fs.readSync
Closes #2330
2012-05-01 15:19:36 +02:00
Ben Noordhuis
b45a10818e udp: slightly optimize address family property 2012-05-01 15:19:30 +02:00
Ben Noordhuis
e747daf604 udp: make variable names consistent 2012-05-01 14:52:00 +02:00
Shigeki Ohtsu
94f1feeb59 udp: make getsockname() return address family name 2012-05-01 14:50:17 +02:00
Nathan Rajlich
f4403f90f8 tty: emit "error" instead of throwing when getWindowSize() fails 2012-04-30 18:51:20 -07:00
Garen Torikian
6cacb9a21e doc: add Cloud9 links to docs 2012-05-01 02:25:08 +02:00
Kyle Robinson Young
e02d5c9d41 doc: add args to console methods 2012-05-01 02:25:08 +02:00
Kyle Robinson Young
c9e6d3696c doc: typo fixes 2012-05-01 02:25:08 +02:00
Nathan Rajlich
f1f5de1c8d tty: throw an Error when getWindowSize() fails 2012-04-30 16:20:27 -07:00
Michael Thomas
4e4860579e test: rebuild keys without asking for password 2012-05-01 01:08:31 +02:00
Ben Noordhuis
75c6255d16 deps: remove libuv sanity check
Remove reference count check. Unbreaks test suite. This needs to be addressed.
2012-05-01 00:55:46 +02:00
Ben Noordhuis
89e311b1ae deps: back-port openssl patch
Check for potentially exploitable overflows in asn1_d2i_read_bio
BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
in CRYPTO_realloc_clean.

Taken from OpenSSL CVS. Addresses CVE-2012-2110.
2012-05-01 00:40:38 +02:00
Nathan Rajlich
248f552ab4 process: ensure that the "exit" event always has "code" given
Upon "normal" exiting of Node (i.e. the event loop completes naturally),
the "code" parameter was not being passed to the "exit" event listeners.

Be consistent. Tests included.
2012-04-30 10:42:13 -07:00
Maciej Małecki
77c18d1e1b console: throw when no such label exists in console.timeEnd
Test included.
2012-04-29 22:27:45 +02:00
Bert Belder
3bcbd14bb1 process_wrap: don't use uv_spawn2
It was a temporary thing for the 0.6 branch only.
2012-04-29 00:24:51 +02:00
Bert Belder
d2dd9d108d uv: upgrade to e2cae340a6 2012-04-29 00:22:01 +02:00
Bert Belder
c8a10e97c8 Merge branch 'v0.6'
Conflicts:
	deps/uv/include/uv-private/uv-unix.h
	deps/uv/include/uv-private/uv-win.h
	deps/uv/src/uv-common.c
	deps/uv/src/win/fs.c
	src/process_wrap.cc
2012-04-29 00:17:23 +02:00
Andreas Madsen
ab072ee416 doc: document the address object in the cluster listening event 2012-04-28 16:42:55 +02:00
Ben Noordhuis
12a90e98bf bench: add continuous stress test
Useful in tracking down or at least demonstrating memory leaks.
2012-04-27 23:11:32 +02:00
Ben Noordhuis
4e84dfa683 bench: run GC and dump stats if --expose-gc is set 2012-04-27 20:38:58 +02:00
Marcel Laverdet
70635753a3 Cleanup vm module memory leakage
There are some paths here that led to dangling contexts. By being
smarter with handle management we can get rid of all the cleanup code
and fix those issues.
2012-04-27 10:32:40 -07:00
Nathan Rajlich
f405daa922 repl: make tab completion read up the prototype of "global"
For example, there's a global "toString()" function, so the REPL's
tab completion should pick that up.
2012-04-25 20:34:34 -07:00
Nathan Rajlich
98b4596a46 process: lint 2012-04-25 20:10:50 -07:00
Ben Noordhuis
5648d95c4a Remove unused local variable. 2012-04-25 04:10:31 -07:00
Kyle Robinson Young
df6c12cdcc doc: update string_decoder stability index to 3
Ref #3140
2012-04-25 01:13:08 +02:00
Nathan Rajlich
6292df659f process: comment for consistency 2012-04-24 11:31:26 -07:00
Nathan Rajlich
ef3a874f41 process: set _print_eval even when --eval is not passed
This is for scripts being fed from stdin:

  $ echo "{ foo: 'bar' }" | node -p
2012-04-24 11:31:02 -07:00
Nathan Rajlich
0b5235e68c process: make --eval and reading scripts from stdin act the same
Reusing the same logic for both places for the behavior is consistent.

For example:

  $ ./node -p -e "'Hello World'"
  Hello World

  $ echo "'Hello World'" | ./node -p
  Hello World
2012-04-24 11:30:14 -07:00
Kyle Robinson Young
d9bad09ede doc: util: add args to format and methods error, puts, print 2012-04-24 05:25:09 +02:00
Ben Noordhuis
48cdbffd24 v8: posix: try to send() whole buffer
Retry the send() syscall after a partial write.
2012-04-24 04:11:29 +02:00
Ben Noordhuis
ebfb8a5613 v8: posix: handle EINTR in socket functions
The socket functions did not handle EINTR (syscall interrupted by signal) which
tripped up the debug agent.
2012-04-24 04:11:22 +02:00
Ben Noordhuis
4359e8154d v8: debug: fix error handling in SendConnectMessage()
The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
2012-04-24 04:11:11 +02:00
Kyle Robinson Young
491c8d92b8 doc: add deprecated function http.createClient()
Appears in a lot of old code and core tests. Documented to show it
is deprecated.

Closes #1613.
2012-04-23 16:30:28 +02:00
Malte-Thorben Bruns
ea50ebd36d build: support make install "DESTDIR=/path" 2012-04-23 01:52:26 +02:00
Nathan Rajlich
e16021340d repl: use Object.getPrototypeOf on functions for tab complete() 2012-04-21 13:53:49 -07:00
isaacs
c0a9985da7 domain: Document explicit binding, and d.run() 2012-04-21 10:32:03 -07:00
Kyle Robinson Young
525253d50e doc: add args for rl.write and rl.prompt 2012-04-21 05:31:47 +02:00
Kyle Robinson Young
da56c72f59 readline: remove unused vars in _ttyWrite 2012-04-21 05:30:24 +02:00
isaacs
77c1cc0482 doc: typo in cluster documentation 2012-04-20 07:43:19 -07:00
Kyle Robinson Young
d91ef153e7 doc: add string_decoder doc 2012-04-20 16:17:41 +02:00
Ben Noordhuis
c21c51a6fc v8: fix "pure virtual method called" runtime error
Fixes #2912.
2012-04-20 01:29:02 +02:00
Kyle Robinson Young
e67a0f80e0 readline: _normalWrite() doesn't take a key modifier arg 2012-04-18 23:36:46 +02:00
Kyle Robinson Young
57148f54e1 readline: change char to ch to avoid reserved word 2012-04-18 21:57:39 +02:00
Ben Noordhuis
c56d1559fc test: use the new net.listen(backlog=x) API 2012-04-18 21:55:36 +02:00
Erik Dubbelboer
12f77440ef doc: improve dns module docs 2012-04-18 21:51:16 +02:00
Erik Dubbelboer
ecfe32e3a0 dns: add more error codes 2012-04-18 21:50:52 +02:00
isaacs
605927fbd9 Fix test/ jslint failures (by not linting tests)
In practice, it's not important to lint tests.  We lint src/
and lib/, which is where we're more prone to make mistakes that
affect real-world situations in subtle ways, and where more
changes are made that ought to be kept in a consistent style.

Tests are a mess anyways, and no one cares.
2012-04-18 12:44:28 -07:00
Erik Dubbelboer
3d69bbfa87 net, http: add backlog parameter to .listen() 2012-04-18 21:40:25 +02:00
isaacs
b12b2b83fc Merge remote-tracking branch 'ry/v0.6' 2012-04-18 12:25:32 -07:00
isaacs
33c76f19de net.js: lint 2012-04-18 12:24:41 -07:00
isaacs
ecca7525cc Merge remote-tracking branch 'ry/v0.6' into master
Conflicts:
	AUTHORS
	ChangeLog
	LICENSE
	Makefile
	deps/http_parser/test.c
	deps/npm/AUTHORS
	deps/npm/html/api/bin.html
	deps/npm/html/api/bugs.html
	deps/npm/html/api/commands.html
	deps/npm/html/api/config.html
	deps/npm/html/api/deprecate.html
	deps/npm/html/api/docs.html
	deps/npm/html/api/edit.html
	deps/npm/html/api/explore.html
	deps/npm/html/api/help-search.html
	deps/npm/html/api/init.html
	deps/npm/html/api/install.html
	deps/npm/html/api/link.html
	deps/npm/html/api/load.html
	deps/npm/html/api/ls.html
	deps/npm/html/api/npm.html
	deps/npm/html/api/outdated.html
	deps/npm/html/api/owner.html
	deps/npm/html/api/pack.html
	deps/npm/html/api/prefix.html
	deps/npm/html/api/prune.html
	deps/npm/html/api/publish.html
	deps/npm/html/api/rebuild.html
	deps/npm/html/api/restart.html
	deps/npm/html/api/root.html
	deps/npm/html/api/run-script.html
	deps/npm/html/api/search.html
	deps/npm/html/api/shrinkwrap.html
	deps/npm/html/api/start.html
	deps/npm/html/api/stop.html
	deps/npm/html/api/submodule.html
	deps/npm/html/api/tag.html
	deps/npm/html/api/test.html
	deps/npm/html/api/uninstall.html
	deps/npm/html/api/unpublish.html
	deps/npm/html/api/update.html
	deps/npm/html/api/version.html
	deps/npm/html/api/view.html
	deps/npm/html/api/whoami.html
	deps/npm/html/doc/README.html
	deps/npm/html/doc/adduser.html
	deps/npm/html/doc/bin.html
	deps/npm/html/doc/bugs.html
	deps/npm/html/doc/build.html
	deps/npm/html/doc/bundle.html
	deps/npm/html/doc/cache.html
	deps/npm/html/doc/changelog.html
	deps/npm/html/doc/coding-style.html
	deps/npm/html/doc/completion.html
	deps/npm/html/doc/config.html
	deps/npm/html/doc/deprecate.html
	deps/npm/html/doc/developers.html
	deps/npm/html/doc/disputes.html
	deps/npm/html/doc/docs.html
	deps/npm/html/doc/edit.html
	deps/npm/html/doc/explore.html
	deps/npm/html/doc/faq.html
	deps/npm/html/doc/folders.html
	deps/npm/html/doc/help-search.html
	deps/npm/html/doc/help.html
	deps/npm/html/doc/index.html
	deps/npm/html/doc/init.html
	deps/npm/html/doc/install.html
	deps/npm/html/doc/json.html
	deps/npm/html/doc/link.html
	deps/npm/html/doc/list.html
	deps/npm/html/doc/npm.html
	deps/npm/html/doc/outdated.html
	deps/npm/html/doc/owner.html
	deps/npm/html/doc/pack.html
	deps/npm/html/doc/prefix.html
	deps/npm/html/doc/prune.html
	deps/npm/html/doc/publish.html
	deps/npm/html/doc/rebuild.html
	deps/npm/html/doc/registry.html
	deps/npm/html/doc/removing-npm.html
	deps/npm/html/doc/restart.html
	deps/npm/html/doc/root.html
	deps/npm/html/doc/run-script.html
	deps/npm/html/doc/scripts.html
	deps/npm/html/doc/search.html
	deps/npm/html/doc/semver.html
	deps/npm/html/doc/shrinkwrap.html
	deps/npm/html/doc/star.html
	deps/npm/html/doc/start.html
	deps/npm/html/doc/stop.html
	deps/npm/html/doc/submodule.html
	deps/npm/html/doc/tag.html
	deps/npm/html/doc/test.html
	deps/npm/html/doc/uninstall.html
	deps/npm/html/doc/unpublish.html
	deps/npm/html/doc/update.html
	deps/npm/html/doc/version.html
	deps/npm/html/doc/view.html
	deps/npm/html/doc/whoami.html
	deps/npm/lib/npm.js
	deps/npm/man/man1/npm.1
	deps/npm/man/man3/npm.3
	deps/npm/node_modules/fstream-npm/fstream-npm.js
	deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json
	deps/npm/node_modules/fstream-npm/package.json
	deps/npm/node_modules/node-gyp/LICENSE
	deps/npm/node_modules/node-gyp/lib/build.js
	deps/npm/node_modules/node-gyp/lib/install.js
	deps/npm/node_modules/node-gyp/node_modules/ansi/package.json
	deps/npm/node_modules/node-gyp/node_modules/glob/package.json
	deps/npm/node_modules/node-gyp/package.json
	deps/npm/package.json
	deps/uv/test/test-fs.c
	deps/v8/src/regexp-macro-assembler-tracer.cc
	deps/v8/src/version.cc
	src/node_version.h
	src/platform_sunos.cc
	test/simple/test-net-write-after-close.js
	wscript
2012-04-18 11:57:54 -07:00
isaacs
0fcb124602 Now working on 0.7.9 2012-04-18 11:17:29 -07:00
isaacs
889cbf9ada Merge branch 'v0.7.8-release' 2012-04-18 11:17:15 -07:00
isaacs
c2b47097c0 2012.04.18, Version 0.7.8, (unstable)
* Upgrade V8 to 3.9.24.9

* Upgrade OpenSSL to 1.0.0f

* Upgrade npm to 1.1.18

* Show licenses in Binary installers

* Domains (isaacs)

* readline: rename "end" to "close" (Nathan Rajlich)

* tcp: make getsockname() return address family as string (Shigeki Ohtsu)

* http, https: fix .setTimeout() (ssuda)

* os: add cross platform EOL character (Mustansir Golawala)

* typed arrays: unexport SizeOfArrayElementForType() (Aaron Jacobs)

* net: honor 'enable' flag in .setNoDelay() (Ben Noordhuis)

* child_process: emit error when .kill fails (Andreas Madsen)

* gyp: fix 'argument list too long' build error (Ben Noordhuis)

* fs.WriteStream: Handle modifications to fs.open (isaacs)

* repl, readline: Handle newlines better (Nathan Rajlich, Nathan Friedly)

* build: target OSX 10.5 when building on darwin (Nathan Rajlich)

* Fix #3052 Handle errors properly in zlib (isaacs)

* build: add support for DTrace and postmortem (Dave Pacheco)

* core: add reusable Slab allocator (Ben Noordhuis)
2012-04-18 09:37:18 -07:00
isaacs
7b3fb22290 typo in node_http_parser 2012-04-18 09:36:45 -07:00
isaacs
6bb9868271 Reapply patches floating on V8 2012-04-18 09:36:44 -07:00
isaacs
6ed5ef5fe0 Upgrade V8 to 3.9.24.9 2012-04-18 09:36:44 -07:00
isaacs
c8bbd13ea8 Upgrade npm to 1.1.17 2012-04-18 09:36:40 -07:00
Josh W
d2860a6c7d doc: make readline example filter shorter 2012-04-18 15:21:56 +02:00
Josh W
20143b359c doc: add some headers to make it more legible 2012-04-18 15:21:51 +02:00
isaacs
d8b33dc147 lint 2012-04-17 15:52:57 -07:00
isaacs
37fd953378 uv: Cherry-pick joyent/libuv@3c41597 2012-04-17 15:45:48 -07:00
isaacs
079b81358b test: Minor change to message/undefined_reference_in_new_context 2012-04-17 15:30:22 -07:00
Dave Pacheco
8559a4ae0f Fix 64-bit SmartOS build 2012-04-17 14:34:12 -07:00
isaacs
8673a4aa25 Merge branch 'domains3' 2012-04-17 13:36:29 -07:00
isaacs
d4ed2e61f7 Add Todo comments about domain-ifying crypto 2012-04-17 13:14:55 -07:00
isaacs
45c1d4f96f Add switches to http_simple bench to use domains 2012-04-17 13:14:55 -07:00
isaacs
10ce3d129d Domain hooks in ReqWrap<T> and MakeCallback 2012-04-17 13:14:55 -07:00
isaacs
963459d736 Domain feature
This is a squashed commit of the main work done on the domains-wip branch.

The original commit messages are preserved for posterity:

* Implicitly add EventEmitters to active domain
* Implicitly add timers to active domain
* domain: add members, remove ctor cb
* Don't hijack bound callbacks for Domain error events
* Add dispose method
* Add domain.remove(ee) method
* A test of multiple domains in process at once
* Put the active domain on the process object
* Only intercept error arg if explicitly requested
* Typo
* Don't auto-add new domains to the current domain

    While an automatic parent/child relationship is sort of neat,
    and leads to some nice error-bubbling characteristics, it also
    results in keeping a reference to every EE and timer created,
    unless domains are explicitly disposed of.

* Explicitly adding one domain to another is still fine, of course.
* Don't allow circular domain->domain memberships
* Disposing of a domain removes it from its parent
* Domain disposal turns functions into no-ops
* More documentation of domains
* More thorough dispose() semantics
* An example using domains in an HTTP server
* Don't handle errors on a disposed domain
* Need to push, even if the same domain is entered multiple times
* Array.push is too slow for the EE Ctor
* lint domain
* domain: docs
* Also call abort and destroySoon to clean up event emitters
* domain: Wrap destroy methods in a try/catch
* Attach tick callbacks to active domain
* domain: Only implicitly bind timers, not explicitly
* domain: Don't fire timers when disposed.
* domain: Simplify naming so that MakeCallback works on Timers
* Add setInterval and nextTick to domain test
* domain: Make stack private
2012-04-17 13:14:55 -07:00
isaacs
a26bee8fa1 MakeCallback: Consistent symbol usage 2012-04-17 13:14:54 -07:00
isaacs
db45b2ca02 MakeCallback: Use in node_signal_watcher 2012-04-17 12:00:58 -07:00
isaacs
e1dd570585 MakeCallback: Use in node_io_watcher 2012-04-17 12:00:58 -07:00
isaacs
35c0cd219d MakeCallback: Use in node_crypto 2012-04-17 12:00:58 -07:00
isaacs
91701c2db1 MakeCallback: Use in node_file.cc 2012-04-17 12:00:58 -07:00
isaacs
88f94fa28c MakeCallback: abort() if not a function 2012-04-17 12:00:58 -07:00
isaacs
ac1aaddc00 MakeCallback: Return the callback return value 2012-04-17 11:56:33 -07:00
isaacs
7407be896e MakeCallback: Accept Function or Symbol argument 2012-04-17 11:56:32 -07:00
isaacs
80a55e9c83 Report errors thrown from uncaughtException handers 2012-04-17 11:56:32 -07:00
Nathan Rajlich
e621250116 test: lowercase setRawMode() test case filename 2012-04-17 11:53:50 -07:00
Nathan Rajlich
e28eb6de30 doc: update the readline docs for the "close" event behavior 2012-04-17 11:53:50 -07:00
Nathan Rajlich
327286dbcd repl: update the repl for the new readline behavior
This fixes the failing REPL tests.
2012-04-17 11:53:50 -07:00
Nathan Rajlich
c5d35aca33 test: check for multiple "emit" calls in repl-end-emits-exit.js 2012-04-17 11:53:50 -07:00
Nathan Rajlich
9c3559f0ad readline: re-add the Interface#close() method; rename "end" to "close"
The idea here is to reduce the number of times that `setRawMode()` is called
on the `input` stream, since it is expensive, and simply pause()/resume()
should not call it.

So now `setRawMode()` only gets called at the beginning of the Interface
instance, and then when `Interface#close()` is called.

Test case included.
2012-04-17 11:53:50 -07:00
Nathan Rajlich
86bd9b6e70 doc: change in to input in the readline docs
Also compacting some long lines.
2012-04-17 11:53:49 -07:00
Kyle Robinson Young
718aa505c4 doc: add require.extensions to globals
Closes #3028
2012-04-17 17:10:42 +02:00
Kyle Robinson Young
7cd1690f3d doc: add cache argument to fs.realpath() 2012-04-17 14:17:41 +02:00
domenic
5bc07cc90b doc: note that stream.pause is advisory 2012-04-17 14:14:09 +02:00
ssuda
70005be4ff Fixing ClientRequest setTimeout EventEmitter Leak
This will fix #3068
2012-04-16 23:36:18 +02:00
Zachary Scott
540a441259 docs: fix broken links in zlib docs 2012-04-16 23:06:52 +02:00
Zachary Scott
b4626afb61 docs: url.format uses host for hostname and port, not auth
Fixes #3062.
2012-04-16 22:28:02 +02:00
Zachary Scott
59e6b14395 docs: url.host doesn't include auth
Fixes #3062.
2012-04-16 22:27:54 +02:00
fukayatsu
0f95a93a2c tls: remove duplicate line 2012-04-16 21:38:26 +02:00
Shigeki Ohtsu
0d13142332 tcp: make getsockname() return address family as string 2012-04-16 18:00:47 +02:00
Ben Noordhuis
21d2683976 test: don't make request until server is listening
Preemptively fixes simple/test-https-timeout on platforms where binding to an
interface is not an instantaneous action.
2012-04-16 18:00:47 +02:00
ssuda
48d52d85c3 http, https: fix .setTimeout()
Fixes #3107.
2012-04-16 18:00:38 +02:00
Kyle Robinson Young
0a83b78ba8 docs: more explicit argument names in fs 2012-04-16 16:31:02 +02:00
Maciej Małecki
f065c87bcf events: remove misleading comment 2012-04-15 15:52:56 +02:00
Ben Noordhuis
c945eae942 deps: fix -DOPENSSL_NO_SOCK on sunos
The OPENSSL_NO_SOCK macro in OpenSSL missed a couple of networking functions
that called other functions that OPENSSL_NO_SOCK *had* filtered out. None of
the functions (filtered or not) were actually used but it was enough to trip
up the Solaris linker.
2012-04-14 22:05:17 +00:00
Mustansir Golawala
7ee15457ed os: add cross platform EOL character 2012-04-14 23:17:38 +02:00
isaacs
93cefab1a3 Set errno in fake-failing child-process kill test 2012-04-13 16:53:51 -07:00
Ben Noordhuis
b7b7b29f50 dns: remove unused functions 2012-04-13 14:46:35 +02:00
Zachary Scott
46acb09ed8 docs: rewrite "addons" docs to use node-gyp
Closes #3100.
Closes #3101.
2012-04-12 18:32:01 -07:00
Aaron Jacobs
1444801374 typed arrays: unexport SizeOfArrayElementForType()
It isn't used anywhere else, so made it an implementation detail in
v8_typed_array.cc.
2012-04-12 23:48:49 +02:00
Ben Noordhuis
16fca262be net: honor 'enable' flag in .setNoDelay()
Fixes #3096.
2012-04-12 19:15:32 +02:00
Andreas Madsen
5b43c63c88 child_process: emit error when .kill fails 2012-04-12 08:17:42 -07:00
isaacs
04271a5e93 gyp: Apply 'argument too long' fix in another place
For some reason, aa5961a445 caused
'make test' to rebuild the entire project every time.  Applying
the fix to the other place where gyp chops up the argument list
makes it behave properly.
2012-04-11 18:26:52 -07:00
Bert Belder
1c88c3b3b5 Disable OpenSSL UI 2012-04-12 01:34:05 +02:00
Ben Noordhuis
916b5d1fff test: merge tls-ext-key-usage into tls-securepair-client 2012-04-12 01:34:05 +02:00
Ben Noordhuis
6cbed959e6 test: fix openssl tests
Don't assume that the libcrypto and libssl that we're linked against is the same
version as the openssl command line tool. This is important because the tool has
a bug in all pre-1.0.0 versions that makes it unusable for these tests.
2012-04-12 01:34:05 +02:00
Ben Noordhuis
2639566c6e build: configure openssl
* compile with -DOPENSSL_NO_SOCK and -DOPENSSL_NO_DGRAM, we don't need it
* compile with -DOPENSSL_NO_GOST and -DOPENSSL_NO_HW_PADLOCK, works around the
  brain dead linker on solaris and maybe others
* compile with -DTERMIOS, OS X doesn't have <termio.h>
* compile with -D__EXTENSIONS__ on solaris, makes siginfo_t available
* compile without -ansi on linux, it hides a number of POSIX declarations
  (sigaction, NI_MAXHOST, etc.)
2012-04-12 01:34:05 +02:00
Ben Noordhuis
3694b6914a deps: reapply 0a34755 to bundled openssl 2012-04-12 01:34:05 +02:00
Ben Noordhuis
0f9d201183 deps: reapply 0110c90 to bundled openssl 2012-04-12 01:34:05 +02:00
Ben Noordhuis
30e7fb7307 deps: upgrade openssl to 1.0.0f 2012-04-12 01:34:05 +02:00
Ben Noordhuis
aa5961a445 gyp: fix 'argument list too long' build error 2012-04-12 01:34:04 +02:00
Ben Noordhuis
e9dcfd4bd2 Revert "deps: upgrade libuv to 3c41597"
This reverts commit 0db4dc0024.

This commit makes a lot of tests fail due to reference counting errors. It's
not worth it to debug because the reference counting scheme is due to change
soon anyway.
2012-04-12 00:59:38 +02:00
Bert Belder
3ec84a11f8 Slab allocator: don't attempt to shrink a non-buffer 2012-04-11 22:02:12 +02:00
Nathan Rajlich
9b7a6c5238 configure: output a newline at the end of config.gypi 2012-04-11 11:16:47 -07:00
Nathan Rajlich
fdeeabba78 configure: don't use "with" for Python 2.5 and older 2012-04-11 11:16:11 -07:00
isaacs
e0660740d9 Fix #3089 Build changelog.html for website 2012-04-10 18:35:01 -07:00
isaacs
3ba9519faf Makefile: minor nit 2012-04-10 18:34:57 -07:00
Nathan Rajlich
7b71fd0c68 build: add comment explaining MACOSX_DEPLOYMENT_TARGET. 2012-04-10 14:39:29 -07:00
Nathan Rajlich
70a5b53e03 Re-apply "build: target OSX 10.5 when building on darwin"
This reverts commit 93eca95aec.

Fixes #3072 (once again).
2012-04-10 14:38:47 -07:00
Ben Noordhuis
0db4dc0024 deps: upgrade libuv to 3c41597 2012-04-10 23:32:47 +02:00
isaacs
06ada03ed9 fs.WriteStream: Handle modifications to fs.open
If the fs.open method is modified via AOP-style extension, in between
the creation of an fs.WriteStream and the processing of its action
queue, then the test of whether or not the method === fs.open will fail,
because fs.open has been replaced.

The solution is to save a reference to fs.open on the stream itself when
the action is placed in the queue.

This fixes isaacs/node-graceful-fs#6.
2012-04-09 08:39:13 -07:00
isaacs
93eca95aec Revert "build: target OSX 10.5 when building on darwin"
This reverts commit b6d6a54f80,
which fixed #3072, so we'll have to figure out another way
to make that work.
2012-04-08 22:31:28 -07:00
Nathan Rajlich
78eb174ea2 readline: use StringDecoder for decoding "normal" data
The fix from #3059 was not handling multi-byte utf8 data properly.
2012-04-06 16:13:40 -07:00
Nathan Rajlich
8652c11031 test: make the ArrayStream in repl tests write a '\n'
This is more correct.
Fixes them from failing with the updated readline behavior.
2012-04-06 16:13:40 -07:00
Nathan Rajlich
8752ceef13 test: make repl-autolibs check that the callback was invoked 2012-04-06 16:13:40 -07:00
Nathan Rajlich
ca8dea83a9 repl: make the completer use newlines
Fixes the repl.complete() function when terminal is false, since it
is now explicitly looking for a '\n' char.
2012-04-06 16:13:40 -07:00
Nathan Rajlich
aab7cb7dfe test: fix failing test-repl.js 2012-04-06 16:13:40 -07:00
Nathan Friedly
e28f77cbad readline: buffer data to only emit 'line' on '\n'
In "terminal: false" mode.

(And fire it multiple times if multiple lines arrive at once.)

This is necessary because the Windows telnet client sends every single
keystroke as it's typed.

See: http://stackoverflow.com/questions/9962197/node-js-readline-not-waiting-for-a-full-line-on-socket-connections

Closes #3059.
2012-04-06 16:13:40 -07:00
isaacs
b9bfb1bc91 child_process: Emit err rather than throw for IPC write failure 2012-04-06 14:16:09 -07:00
Zachary Scott
d73b257d65 docs: grammar and spelling on lib/cluster.js 2012-04-06 01:44:03 +02:00
Nathan Rajlich
b6d6a54f80 build: target OSX 10.5 when building on darwin 2012-04-05 16:30:33 -07:00
Bert Belder
3e8857271b Windows: installer shows license agreement dialog 2012-04-04 18:14:30 +02:00
Bert Belder
2728dcc95b Windows: add build step that generates license.rtf from LICENSE 2012-04-04 18:14:21 +02:00
Bert Belder
930fabe43f Disable V8 postmortem debugging on Windows
It is not supported by V8.
2012-04-03 03:07:47 +02:00
Ryan Dahl
30994aad30 Mac installer shows license
ref #3056
2012-04-02 16:49:03 -07:00
Ryan Dahl
55e971e33d Include text of licenses in LICENSE file
For easy inclusion in binary distributions. ref #3056
2012-04-02 16:49:03 -07:00
Ben Noordhuis
92c0c6953a build: define _DARWIN_USE_64_BIT_INODE=1 on OS X
Fixes a segmentation fault on some OS X systems due to sizeof(struct stat)
mismatches.

Fixes #2061.
2012-04-02 23:53:05 +02:00
Ryan Dahl
08109367e8 Fix links to libev and libeio licenses 2012-04-02 14:39:46 -07:00
isaacs
01d46f3a20 Fix #3052 Handle errors properly in zlib 2012-04-02 13:48:10 -07:00
Dave Pacheco
cc15299c32 build: add support for DTrace and postmortem
* fixes #2110
* includes V8 postmortem metadata in Solaris builds
* adds GYP support for DTrace probes and ustack helper
* ustack helper derives constants dynamically from libv8_base.a
* build with DTrace support by default on SunOS
2012-04-01 00:14:36 +00:00
Ben Noordhuis
7bdeed2039 zlib: fix uninitialized variable compiler warning 2012-03-31 23:50:02 +00:00
Ben Noordhuis
a4a04f932e node: provide snprintf implementation on windows
_snprintf() doesn't zero-terminate the buffer on overflow.
2012-04-01 01:17:25 +02:00
Ben Noordhuis
dee8c51547 node: don't check return value of unsetenv()
It returns void on some platforms, notably FreeBSD.
2012-03-31 23:23:48 +02:00
Ben Noordhuis
bc834c395b Alias _snprintf to snprintf, fix Windows build. 2012-03-31 22:37:51 +02:00
isaacs
2726c22f0b Revert "tty: add keypress event for backwards-compat"
In this case, backwards compatibility is not worth the API
inconsistency.  We can just document the change.

This reverts commit b521ff3b4f.
2012-03-30 17:37:35 -07:00
Ben Noordhuis
c26a0b5aab doc: fix grammar error in cluster docs 2012-03-30 22:54:13 +02:00
isaacs
90ce5b3d41 cluster: Rename 'death' back to 'exit' 2012-03-30 12:59:24 -07:00
Bert Belder
407181538b Revert "Re-add top-level v8::Locker"
The locker makes node crash in debug mode sometimes.
For example, test/simple/test-repl.js triggers it.

This reverts commit 9a6012edd9.

Conflicts:

	src/node.cc
2012-03-30 21:50:15 +02:00
Ben Noordhuis
7c02b5a58d udp_wrap: simplify AddressToJS() function 2012-03-30 21:24:02 +02:00
Ben Noordhuis
1ab95a536a udp_wrap: use new slab allocator 2012-03-30 21:24:02 +02:00
Ben Noordhuis
1e13a2d242 stream_wrap: use new slab allocator 2012-03-30 21:24:02 +02:00
Ben Noordhuis
08032efed0 core: add reusable slab allocator 2012-03-30 21:24:02 +02:00
Ben Noordhuis
a58659cd4a core: add ROUND_UP() macro 2012-03-30 21:24:01 +02:00
Ben Noordhuis
9d1fde7519 typed arrays: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
036d907df7 tcp: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
3005965266 stat_watcher: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
1a49df5fa9 http: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
9eacf93928 crypto: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
f86359cc3f udp: root JS objects in HandleScope with Local<> 2012-03-30 21:24:01 +02:00
Ben Noordhuis
32b2964eed udp: remove slab allocator 2012-03-30 21:24:01 +02:00
isaacs
8d3278b962 Now working on 0.7.8 2012-03-30 11:54:39 -07:00
isaacs
69ae75c66c Merge branch 'v0.7.7-release' 2012-03-30 11:54:08 -07:00
Igor Zinkovsky
6aa7f6f732 upgrade libuv to ab8c3b85c1 2012-03-30 10:25:07 -07:00
Ben Noordhuis
17524432ff Fix Engrish in error messages. 2012-03-30 16:07:05 +02:00
Ben Noordhuis
db0a1dc7d9 node: remove unused function 2012-03-30 14:52:39 +02:00
Ben Noordhuis
8c97ad4c30 node: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
Ben Noordhuis
6986d9316c crypto: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
Ben Noordhuis
b82b4f2993 buffer: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
Ben Noordhuis
0f0557d78d stream_wrap: fix signedness compiler warnings 2012-03-30 14:52:38 +02:00
isaacs
5cda2542fd 2012.03.30, Version 0.7.7 (unstable)
* Upgrade V8 to 3.9.24.7

* Upgrade npm to 1.1.15

* Handle Emoji characters properly (Erik Corry, Bert Belder)

* readline: migrate ansi/vt100 logic from tty to readline (Nathan Rajlich)

* readline: Fix multiline handling (Alex Kocharin)

* add a -i/--interactive flag to force the REPL (Nathan Rajlich)

* debugger: add breakOnException command (Fedor Indutny)

* cluster: kill workers when master dies (Andreas Madsen)

* cluster: add graceful disconnect support (Andreas Madsen)

* child_process: Separate 'close' event from 'exit' (Charlie McConnell)

* typed arrays: add Uint8ClampedArray (Mikael Bourges-Sevenier)

* buffer: Fix byte alignment issues (Ben Noordhuis, Erik Lundin)

* tls: fix CryptoStream.setKeepAlive() (Shigeki Ohtsu)

* Expose http parse error codes (Felix Geisendörfer)

* events: don't delete the listeners array (Ben Noordhuis, Nathan Rajlich)

* process: add process.config to view node's ./configure settings (Nathan Rajlich)

* process: process.execArgv to see node's arguments (Micheil Smith)

* process: fix process.title setter (Ben Noordhuis)

* timers: handle negative or non-numeric timeout values (Ben Noordhuis)
2012-03-29 20:20:23 -07:00
isaacs
9a70d99980 Upgrade npm to 1.1.15 2012-03-29 20:20:23 -07:00
isaacs
7abbda8ba2 Make rules for release blog post and email message 2012-03-29 16:04:48 -07:00
isaacs
6ebe9e0c1d Upgrade V8 to 3.9.24.7 2012-03-29 16:04:48 -07:00
Nathan Rajlich
304f1fcf86 tty: clarify that tty.setRawMode() has moved to process.stdin
Technically saying `tty.ReadStream#setRawMode()` is correct,
but since a typical use cannot instantiate `tty.ReadStream` themselves,
and 99% of the time the only instance is `process.stdin`,
then a little clarification seemed necessary.
2012-03-29 13:15:24 -07:00
isaacs
6aa755070a More logging in simple/test-eio-race
Travis-CI is failing on this test repeatedly, but other Linux systems
seem to be fine with it.  Alter the logging so it's more clear which
part is timing out.
2012-03-29 08:41:51 -07:00
Ben Noordhuis
11770bf5e2 test: move pummel/test-tls-fragmentation to benchmark/
Said test takes over 90 seconds on my Core 2 Duo which is too long, even for
the pummel tests.
2012-03-29 17:25:37 +02:00
Yosef Dinerstein
d7c96cf289 tls: reduce memory overhead, reuse buffer
Instead of allocating a new 64KB buffer each time when checking if there is
something to transform, continue to use the same buffer. Once the buffer is
exhausted, allocate a new buffer. This solves the problem of huge allocations
when small fragments of data are processed, but will also continue to work
well with big pieces of data.
2012-03-29 17:17:15 +02:00
Ben Noordhuis
daa6b95b08 test: move simple/test-crypto-dh to pummel/
The test is too slow / CPU intensive for the main test harness.
2012-03-29 17:12:26 +02:00
Ben Noordhuis
5e7cb68be9 test: remove simple/test-module-load-list
Said test adds little value and only serves to annoy me when moving around
modules. It was broken anyway: it passed inside the test runner and failed
when run from the command line thanks to the environment sniffing it did.
2012-03-29 17:11:37 +02:00
ssuda
44eb279ef8 zlib: don't use C++ templates
Reduces the executable's size by a few kilobytes.
2012-03-29 14:22:37 +02:00
Shigeki Ohtsu
26b6da134f doc: change stability index of tty and readline to Unstable 2012-03-28 20:13:28 -07:00
Shigeki Ohtsu
238e12af22 tty: show deprecated warn of tty.setRawMode() 2012-03-28 20:13:23 -07:00
Shigeki Ohtsu
b521ff3b4f tty: add keypress event for backwards-compat 2012-03-28 20:12:38 -07:00
isaacs
af90faf198 Patches floating on V8 2012-03-28 19:54:01 -07:00
isaacs
4b64542fe0 Upgrade V8 to 3.9.24.6 2012-03-28 19:51:38 -07:00
isaacs
8a15147bc5 Reapply "debug: Wait 50ms before running the main module"
This reapplies commit c781f17742
This reverts commit 00224771e3
2012-03-28 19:41:29 -07:00
isaacs
cda3b6ff52 Upgrade npm to 1.1.14 2012-03-28 19:36:44 -07:00
Ben Noordhuis
b031671138 tty, readline: fix style errors 2012-03-29 01:36:46 +02:00
Erik Lundin
973bbecf1a typed arrays: prevent unaligned typed array views on top of buffers 2012-03-29 01:36:45 +02:00
Ben Noordhuis
285d8c6589 buffer: align fast buffers on 8 byte boundary
Prevents alignment issues when people create a typed array from a buffer.
Unaligned loads or stores are less efficent and (on some architectures) unsafe.
2012-03-29 01:31:31 +02:00
Mikael Bourges-Sevenier
67fc1dafd0 typed arrays: add Uint8ClampedArray 2012-03-28 22:57:15 +02:00
Nathan Rajlich
48bbdde66b repl: don't write a newline on the readline 'end' event
In the case of the input stream *actually* having been closed, then we
can't write to a closed socket.

Fixes test/simple/test-repl.js
2012-03-28 08:42:40 -07:00
mstarzinger@chromium.org
eb1ff03418 v8: Fix missing initialization of mark-compact flags.
R=svenpanne@chromium.org

Review URL: https://chromiumcodereview.appspot.com/9662056

Cherry-pick of https://v8.googlecode.com/svn/branches/bleeding_edge@11006
2012-03-28 13:04:56 +02:00
Nathan Rajlich
208b230744 repl: add a 'useColors' option to the repl
This should only be minimally used, since the `terminal` value will usually be
what you are expecting. This option is specifically for the case where `terminal`
is false, but you still want colors to be output (or vice-versa).
2012-03-27 18:00:59 -07:00
Nathan Rajlich
a33d1c959a repl: add test case verifying the repl options usage 2012-03-27 17:49:10 -07:00
Nathan Rajlich
b187e96ec9 repl: add a 'writer' option to the repl
Previously this was a module-level setting, meaning that all REPL instances
had to share the same writer function. Turning it into one of the options
allows individual REPL instances to use their own writer function.
2012-03-27 17:39:14 -07:00
Nathan Rajlich
228ddddc1c repl: ensure that 'repl.ignoreUndefined' is a boolean 2012-03-27 17:35:33 -07:00
Nathan Rajlich
e7065eaa93 repl: ensure that 'repl.useGlobal' is a boolean 2012-03-27 17:34:55 -07:00
Nathan Rajlich
f41901cdf6 repl: make ^D emit an 'end' event on the readline instance
Also emit 'exit' on the repl when 'end' is emitted on the readline.

Fixes `node debug test/fixtures/breakpoints.js` when ^D is pressed.
2012-03-27 13:54:49 -07:00
Fedor Indutny
00224771e3 Revert "debug: Wait 50ms before running the main module"
This reverts commit c781f17742.
2012-03-28 01:40:45 +07:00
Fedor Indutny
5e8c2b0768 debugger: use v8 api to wait for a connection
Use v8::Debug::EnableAgent(_, _, true) to wait for incoming
debugger-client connection before emitting any break (or other) events.

This commit should fix test/simple/test-debugger-repl faults.
2012-03-28 01:37:54 +07:00
Nathan Rajlich
698e795a5f repl: fix 'terminal' mode autodetection on global repls
Fixes test/simple/test-force-repl.js
2012-03-26 19:06:58 -07:00
Nathan Rajlich
aad12d0b26 readline: migrate ansi/vt100 logic from tty to readline
The overall goal here is to make readline more interoperable with other node
Streams like say a net.Socket instance, in "terminal" mode.

See #2922 for all the details.
Closes #2922.
2012-03-26 15:21:25 -07:00
Alex Kocharin
ab518ae50e readline: fix for terminals that insert newlines automatically
Fixes #2985.
2012-03-26 09:21:55 -07:00
Shigeki Ohtsu
e7792e5d46 test: add test of tls.createServer(honorCipherOrder=true) 2012-03-26 05:03:51 -07:00
Zachary Scott
0dd8e0167d doc: document fs.createReadStream() encodings
Fixes #2700.
2012-03-26 00:25:45 +02:00
Andreas Madsen
83aae35b8e doc: fix markup in cluster docs 2012-03-26 00:20:17 +02:00
Shigeki Ohtsu
4515987058 doc: fix default dgram multicast ttl to 1 2012-03-23 17:24:10 +01:00
Shigeki Ohtsu
75face6139 doc: fix TLS cipher names 2012-03-23 17:11:13 +01:00
Shigeki Ohtsu
8727e5f2be test: add test of cleartextStream.getCipher() in tls 2012-03-23 17:09:50 +01:00
Shigeki Ohtsu
2cf5f040a5 doc: add cleartextStream.getCipher() in tls 2012-03-23 17:09:50 +01:00
ssuda
249c3c165a Avoiding unnecessary ToString() calls
String::Utf8Value and String::AsciiValue constructors take Handle<Value>
So no need to convert to Handle<String>
2012-03-23 01:02:59 +01:00
Shigeki Ohtsu
e1199fa335 tls: fix CryptoStream.setKeepAlive() 2012-03-23 00:20:46 +01:00
Lal Jérémy
ef046bf4f6 test: generate 1024-bit keys, pacify openssl 1.0.1 2012-03-22 23:35:22 +01:00
Nathan Rajlich
feaa8a41c7 cmd: add a -i / --interactive flag to force the REPL
This is the only way to spawn a node child process in REPL mode, and will
also be needed to be able to use the REPL in MinTTY.
2012-03-21 00:05:25 -07:00
isaacs
d2389f8fab debug repl tests: Add visibility, remove test that times out
The 'Can't backtrace now' message takes over 10 seconds to return.
That's too much time to have to wait for a test, and when it times
out, it was causing an orphaned node process.

This cleans up the node process, and also removes the test that's
timing out, so that the case is hit less often.

Todo: Make the backtrace message come back faster.
2012-03-20 19:48:07 -07:00
isaacs
c781f17742 debug: Wait 50ms before running the main module 2012-03-20 19:46:36 -07:00
isaacs
81cd3a3cd6 lint readline.js - single-quotes preferred 2012-03-20 19:42:34 -07:00
Erik Lundin
4b1d492561 test: merge typed arrays tests
Merge simple/test-typed-arrays-typenames into simple/test-typed-arrays.
2012-03-21 01:59:40 +01:00
Erik Lundin
f2ebf2469b test: fix simple/test-typed-arrays
* It incorrectly uses assert(a, b) instead of assert.equal(a, b), meaning all
  relevant assertions will pass regardless of whether they're supposed to when
  a == true.

* It makes the assumption that elements in typed arrays for numerical types
  spanning more than one byte, like Uint32Array, are stored little-endian first
  on all machines.

* It contains assorted mistakes like assert(Int32Array, typeof v4) (that one
  only passes thanks to point 1).
2012-03-21 01:59:33 +01:00
Johannes Wüller
7817f48322 fixed booleans being treated as strings, resulting in missing node-waf and npm 2012-03-20 17:46:08 -07:00
Alex Kocharin
06a058d731 readline: row-agnostic multiline readline implementation
Fixes #2959.
2012-03-20 15:37:06 -07:00
Nathan Rajlich
8517089b3e Revert "readline: add multiline support"
This reverts commit 443071db57.

Patch was overly compilicated and made some incorrect assumptions about the
position of the cursor being at the bottom of the screen. @rlidwka and I are
working on getting a proper implementation written.
2012-03-20 15:37:06 -07:00
ssuda
253ec6a63d process: don't use strdup()
file and cwd can be directly used from Utf8Value.
2012-03-20 17:59:21 +01:00
Alex Kocharin
415bff26fe repl: fix space autocompletion bug
Tapping <SP> + <TAB> would exit the REPL.
2012-03-20 12:27:59 +01:00
Felix Geisendörfer
18240193ba Expose http parse error codes
Currently http parse errors do not expose the error details available
from http_parser. This patch exposes the error code as `err.code`.
2012-03-19 19:00:16 -07:00
Shigeki Ohtsu
891f9defeb No need to have NativeModule.require('fs') in Module._findPath() 2012-03-19 18:58:58 -07:00
isaacs
dce8682827 cluster: English language fixing 2012-03-19 14:28:39 -07:00
Andreas Madsen
94d337eb0f cluster: kill workers when master dies
This patch will kill the worker once it has lost its connection with the parent.
However if the worker are doing a suicide, other measures will be used.
2012-03-19 14:22:36 -07:00
Andreas Madsen
d927fbc9ab cluster: add graceful disconnect support
This patch add a worker.disconnect() method there will stop the worker from accepting
new connections and then stop the IPC. This allow the worker to die graceful.
When the IPC has been disconnected a 'disconnect' event will emit.

The patch also add a cluster.disconnect() method, this will call worker.disconnect() on
all connected workers. When the workers are disconneted it will then close all server
handlers. This allow the cluster itself to self terminate in a graceful way.
2012-03-19 13:29:01 -07:00
Andreas Madsen
ab32e9e043 child_process: emit 'channel closed' error instead of throwing 2012-03-19 11:55:41 -07:00
isaacs
89653cb32f Upgrade npm to 1.1.10 2012-03-19 09:59:57 -07:00
Fedor Indutny
7418905aef debugger: breakOnException
Do not break automatically on exception, fixes #2926
2012-03-19 22:21:29 +06:00
Fedor Indutny
b6cb6ce0d3 debugger: remove 'repl' command from builtinLibs
* It was displaying useless warning
2012-03-19 22:21:28 +06:00
Fedor Indutny
f61d4b7a87 debugger: exit process on repl exit
* When entering repl - clone 'SIGINT' listeners array (instead of using
existing), as it will be spliced in .removeAllListeners() call later.
2012-03-19 22:21:28 +06:00
Ben Noordhuis
d8c4ecea0b test: fix race in simple/test-cluster-master-error
Said test checks that the workers shut down when the master errors but it failed
intermittently. Insert a small delay before doing the 'is dead?' check to give
the workers a chance to shut down.
2012-03-19 17:12:52 +01:00
Your Name
fb47a337ba test: changed instances of == to === 2012-03-19 14:24:46 +01:00
Nathan Rajlich
70e68893fe build: make --openssl-use-sys a boolean option
Before you had to enter a truthy value like: --openssl-use-sys=1
2012-03-17 12:57:24 -07:00
isaacs
815169383e Fix include logic was replacing https include with http 2012-03-17 11:11:07 -07:00
isaacs
7bee98bae2 Ignore 'making a build' artifacts 2012-03-17 11:11:03 -07:00
Alex Xu
5abcdc9671 build: fix configure with spaces in CC 2012-03-16 16:01:53 -07:00
isaacs
76a771b749 doc: Remove extraneous index.html's from hyperlinks 2012-03-16 08:19:26 -07:00
isaacs
46376888cd Remove hard-coded version number from docs 2012-03-16 08:13:41 -07:00
isaacs
ec735cbce0 Merge remote-tracking branch 'ry/v0.6' into merge-v0.6
Conflicts:
	ChangeLog
	deps/npm/AUTHORS
	deps/npm/html/api/bin.html
	deps/npm/html/api/bugs.html
	deps/npm/html/api/commands.html
	deps/npm/html/api/config.html
	deps/npm/html/api/deprecate.html
	deps/npm/html/api/docs.html
	deps/npm/html/api/edit.html
	deps/npm/html/api/explore.html
	deps/npm/html/api/help-search.html
	deps/npm/html/api/init.html
	deps/npm/html/api/install.html
	deps/npm/html/api/link.html
	deps/npm/html/api/load.html
	deps/npm/html/api/ls.html
	deps/npm/html/api/npm.html
	deps/npm/html/api/outdated.html
	deps/npm/html/api/owner.html
	deps/npm/html/api/pack.html
	deps/npm/html/api/prefix.html
	deps/npm/html/api/prune.html
	deps/npm/html/api/publish.html
	deps/npm/html/api/rebuild.html
	deps/npm/html/api/restart.html
	deps/npm/html/api/root.html
	deps/npm/html/api/run-script.html
	deps/npm/html/api/search.html
	deps/npm/html/api/shrinkwrap.html
	deps/npm/html/api/start.html
	deps/npm/html/api/stop.html
	deps/npm/html/api/submodule.html
	deps/npm/html/api/tag.html
	deps/npm/html/api/test.html
	deps/npm/html/api/uninstall.html
	deps/npm/html/api/unpublish.html
	deps/npm/html/api/update.html
	deps/npm/html/api/version.html
	deps/npm/html/api/view.html
	deps/npm/html/api/whoami.html
	deps/npm/html/doc/README.html
	deps/npm/html/doc/adduser.html
	deps/npm/html/doc/bin.html
	deps/npm/html/doc/bugs.html
	deps/npm/html/doc/build.html
	deps/npm/html/doc/bundle.html
	deps/npm/html/doc/cache.html
	deps/npm/html/doc/changelog.html
	deps/npm/html/doc/coding-style.html
	deps/npm/html/doc/completion.html
	deps/npm/html/doc/config.html
	deps/npm/html/doc/deprecate.html
	deps/npm/html/doc/developers.html
	deps/npm/html/doc/disputes.html
	deps/npm/html/doc/docs.html
	deps/npm/html/doc/edit.html
	deps/npm/html/doc/explore.html
	deps/npm/html/doc/faq.html
	deps/npm/html/doc/folders.html
	deps/npm/html/doc/help-search.html
	deps/npm/html/doc/help.html
	deps/npm/html/doc/index.html
	deps/npm/html/doc/init.html
	deps/npm/html/doc/install.html
	deps/npm/html/doc/json.html
	deps/npm/html/doc/link.html
	deps/npm/html/doc/list.html
	deps/npm/html/doc/npm.html
	deps/npm/html/doc/outdated.html
	deps/npm/html/doc/owner.html
	deps/npm/html/doc/pack.html
	deps/npm/html/doc/prefix.html
	deps/npm/html/doc/prune.html
	deps/npm/html/doc/publish.html
	deps/npm/html/doc/rebuild.html
	deps/npm/html/doc/registry.html
	deps/npm/html/doc/removing-npm.html
	deps/npm/html/doc/restart.html
	deps/npm/html/doc/root.html
	deps/npm/html/doc/run-script.html
	deps/npm/html/doc/scripts.html
	deps/npm/html/doc/search.html
	deps/npm/html/doc/semver.html
	deps/npm/html/doc/shrinkwrap.html
	deps/npm/html/doc/star.html
	deps/npm/html/doc/start.html
	deps/npm/html/doc/stop.html
	deps/npm/html/doc/submodule.html
	deps/npm/html/doc/tag.html
	deps/npm/html/doc/test.html
	deps/npm/html/doc/uninstall.html
	deps/npm/html/doc/unpublish.html
	deps/npm/html/doc/update.html
	deps/npm/html/doc/version.html
	deps/npm/html/doc/view.html
	deps/npm/html/doc/whoami.html
	deps/npm/man/man1/npm.1
	deps/npm/man/man3/npm.3
	deps/npm/node_modules/node-gyp/README.md
	deps/npm/node_modules/node-gyp/lib/build.js
	deps/npm/node_modules/node-gyp/lib/configure.js
	deps/npm/node_modules/node-gyp/lib/install.js
	deps/npm/node_modules/node-gyp/lib/node-gyp.js
	deps/npm/node_modules/node-gyp/node_modules/ansi/package.json
	deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json
	deps/npm/node_modules/node-gyp/node_modules/glob/package.json
	deps/npm/node_modules/node-gyp/package.json
	deps/npm/package.json
	doc/about/index.html
	doc/api/path.markdown
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	src/node_version.h
2012-03-16 08:06:54 -07:00
Shigeki Ohtsu
534264d209 doc: Add condition to emit close event of net.Server 2012-03-16 16:01:18 +01:00
Rod Vagg
6628a3b6ea doc: fix # links from (and within) api/fs 2012-03-16 15:42:26 +01:00
isaacs
0fb4fb4797 Document ChildProcess exit/close event difference 2012-03-15 17:23:39 -07:00
Nathan Rajlich
7cb0f5f84a install: update install.js to use process.config
Now that the node_prefix is available from within node, we can use it :)
2012-03-15 17:15:49 -07:00
Nathan Rajlich
11d8823791 process: add process.config
This is the JS representation of the `config.gypi` file that was used when
compiling node. With this information, you can tell whether the current node
binary has shared or static dependencies, or any other configuration options
that may have been used.
2012-03-15 17:15:18 -07:00
Nathan Rajlich
95fd517431 node.gyp: include the config.gypi file in the js2c inputs list 2012-03-15 17:12:45 -07:00
Nathan Rajlich
bea2e15864 js2c: fix to support files other than ones ending with 2 char extensions
Previously this was basically hard-coded for *.js files, but now we
need to include the 'config.gypi' file in there as well.
2012-03-15 17:12:37 -07:00
Charlie McConnell
c7b8073afc child_process: Separate 'close' event from 'exit'
Currently, a child process does not emit the 'exit' event until 'close' events
have been received on all three of the child's stdio streams.  This change makes
the child object emit 'exit' when the child exits, and a new 'close' event when
all stdio streams are closed.
2012-03-15 17:07:11 -07:00
Nathan Rajlich
928ea564d1 events: don't delete the listeners array in removeListener() 2012-03-15 17:01:29 -07:00
Ben Noordhuis
761a82bc9a test: make .removeAllListeners() test more exhaustive
Also test removal of multiple listeners, it's a separate code path.
2012-03-16 00:25:42 +01:00
Ben Noordhuis
78dc13fbf9 events: don't delete the listeners array
The documentation implies that .removeAllListeners() leaves the listeners array
untouched. Make it so.
2012-03-16 00:20:10 +01:00
Ben Noordhuis
f9aa01de32 test: don't let debugger listen on common.PORT
simple/test-debugger-repl has a tendency to fail and leave behind a stray
process that listens on common.PORT, making later tests fail with EADDRINUSE.
2012-03-16 00:20:10 +01:00
Nathan Rajlich
dc752327bb vcbuild: run the 'configure' script in vcbuild.bat
So that a 'config.gypi' file gets generated, which is
required for the `process.config` object (see #2928).
2012-03-15 16:12:19 -07:00
Ben Noordhuis
1a97998644 process: fix process.title setter
Commit 19fd530 broke the argv initialization logic that's used on linux and
freebsd to update the process name (as displayed in tools like `top`).

Fixes test/simple/test-setproctitle.js.
2012-03-15 23:10:32 +01:00
isaacs
702b46c80d Fix invalid timer test
Previously, setTimeout(fn, 0) would create a new Timer() object,
which has a close() method (and is a bit slower).  The recent
change to more closely emulate browser setTimeout behavior dodges
this path, so this assertion is no longer valid.
2012-03-15 14:53:17 -07:00
Ben Noordhuis
7fc835afe3 timers: handle negative or non-numeric timeout values
Follows browser behaviour by scheduling the callback on the next tick.

Fixes #593.
2012-03-15 13:56:30 -07:00
Maciej Małecki
9a35656210 test: test if forks are spawned with parent's process.execArgv 2012-03-15 13:48:06 -07:00
Maciej Małecki
0113f5a72d test: test process.execArgv 2012-03-15 13:48:05 -07:00
Micheil Smith
19fd5301bf Expose original argv as process.execArgv for cluster and child_process.fork() 2012-03-15 13:47:43 -07:00
Matt Ezell
96e3be3aa3 Added trailing backslash to npm path
Fix #2377: $PATH issues reported for MSI installer
2012-03-15 13:28:01 -07:00
Shigeki Ohtsu
d2fba2bf35 test: Fix path to require hello-world module 2012-03-14 11:00:52 -07:00
Nathan Rajlich
35043ad8ac process: use NODE_STRINGIFY macro to set process.versions.uv 2012-03-14 01:40:29 +01:00
isaacs
bda08bfa04 Now working on 0.7.7 2012-03-13 14:03:51 -07:00
isaacs
73c874698b Merge branch 'v0.7.6-release' 2012-03-13 14:03:07 -07:00
isaacs
f06abda6f5 2012.03.13, Version 0.7.6 (unstable)
* Upgrade v8 to 3.9.17

* Upgrade npm to 1.1.8
  - Add support for os/cpu fields in package.json (Adam Blackburn)
  - Automatically node-gyp packages containing a binding.gyp
  - Fix failures unpacking in UNC shares
  - Never create un-listable directories
  - Handle cases where an optionalDependency fails to build

* events: newListener emit correct fn when using 'once' (Roly Fentanes)

* url: Ignore empty port component (Łukasz Walukiewicz)

* module: replace 'children' array (isaacs)

* tls: parse multiple values of a key in ssl certificate (Sambasiva Suda)

* cluster: support passing of named pipes (Ben Noordhuis)

* Windows: include syscall in fs errors (Bert Belder)

* http: #2888 Emit end event only once (Igor Zinkovsky)

* readline: add multiline support (Rlidwka)

* process: add `process.hrtime()` (Nathan Rajlich)

* net, http, https: add localAddress option (Dmitry Nizovtsev)

* addon improvements (Nathan Rajlich)

* build improvements (Ben Noordhuis, Sadique Ali, T.C. Hollingsworth, Nathan Rajlich)

* add support for "SEARCH" request methods (Nathan Rajlich)

* expose the zlib and http_parser version in process.versions (Nathan Rajlich)
2012-03-13 13:02:38 -07:00
isaacs
10dc129a4b Update npm to 1.1.8 2012-03-13 13:02:02 -07:00
Nathan Rajlich
884a209ccf docs: document the repl "exit" event 2012-03-13 19:58:54 +01:00
Nathan Rajlich
f9da776b33 process: listen for the "exit" even on the main repl 2012-03-13 19:58:53 +01:00
Nathan Rajlich
f214758dd1 repl: better SIGINT handling behavior
Before:

☮ ~ (master)  node
> asdf
(^C again to quit)
> sdcasd☮ ~ (master) 

Now:

☮ ~/node (repl)  ./node
> asfs
> sda
>
(^C again to quit)
> scdsdc
> sdcsdc
>
(^C again to quit)
> sdc
>
(^C again to quit)
>
☮ ~/node (repl) 

^ note that each new line above is a ctrl+c sequence
2012-03-13 19:58:52 +01:00
Nathan Rajlich
6b5a34cdf3 repl: remove redundant check of rli.rine.length
It get's set to '' 1 line above, so we know that that's always 0.
2012-03-13 19:58:52 +01:00
Nathan Rajlich
b7ddd30181 repl: make sure the REPL always flushes with a newline 2012-03-13 19:58:51 +01:00
Nathan Rajlich
659d449460 repl: make REPLServer emit an "exit" event
This can happen when "SIGINT" is processed by the readline interface,
or when the user types ".exit" into the REPL.
2012-03-13 19:58:50 +01:00
Nathan Rajlich
4f63f9f327 repl: make REPLServer inherit from EventEmitter
This is because it should emit an "exit" event when "SIGINT" is received
from the readline interface, or when ".exit" is typed by the user.
2012-03-13 19:58:50 +01:00
Nathan Rajlich
109b16d488 repl: use path.resolve() for the module.filename
Windows was seeing: "C:\\path\\to\\cwd/repl"
2012-03-13 19:58:49 +01:00
isaacs
8b79a31333 shebang should make file executable as well 2012-03-13 10:00:59 -07:00
Trent Mick
1cdadb1e3b issue #2697: have 'make install' set npm shebang to use its node 2012-03-13 09:35:42 -07:00
Artur Adib
1cecfee634 Doc highlight fix 2012-03-13 09:30:32 -07:00
isaacs
943c396b86 Fix merge conflict in doc/api/readline.markdown 2012-03-13 09:16:48 -07:00
Christian Ress
c15e6905c4 Added destroy method to Zlib object in zlib.js module 2012-03-13 08:24:09 -07:00
isaacs
4e85257c6e Patches floating on V8 2012-03-12 21:50:31 -07:00
isaacs
e4fc2cbfd3 Upgrade v8 to 3.9.17 2012-03-12 21:46:36 -07:00
isaacs
bcb0cc0b18 Upgrade npm to 1.1.6
* Fix #472 Adds support for os/cpu fields in package.json (Adam Blackburn)
* Don't use existing pkg if explicit
* Install missing deps, even if they are in bundleDependencies
* bundle node-gyp
* Automatically node-gyp build stuff with a bindings.gyp
* Fix #2230 Unpack in place. No folder renaming malarky
* Never create un-listable directories
* Fix cases where an optionalDependency fails to build
* Always ignore .wafpickle-7 files
* fix shrinkwrap test
* Fix: bundleDependencies being re-installed unnecessarily
2012-03-12 21:34:07 -07:00
Nathan Rajlich
9701f1c4b2 process: expose the zlib version in use in process.versions 2012-03-12 23:29:20 +01:00
Ben Noordhuis
531eba18a6 zlib: fix include of zlib.h
Including <zlib.h> may lead to false positives when the user specifies a bad
path in `./configure --shared-zlib --shared-zlib-includes=/path/to/zlib`. If
a zlib.h exists somewhere on the system include path (common on UNIX systems),
the compiler will include that instead, possibly leading to header mismatch
errors that are hard to debug.
2012-03-12 23:22:48 +01:00
Łukasz Walukiewicz
677c2c112c Ignore an empty port component when parsing URLs. 2012-03-12 12:46:56 -07:00
isaacs
a10cfba766 module: remove 'exited', replace 'children' array 2012-03-12 10:27:11 -07:00
Yoshihiro Kikuchi
c450ac343f docs: fix using legacy api in the buffer doc 2012-03-12 15:04:53 +01:00
Nao Iizuka
f8ce384446 docs: correct the description of assert.ok() 2012-03-12 02:27:55 +01:00
Ben Noordhuis
4472f7bbc3 http: use HTTP_METHOD_MAP macro 2012-03-12 02:23:34 +01:00
Ben Noordhuis
79cbe1fdbb deps: upgrade http_parser to 8bec3ea 2012-03-12 02:20:52 +01:00
Ben Noordhuis
407ecc6b5f docs: console.dir() prints to stdout, not stderr 2012-03-12 01:37:34 +01:00
ssuda
9b672bcaa2 tls: parsing multiple values of a key in ssl certificate
Fixes #2864.
2012-03-10 23:43:16 +09:00
Nathan Rajlich
36761b2055 process: expose the http_parser version in process.versions 2012-03-10 00:22:42 +01:00
Ben Noordhuis
ff4a9d381d core: use proper #include directives 2012-03-10 00:14:14 +01:00
Ben Noordhuis
8c02f9b7c8 buffer: throw from constructor if length > kMaxLength
Throw, don't abort. `new Buffer(0x3fffffff + 1)` used to bring down the process
with the following error message:

  FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData() length
  exceeds max acceptable value

Fixes #2280.
2012-03-09 23:57:03 +01:00
Ben Noordhuis
2589d55611 core: add ThrowError(), ThrowTypeError(), ThrowRangeError() 2012-03-09 23:31:03 +01:00
Ben Noordhuis
296b7a580b cluster: support passing of named pipes
Fixes triggered assertion:

  Assertion failed: (0 && "bad address family"), function GetPeerName,
  file ../src/tcp_wrap.cc, line 237.

Fixes #2870.
2012-03-09 09:42:13 -08:00
Ben Noordhuis
9d72a742e3 uv: upgrade 8c78cb4 2012-03-09 09:42:12 -08:00
Igor Zinkovsky
0c68604823 add jslint to vcbuild.bat 2012-03-08 11:39:39 -08:00
Bert Belder
31ad1d29c7 Merge branch 'v0.6' 2012-03-08 03:14:48 +01:00
Igor Zinkovsky
5ad0140f48 Emit end event only once
fixes #2888

Previously a pair of end events would be emitted if a response was
paused/resumed, and the underlying socket was closed while the
response was paused
2012-03-07 13:37:39 -08:00
Yoshihiro Kikuchi
f82ef0f7c3 http: remove ClientRequest.prototype.pause()
ClientRequest.prototype.pause() is not needed. ClientRequest is a writable
stream and deferring to OutgoingMessage.prototype.pause() is broken, the method
does not exist.
2012-03-07 20:17:36 +01:00
Shea Levy
024451c65c fork: don't clear environment by default
- Set options.env to process.env instead of {} by default.
- Shallow clone the passed options.env in case the user passed process.env directly.
2012-03-07 17:25:59 +01:00
Colton Baker
c84b3c4b73 readline: ignore stray escape sequence
Fixes #2876.
2012-03-07 15:05:34 +01:00
Bert Belder
408f450286 client latency benchmark: don't require('request') 2012-03-07 04:52:29 +01:00
isaacs
150053b3fa Typo in http_server_lag.js script
Thanks, @mscdex
2012-03-06 19:31:16 -08:00
isaacs
fb53986a80 Bash script for running http-simple benchmarks 2012-03-06 18:19:17 -08:00
isaacs
17da4242b0 A server with configurable lag for testing 2012-03-06 18:19:17 -08:00
isaacs
d5fca08da4 A benchmark script for measuring client latency 2012-03-06 18:19:17 -08:00
ssuda
b72d43cbf9 dgram: fix when we call .close() inside 'listening' 2012-03-06 22:20:23 +01:00
Ming Liu
b6023905ff docs: correct repl eval callback signature 2012-03-06 20:46:27 +01:00
Nathan Rajlich
07c886f944 process: add process.hrtime()
This commit adds a high-resolution timer function.
2012-03-06 20:43:55 +01:00
Ben Noordhuis
544e5ee1fb bench: add http_simple_auto benchmark
Starts a server and benchmarks it with ab.
2012-03-06 18:11:53 +01:00
Rlidwka
443071db57 readline: add multiline support 2012-03-06 13:37:42 +01:00
Dmitry Nizovtsev
1e9bcf26ce net, http, https: add localAddress option
Binds to a local address before making the outgoing connection.
2012-03-06 13:35:49 +01:00
Igor Zinkovsky
9ea5a4c468 fix simple/test-process-argv-0 on windows 2012-03-05 16:51:04 -08:00
Shigeki Ohtsu
59c3923672 process: show detailed error message in process.dlopen() 2012-03-06 01:34:39 +01:00
Nathan Rajlich
39ce94276a addon: use absolute paths for the node include dirs
This fixes running gyp_addon from across filesystems on Windows.

This is essentially a gyp bug where it's not relativizing properly
across filesystems. See TooTallNate/node-gyp#15 for the gory details.
2012-03-05 22:53:16 +01:00
Nathan Rajlich
1520c7bf5b addon: add module_root_dir gyp variable
For native modules to use in their gyp files.

It gives the absolute path to the root of the module directory, i.e. where your
main binding.gyp file is located.

This seems helpful for some modules where the build system is more advanced and
using absolute paths is a requirement.
2012-03-05 22:39:12 +01:00
Igor Zinkovsky
e10bd5177f disable simple/test-signal-handler on Windows 2012-03-05 13:20:13 -08:00
Ben Noordhuis
5ebc05f560 build: disable -fvisibility=hidden if gcc < 4.0.0 2012-03-05 17:03:27 +01:00
Ben Noordhuis
5062741bd7 build: make CC command in -fstrict-aliasing check configurable 2012-03-05 17:03:15 +01:00
Sadique Ali
707863c1fb build: make CC command in host check configurable 2012-03-05 16:56:52 +01:00
Ben Noordhuis
c97b4f1971 build: remove unnecessary link flags from node.gyp 2012-03-05 16:41:51 +01:00
Ben Noordhuis
e0796b6f1f uv: upgrade to a93dc7e 2012-03-05 15:38:43 +01:00
isaacs
959a19e118 lint 2012-03-03 23:48:57 -08:00
isaacs
1d5b6f26fe Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	ChangeLog
	Makefile
	deps/npm/AUTHORS
	deps/npm/html/api/bin.html
	deps/npm/html/api/bugs.html
	deps/npm/html/api/commands.html
	deps/npm/html/api/config.html
	deps/npm/html/api/deprecate.html
	deps/npm/html/api/docs.html
	deps/npm/html/api/edit.html
	deps/npm/html/api/explore.html
	deps/npm/html/api/help-search.html
	deps/npm/html/api/init.html
	deps/npm/html/api/install.html
	deps/npm/html/api/link.html
	deps/npm/html/api/load.html
	deps/npm/html/api/ls.html
	deps/npm/html/api/npm.html
	deps/npm/html/api/outdated.html
	deps/npm/html/api/owner.html
	deps/npm/html/api/pack.html
	deps/npm/html/api/prefix.html
	deps/npm/html/api/prune.html
	deps/npm/html/api/publish.html
	deps/npm/html/api/rebuild.html
	deps/npm/html/api/restart.html
	deps/npm/html/api/root.html
	deps/npm/html/api/run-script.html
	deps/npm/html/api/search.html
	deps/npm/html/api/shrinkwrap.html
	deps/npm/html/api/start.html
	deps/npm/html/api/stop.html
	deps/npm/html/api/submodule.html
	deps/npm/html/api/tag.html
	deps/npm/html/api/test.html
	deps/npm/html/api/uninstall.html
	deps/npm/html/api/unpublish.html
	deps/npm/html/api/update.html
	deps/npm/html/api/version.html
	deps/npm/html/api/view.html
	deps/npm/html/api/whoami.html
	deps/npm/html/doc/README.html
	deps/npm/html/doc/adduser.html
	deps/npm/html/doc/bin.html
	deps/npm/html/doc/bugs.html
	deps/npm/html/doc/build.html
	deps/npm/html/doc/bundle.html
	deps/npm/html/doc/cache.html
	deps/npm/html/doc/changelog.html
	deps/npm/html/doc/coding-style.html
	deps/npm/html/doc/completion.html
	deps/npm/html/doc/config.html
	deps/npm/html/doc/deprecate.html
	deps/npm/html/doc/developers.html
	deps/npm/html/doc/disputes.html
	deps/npm/html/doc/docs.html
	deps/npm/html/doc/edit.html
	deps/npm/html/doc/explore.html
	deps/npm/html/doc/faq.html
	deps/npm/html/doc/folders.html
	deps/npm/html/doc/help-search.html
	deps/npm/html/doc/help.html
	deps/npm/html/doc/index.html
	deps/npm/html/doc/init.html
	deps/npm/html/doc/install.html
	deps/npm/html/doc/json.html
	deps/npm/html/doc/link.html
	deps/npm/html/doc/list.html
	deps/npm/html/doc/npm.html
	deps/npm/html/doc/outdated.html
	deps/npm/html/doc/owner.html
	deps/npm/html/doc/pack.html
	deps/npm/html/doc/prefix.html
	deps/npm/html/doc/prune.html
	deps/npm/html/doc/publish.html
	deps/npm/html/doc/rebuild.html
	deps/npm/html/doc/registry.html
	deps/npm/html/doc/removing-npm.html
	deps/npm/html/doc/restart.html
	deps/npm/html/doc/root.html
	deps/npm/html/doc/run-script.html
	deps/npm/html/doc/scripts.html
	deps/npm/html/doc/search.html
	deps/npm/html/doc/semver.html
	deps/npm/html/doc/shrinkwrap.html
	deps/npm/html/doc/star.html
	deps/npm/html/doc/start.html
	deps/npm/html/doc/stop.html
	deps/npm/html/doc/submodule.html
	deps/npm/html/doc/tag.html
	deps/npm/html/doc/test.html
	deps/npm/html/doc/uninstall.html
	deps/npm/html/doc/unpublish.html
	deps/npm/html/doc/update.html
	deps/npm/html/doc/version.html
	deps/npm/html/doc/view.html
	deps/npm/html/doc/whoami.html
	deps/npm/lib/install.js
	deps/npm/lib/ls.js
	deps/npm/man/man1/npm.1
	deps/npm/man/man1/shrinkwrap.1
	deps/npm/man/man3/npm.3
	deps/npm/man/man3/shrinkwrap.3
	deps/npm/node_modules/request/main.js
	deps/npm/node_modules/request/package.json
	deps/npm/package.json
	deps/uv/src/unix/core.c
	deps/v8/src/conversions-inl.h
	deps/v8/src/elements.cc
	deps/v8/src/version.cc
	doc/about/index.html
	doc/api/assert.markdown
	doc/api/child_process.markdown
	doc/api/cluster.markdown
	doc/api/crypto.markdown
	doc/api/debugger.markdown
	doc/api/dgram.markdown
	doc/api/dns.markdown
	doc/api/documentation.markdown
	doc/api/events.markdown
	doc/api/fs.markdown
	doc/api/globals.markdown
	doc/api/http.markdown
	doc/api/https.markdown
	doc/api/modules.markdown
	doc/api/net.markdown
	doc/api/os.markdown
	doc/api/path.markdown
	doc/api/process.markdown
	doc/api/querystring.markdown
	doc/api/readline.markdown
	doc/api/stdio.markdown
	doc/api/stream.markdown
	doc/api/timers.markdown
	doc/api/tls.markdown
	doc/api/tty.markdown
	doc/api/url.markdown
	doc/api/util.markdown
	doc/api/vm.markdown
	doc/api/zlib.markdown
	doc/api_assets/style.css
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	doc/template.html
	src/node_version.h
	tools/doc/html.js
	tools/gyp/test/mac/app-bundle/empty.c
2012-03-03 23:38:52 -08:00
isaacs
4053c01b53 First arg to fs.fchown is an int, not a string
Bug introduced by 26bfb6bea4

Fix isaacs/npm#2225
2012-03-03 14:40:29 -08:00
Igor Zinkovsky
61be6844aa disable fs.watchFile tests on windows 2012-03-03 14:35:21 -08:00
ssuda
578ba76e6c util: fix util.format() formatting of %% 2012-03-03 18:22:34 +01:00
Shigeki Ohtsu
d6f0ecc622 build: fix gcc version check 2012-03-03 18:07:39 +01:00
Shigeki Ohtsu
b6595c4d60 build: remove unused import from configure script 2012-03-03 18:07:22 +01:00
Jimb Esser
78db18739a tls: proxy set(Timeout|NoDelay|KeepAlive) methods
- fix crash calling ClientRequest::setKeepAlive if the underlying request is
  HTTPS.
- fix discarding of callback parameter when calling ClientRequest::setTimeout on
  HTTPS requests.
- fix discarding of noDelay parameter when calling ClientRequest::setNoDelay on
  HTTPS requests.
2012-03-03 00:28:43 +01:00
Ben Noordhuis
30b29d8f87 build: disable -fstrict-aliasing if gcc < 4.6.0
A compiler bug in older versions of gcc makes it do unsafe optimizations at -O1
and higher. This manifested itself with (at least) gcc 4.5.2 on SmartOS because
it made V8 hang in a busy loop.

See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45883
2012-03-02 09:26:35 -08:00
Ben Noordhuis
0613af0a20 build: remove --shared-cares configure switch
c-ares is a) bundled with libuv now, and b) contains out-of-tree patches. It no
longer makes sense to link against a shared library.

Fixes #2117.
2012-03-02 16:24:37 +01:00
Igor Zinkovsky
5e803219d8 update libuv to 702f905f73 2012-03-01 14:40:04 -08:00
Igor Zinkovsky
9be20afeb5 update libuv to 6bbccf1fe0 2012-03-01 14:12:19 -08:00
Igor Zinkovsky
67b10f816c fix test-net-pipe-connect-errors for windows 2012-03-01 14:09:10 -08:00
Vincent Ollivier
8cdbf014bd test: fix typo in test-child-process-stdout-flush 2012-03-01 16:52:46 +01:00
Ben Noordhuis
bab59f33e7 uv: upgrade to 0459097 2012-02-29 16:16:13 +01:00
Ben Noordhuis
ebb79cdaba Revert "test-fs-watch: Add faster failure, and link to #2813"
This reverts commit 9a6f936c8a.
2012-02-29 14:26:04 +01:00
Blake Miner
7343f8e776 tls: add honorCipherOrder option to tls.createServer()
Documented how to mitigate BEAST attacks.
2012-02-29 02:16:08 +01:00
Joshua Holbrook
56cfcea4b4 child_process: remove dummy "setsid" option setting 2012-02-29 02:10:56 +01:00
Ben Noordhuis
af7960b295 uv: upgrade to 2f886c8 2012-02-28 18:11:48 +01:00
Shigeki Ohtsu
18acdff8d3 build: fix the help output of vcbuild.bat 2012-02-28 17:27:52 +01:00
koichik
cd5d2473a4 net: fix race write() before and after connect()
Fixes #2827.
2012-02-28 19:57:13 +09:00
isaacs
44daa9836b Wrap NodeScript binding class in JavaScript layer
This makes it easy to prevent errors where Script methods
are called on non-script objects, resulting in Assertion failures.
2012-02-27 17:28:42 -08:00
isaacs
29463cb60c Update argv0 test to verify correct behavior 2012-02-27 16:41:30 -08:00
AJ ONeal
493a6bb19a [ISSUE #2554 #2567] throw if fs args for 'start' or 'end' are strings 2012-02-27 14:18:51 -08:00
Nathan Rajlich
ba0892ba91 build: build addons into the "build" dir instead of "out"
This matches the old node-waf system. Having two different dirs for this stuff
is dumb.
2012-02-27 14:04:46 -08:00
Mathias Bynens
cacd651ec6 punycode: Update to v1.0.0 2012-02-27 14:00:18 -08:00
isaacs
50cfeef65e Remove -Wall from v8 build 2012-02-27 13:55:23 -08:00
isaacs
412cebec9e v8: Remove OutputDirectory from build/common.gypi 2012-02-27 13:43:58 -08:00
isaacs
2e24ded6d2 Upgrade v8 to 3.9.11 2012-02-27 13:43:31 -08:00
isaacs
fde26002f1 v8: Remove OutputDirectory from build/common.gypi 2012-02-27 12:11:10 -08:00
isaacs
f4641bd4de Update v8 to 3.9.9 2012-02-27 12:11:09 -08:00
Shigeki Ohtsu
82ad1f87fa Fix #2830 for the old gcc bug on SmartOS 2012-02-27 12:02:25 -08:00
isaacs
0e7dad3f6e Merge branch 'json-api-docs' 2012-02-27 12:00:27 -08:00
isaacs
7af2d6b985 Handle miscs better 2012-02-27 11:44:36 -08:00
isaacs
909ea3008e Debugger should be a misc, not 'concept' 2012-02-27 11:44:30 -08:00
isaacs
5571c1aaa4 'Events' is a module, not an event named 's' 2012-02-27 11:37:26 -08:00
isaacs
f9df88c6da s/streams/stream/ 2012-02-27 11:18:10 -08:00
isaacs
f9e464f95a s/buffers/buffer/ 2012-02-27 11:14:38 -08:00
isaacs
9fe92590b2 doc refactor: zlib 2012-02-27 11:14:38 -08:00
isaacs
f4720d8dbd doc refactor: vm 2012-02-27 11:14:38 -08:00
isaacs
8e6086b403 doc refactor: util 2012-02-27 11:14:37 -08:00
isaacs
a54b70a355 doc refactor: url 2012-02-27 11:14:37 -08:00
isaacs
cf4700aff4 doc refactor: tty 2012-02-27 11:14:37 -08:00
isaacs
c9b35b9923 doc refactor: tls 2012-02-27 11:14:37 -08:00
isaacs
c4d6c7f829 doc refactor: timers 2012-02-27 11:14:37 -08:00
isaacs
f0694e1e0c doc refactor: synopsis 2012-02-27 11:14:36 -08:00
isaacs
03968739c5 doc refactor: streams 2012-02-27 11:14:36 -08:00
isaacs
94c6bcfdad doc refactor: stdio 2012-02-27 11:14:36 -08:00
isaacs
dfdf09d43d doc refactor: repl 2012-02-27 11:14:36 -08:00
isaacs
728386bfb2 doc refactor: readline 2012-02-27 11:14:35 -08:00
isaacs
628bc835ae doc refactor: querystring 2012-02-27 11:14:35 -08:00
isaacs
a52254d0d7 doc refactor: process 2012-02-27 11:14:35 -08:00
isaacs
aef61ee367 doc refactor: path 2012-02-27 11:14:35 -08:00
isaacs
0e752246d3 doc refactor: os 2012-02-27 11:14:35 -08:00
isaacs
2fd5cb3d2e doc refactor: net 2012-02-27 11:14:34 -08:00
isaacs
0cf7156f08 doc refactor: modules 2012-02-27 11:14:34 -08:00
isaacs
2806c6ce28 doc refactor: https 2012-02-27 11:14:34 -08:00
isaacs
02e288b640 doc refactor: http 2012-02-27 11:14:34 -08:00
isaacs
af7314e190 doc refactor: globals 2012-02-27 11:14:34 -08:00
isaacs
40190b7c92 doc refactor: fs 2012-02-27 11:14:33 -08:00
isaacs
ec02e82760 doc refactor: events 2012-02-27 11:14:33 -08:00
isaacs
2f148845e8 doc refactor: dns 2012-02-27 11:14:33 -08:00
isaacs
9a0495a4b0 doc refactor: dgram 2012-02-27 11:14:33 -08:00
isaacs
dd1b3b6dfd doc refactor: debugger 2012-02-27 11:14:33 -08:00
isaacs
ab294ad93d doc refactor: crypto 2012-02-27 11:14:32 -08:00
isaacs
6e51db1268 doc refactor: cluster 2012-02-27 11:14:32 -08:00
isaacs
60aa852a03 doc refactor: buffers 2012-02-27 11:14:32 -08:00
isaacs
97ee38707b doc refactor: assert 2012-02-27 11:14:32 -08:00
isaacs
44559a3211 doc refactor: appendix_1 2012-02-27 11:14:32 -08:00
isaacs
24a2706a3b doc refactor: addons 2012-02-27 11:14:31 -08:00
isaacs
11d27367cd Add 'about these docs' section 2012-02-27 11:14:31 -08:00
isaacs
bd880e7f3f s/child_processes/child_process/ 2012-02-27 11:14:24 -08:00
isaacs
3bec62b012 Remove empty sections 2012-02-27 11:14:16 -08:00
isaacs
3d5f7594b5 Increase contrast of links, decrease contrast of bullets 2012-02-27 11:01:53 -08:00
isaacs
ac5e7072c9 Update styles to reflect changed api doc html structure 2012-02-27 11:01:33 -08:00
isaacs
7aee49d967 Update template to use new token style 2012-02-27 10:59:51 -08:00
isaacs
7d6d5e263e Use new doc generation tool 2012-02-27 10:59:35 -08:00
isaacs
964d03bc3f New documentation generation tool 2012-02-27 10:59:01 -08:00
Ben Noordhuis
90fd70d284 docs: fix http.ClientRequest.write() documentation
'an array of integers' == very, very deprecated
2012-02-27 04:00:22 +01:00
Nathan Rajlich
aa35564ca1 Use NODE_MODULE in the hello-world addon example.
Fixes Windows throwing "unknown error" when trying to require the .node file.
2012-02-27 02:44:33 +01:00
Nathan Rajlich
3f1f2d1497 addon: write gyp generated files to the 'out' dir 2012-02-27 02:40:09 +01:00
T.C. Hollingsworth
d03b8487c6 build: support shared zlib 2012-02-27 02:31:23 +01:00
Nathan Rajlich
3c68c85f18 build: use -pthreads (not -pthread) on Solaris 2012-02-27 02:28:06 +01:00
T.C. Hollingsworth
2d7b43f466 build: use else instead of node_shared_v8==false 2012-02-26 00:32:36 +01:00
koichik
ae762b620e docs: add ciphers option to https.request() 2012-02-25 23:17:05 +09:00
koichik
2f5e084147 docs: remove duplicate option of tls.connect() 2012-02-25 23:07:30 +09:00
Roly Fentanes
db8940dae2 newListener emits correct fn when using once
Fixes #2826.
2012-02-25 15:37:38 +09:00
isaacs
d4d45a1757 Update npm to 1.1.2 2012-02-24 18:51:22 -08:00
Maciej Małecki
27a937bcf8 Revert "startup: use path.resolve instead of path.join(cwd, ...)"
This reverts commit b0c1541227.

Reverted commit introduced a regression causing `process.argv[0]` to be
invalid in node processes spawned from `PATH` (without explicit path to
executable file - for example when using global node installation).

Instead of finding a correct path to the executable, `process.cwd()`
would be prepended to `process.argv[0]`.
2012-02-23 20:23:26 -08:00
Maciej Małecki
b73ec84ce1 test: test for process.argv[0] correctness
joyent/node@b0c1541227 introduced a
regression causing `process.argv[0]` to be invalid in node processes
spawned from `PATH` (without explicit path to executable file - for
example when using global node installation).

Instead of finding a correct path to the executable, `process.cwd()`
would be prepended to `process.argv[0]`.
2012-02-23 20:23:24 -08:00
Nathan Rajlich
a84adad078 Default node_shared_v8 to false.
Fixes #2818.
2012-02-23 14:52:39 -08:00
isaacs
59ecf2ccf7 Revert "Revert "build: support shared V8 properly""
This reverts commit a9130222bd.
2012-02-23 14:52:18 -08:00
isaacs
f492baa61d Now working on 0.7.6 2012-02-23 14:41:36 -08:00
isaacs
c5cbc3db47 Merge branch 'v0.7.5-release' 2012-02-23 14:39:58 -08:00
isaacs
d384b8b0d2 2012.02.23, Version 0.7.5 (unstable)
* startup speed improvements (Maciej Małecki)

* crypto: add function getDiffieHellman() (Tomasz Buchert)

* buffer: support decoding of URL-safe base64 (Ben Noordhuis)

* Make QueryString.parse() even faster (Brian White)

* url: decode url entities in auth section (Ben Noordhuis)

* http: support PURGE request method (Ben Noordhuis)

* http: Generate Date headers on responses (Mark Nottingham)

* Fix #2762: Add callback to close function. (Mikeal Rogers)

* dgram: fix out-of-bound memory read (Ben Noordhuis)

* repl: add automatic loading of built-in libs (Brandon Benvie)

* repl: remove double calls where possible (Fedor Indutny)

* Readline improvements. Related: #2737 #2756 (Colton Baker)

* build: disable -fomit-frame-pointer on solaris (Dave Pacheco)

* build: arch detection improvements (Nathan Rajlich)

* build: Make a fat binary for the OS X `make pkg`. (Nathan Rajlich)

* jslint src/ and lib/ on 'make test' (isaacs)
2012-02-23 14:12:39 -08:00
isaacs
a9130222bd Revert "build: support shared V8 properly"
This reverts commit 3d1b670640.

Breaks build on windows.
https://gist.github.com/1895279
2012-02-23 14:12:14 -08:00
Shigeki Ohtsu
c1fcb1db99 build: change default BUILDTYPE of vcbuild.bat
From Debug to Release.
2012-02-23 14:11:26 +01:00
Shigeki Ohtsu
491ec171ec build: change default BUILDTYPE of gyp to Release 2012-02-23 14:11:26 +01:00
Shigeki Ohtsu
58e5d69250 build: fix the case where config.gypi doesn't exist 2012-02-23 14:11:26 +01:00
Shigeki Ohtsu
680d75af34 build: make default_configuration consistent with BUILDTYPE 2012-02-23 14:11:26 +01:00
Ben Noordhuis
b92a919500 Remove unused variables. 2012-02-23 04:11:07 -08:00
isaacs
1b5048b288 doc: refer to modules doc rather than src/node.js 2012-02-23 00:18:17 -08:00
isaacs
d3b8372615 lint, missed in QS speed merge 2012-02-22 20:58:24 -08:00
isaacs
73806b56e5 Add new authors 2012-02-22 20:58:24 -08:00
isaacs
9a6f936c8a test-fs-watch: Add faster failure, and link to #2813 2012-02-22 20:57:55 -08:00
isaacs
92cb684e78 Change test fixture from symlink to regular file
The only test using this is test/simple/test-fs-chmod.js, and it was
treating a.js and a1.js as two separate files, resulting in a race
condition.  (Interestingly enough, it was *not* using the symlink file to
test lchmod, which uses a different temp file.)
2012-02-22 20:57:43 -08:00
Ben Noordhuis
3502e45b6c dgram: defer send error to next tick 2012-02-23 02:07:39 +01:00
Ben Noordhuis
defa637378 dgram: fix out-of-bound memory read 2012-02-23 02:07:39 +01:00
Colton Baker
fd61bfc731 readline: ^Z (SIGSTP) handling
Bugfix and update.

- Fixed bug where Node's REPL wouldn't continue when returning from ^Z
  (SIGTSTP)
- Removed old readline callback

Readline API update with docs.

- ^Z (SIGTSTP) is now bypassed on Windows systems.
- SIGCONT is now bypassed on Windows systems.
- Docs updated to reflect above.
2012-02-22 16:07:23 -08:00
Colton Baker
ac9fa2b846 Removed rl.on('close', ...) callback 2012-02-22 16:05:55 -08:00
Nathan Rajlich
e60b18bbdf Make a fat binary for the OS X make pkg. 2012-02-22 14:27:08 -08:00
Cam Pedersen
7f94b5ccca docs: remove duplicate socket.write 2012-02-22 22:20:57 +01:00
T.C. Hollingsworth
3d1b670640 build: support shared V8 properly
-don't pull in bundled v8 as a dependency when node_shared_v8==true
-use node_shared_v8_includes for v8.h and v8-debug.h
2012-02-22 15:20:23 +01:00
Myles Byrne
21374c3903 build: remove unused makefile target 2012-02-22 14:25:56 +01:00
isaacs
27d8b059fa Pause process.stdin in stdin getter
Otherwise, it'll be ref'ed, and keep the process hanging.
2012-02-21 15:26:35 -08:00
Brian White
5e3ca98155 Make QueryString.parse() even faster 2012-02-21 12:17:26 -08:00
isaacs
3817b12fec Add Håvard Stranden to AUTHORS file 2012-02-21 12:03:15 -08:00
isaacs
bae4018b30 Run jslint after tests, not before 2012-02-21 12:02:57 -08:00
Fedor Indutny
080ffb8b2c docs: remove server.pause
This functionality was removed when libuv landed in node. It is useless
and can be easily implemented in user-land.
2012-02-21 20:50:01 +06:00
Ben Noordhuis
b9127eb0a5 buffer: support decoding of URL-safe base64 2012-02-21 15:33:14 +01:00
Andreas Madsen
feff9bbb67 docs: remove setSecure() from net module docs
socket.setSecure() was removed in v0.3 and there are no deprecated warning in
code it should be removed from the documentation in 0.7
2012-02-21 15:18:16 +01:00
Tomasz Buchert
c6a04ce78f crypto: add function getDiffieHellman()
Returns a well known, predefined RFC group.
2012-02-21 14:07:25 +01:00
Nathan Rajlich
19133cac02 build: better host_arch() definition in configure
On one of my OS X Lion machines, it always reports i386, even though 64-bit
is supported. This lookup better matches how WAF determines the host arch,
which was correctly getting 64-bit even on this screwy machine.
2012-02-20 22:14:23 +01:00
Maciej Małecki
da908364a8 tls http https: don't pollute user's options object 2012-02-20 21:58:00 +01:00
Maciej Małecki
c6c6f98f1c util: add util._extend for extending objects
There were 2 duplicates with such functionality in `cluster` and
`child_process` modules which were replaced by this function.
2012-02-20 21:58:00 +01:00
Andreas Madsen
3f4062309e core: ignore too many arguments, don't assert 2012-02-20 21:55:35 +01:00
Ben Noordhuis
f116e17a23 test: update HTTP basic auth test
Verify that URL-encoded entities are properly encoded into the Authorization
header.
2012-02-20 17:24:14 +01:00
Ben Noordhuis
86f4846c21 url: decode url entities in auth section
Fixes #2736.
2012-02-20 17:11:21 +01:00
Fedor Indutny
0cebfc8ddb tests: kill process group on failure
Test suite is often leaving `stray` processes on failure. They are
harmless, but may cause future test runs fail because those `stray`
processes are occupying `common.PORT` or due to some other reasons.

Killing whole process group on test suite failure should help in such
cases.
2012-02-20 22:07:19 +06:00
Ben Noordhuis
de5e3f6a6f http: support PURGE request method 2012-02-20 16:12:48 +01:00
Ben Noordhuis
f0c5165f81 http_parser: upgrade to 62110ef 2012-02-20 16:12:33 +01:00
Maciej Małecki
b0c1541227 startup: use path.resolve instead of path.join(cwd, ...) 2012-02-20 16:04:44 +01:00
Maciej Małecki
1109c8fc4e startup: move EventEmitter closer to the lookup
This makes startup faster by ~0.2 ms on my computer.
2012-02-20 16:04:44 +01:00
Maciej Małecki
c3a9733ac1 startup: use .hasOwnProperty instead of in
Benchmarks show that `.hasOwnProperty` is faster than `in` in V8. It
makes startup ~0.5 ms faster on my computer.
2012-02-20 16:04:44 +01:00
Brandon Benvie
b72277183f repl: add automatic loading of built-in libs 2012-02-20 13:56:27 +01:00
Luke Gallagher
8d3c46daa8 util: fix typo in lib/util.js 2012-02-20 13:42:27 +01:00
Ben Noordhuis
999757983c test: don't let debugger listen on common.PORT
simple/test-debugger-repl-utf8 has a tendency to fail and leave behind a stray
process that listens on common.PORT, making later tests fail with EADDRINUSE.
2012-02-20 13:31:00 +01:00
Ben Noordhuis
7f4aba91d3 test: include common.js in all tests 2012-02-20 13:29:11 +01:00
Nathan Rajlich
028043dd02 build: map i686 to ia32 2012-02-20 11:49:57 +01:00
Nathan Rajlich
546870edd8 build: use proper -arch for target_arch on OS X 2012-02-20 11:49:32 +01:00
Nathan Rajlich
af4a96ce6e build: test uname -m first, then uname -p
Prevent false i386 on 64-bit OS X.
2012-02-20 11:49:25 +01:00
Ben Noordhuis
4af673e161 gyp: update to r1214 2012-02-20 11:47:03 +01:00
koichik
7ae0d473a6 test: fix test-tls-over-http-tunnel with v0.7 2012-02-19 11:46:58 -08:00
Mikeal Rogers
d530ee62cd Issue #2762. Add callback to close function. 2012-02-18 17:46:28 -08:00
isaacs
96338432e2 jslint src/ and lib/ on 'make test' 2012-02-18 16:04:10 -08:00
isaacs
0cdf85e28d Lint all the JavaScripts. 2012-02-18 15:34:57 -08:00
isaacs
31721da4b1 Merge remote-tracking branch 'ry/v0.6' into v0.6-merge
Conflicts:
	AUTHORS
	ChangeLog
	Makefile
	doc/about/index.html
	doc/api/tls.markdown
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	doc/template.html
	lib/http.js
	lib/tls.js
	src/node_version.h
	src/platform_win32.cc
	test/simple/test-tls-connect-given-socket.js
2012-02-18 09:46:58 -08:00
Nathan Rajlich
0787287021 build: remove 'config.mk' during make distclean 2012-02-18 00:34:19 +01:00
Dave Pacheco
7864bb9eb8 build: disable -fomit-frame-pointer on solaris
This "optimization" cripples debuggability and has dubious performance value,
so we want to disable it at least on SmartOS.
2012-02-18 00:30:00 +01:00
Maciej Małecki
977e211421 debugger: rename process.debug_port to process.debugPort
We should comply to to camelCase naming convention.
2012-02-18 00:45:56 +06:00
Fedor Indutny
ae5e23310e repl: remove double calls where possible
Repl is doing double evaluation of code: wrapped in parens and without
them. That's needed to allow users typing multiline chunks of code by
handling syntax errors on repl side. However if function declaration is
wrapped in parens (`(function a() {})`) calling it will be impossible,
so we're evaluating functions twice. That works fine for declaration,
but if entered code chunk returns function - it should not be called
twice.

fix #2773
2012-02-18 00:30:52 +06:00
Colton Baker
ce485791db Readline proposal and bugfixes. Related: #2737 #2756
- Removed extra newline from .question(); Users can input a
  newline if it they require it.
- Removed .close() due to it only emulating closing, causing a bug where
  readline is left open to trigger events such as .on('line', ...').
- Removed ._attemptClose()
- .pause() now triggers event .on('pause', ...)
- .resume() now triggers event .on('resume', ...)
- CTRL-C (SIGINT) in readline will now default to .pause() if no SIGINT event
  is present.
- CTRL-D (delete right) will also default to .pause() if there is nothing to
  delete (signaling the end of the file).
- Added new event `SIGTSTP`
- Added new event `SIGCONT`
- Added `resume` to `write` to resume the stream if paused.
- Docs updated.
- Updated repl.js
2012-02-16 12:12:03 +06:00
Maciej Małecki
3bc3af0276 process: remove old notices about removed methods
These methods were removed a long time ago. Keeping these notices here
makes no sense anymore.

Also, removing this part of code slightly speeds up the startup.
2012-02-15 19:45:33 -08:00
Nathan Rajlich
71e975669c Default to static linking CRT on Windows. 2012-02-15 13:32:46 -08:00
Mark Nottingham
1e425e3fa7 Generate Date headers on responses when not already present. 2012-02-15 12:35:34 -08:00
isaacs
d653732157 Merge branch 'v0.7.4-release' 2012-02-15 11:37:48 -08:00
isaacs
6a2cb6c506 Now working on 0.7.5 2012-02-15 11:37:34 -08:00
Ben Noordhuis
6141386f7e http: allow multiple WWW-Authenticate headers 2012-02-15 17:04:10 +01:00
isaacs
de21de920c 2012.02.14, Version 0.7.4 (unstable)
* Upgrade V8 to 3.9.5

* Upgrade npm to 1.1.1

* build: Detect host_arch better (Karl Skomski)

* debugger: export `debug_port` to `process` (Fedor Indutny)

* api docs: CSS bug fixes (isaacs)

* build: use -fPIC for native addons on UNIX (Nathan Rajlich)

* Re-add top-level v8::Locker (Marcel Laverdet)

* Move images out of the dist tarballs (isaacs)

* libuv: Remove uv_export and uv_import (Ben Noordhuis)

* build: Support x64 build on Windows (Igor Zinkovsky)
2012-02-14 14:34:43 -08:00
isaacs
0a4f5e8473 robots.txt 2012-02-14 14:34:43 -08:00
isaacs
9a0d90793e doc: Wrap API doc content in div#apicontent 2012-02-13 15:27:41 -08:00
isaacs
df236e75a2 css: Restrict li fix to #apicontent only. 2012-02-13 15:27:32 -08:00
isaacs
a7af84f988 docs: Move images out of the dist tarball
This puts all images in doc/images/ and references them via
http://nodejs.org/images/.

Any complaints about copyright usage etc. can thus be node/joyent's
problem, rather than the problem of a downstream distribution channel.
2012-02-13 15:27:06 -08:00
Fedor Indutny
e7e4f2f3aa Fix linker error on some gcc version on osx
* See: http://codereview.chromium.org/9382033/
2012-02-14 02:36:08 +06:00
isaacs
3a915b02e8 Upgrade uv to 1d942e2a 2012-02-13 11:10:12 -08:00
isaacs
5041bc1b6c Patches floating on V8
Only SConstruct and build/common.gypi at this point.  All
others are accepted upstream, which greatly simplifies things.
2012-02-13 10:11:28 -08:00
isaacs
68a0c56a7d Upgrade V8 to 3.9.5 2012-02-13 10:05:16 -08:00
Karl Skomski
09ccbef3bb build: detect host_arch better 2012-02-13 17:43:30 +01:00
Fedor Indutny
3f43b1c039 debugger: export debug_port to process
`process.debug_port` is useful for changing debugger port in runtime,
before starting it (via SIGUSR1).

Using `--port=` argument for debugger repl, tests will run debugger
server on a `common.PORT` (as it usually does for any other servers).

`process._debugEnd()` stops debugger and its server.

* debugger: implemented process._debugEnd(), `node debug --port=5858 app.js`
* test: start debugger repl on common.PORT
* fixes #2613
* fixes #2614
2012-02-12 22:27:12 +06:00
Ben Noordhuis
8a6576f764 Merge remote-tracking branch 'origin/v0.6'
Conflicts:
	common.gypi
2012-02-12 16:12:26 +01:00
Ben Noordhuis
a27320e00f uv: upgrade to 4e1f2b1 2012-02-12 16:12:04 +01:00
isaacs
e9adb7fbbc apidoc css: Footer li's should be sans-serif 2012-02-10 20:55:21 -08:00
isaacs
830d0fe95a Fix #2690 css: Set font size in apidoc LIs to match Ps 2012-02-10 19:38:34 -08:00
Nathan Rajlich
d4ccdeaf00 build: use -fPIC for native addons on UNIX
No -fPIC on 32 bits Linux but do enable for the other UNIX flavors.
2012-02-09 14:34:30 +01:00
Andreas Madsen
9da830e895 child_process: stop .disconnect() call if channel is diconnected 2012-02-08 11:42:38 -08:00
isaacs
02c1cb54aa Makefile: Don't use ** in globs
Many shells don't have GLOBSTAR turned on by default.  This is
why uv and v8 so often don't get cleaned out properly.
2012-02-08 09:59:53 -08:00
Marcel Laverdet
9a6012edd9 Re-add top-level v8::Locker
11d1eca9 added a v8 locker to ease development of 3rd party threading
extensions but it created a condition which would cause node to exit
uncleanly while in debug mode; it was reverted in 7543c38d.

The problem here is that the Locker was being disposed after V8 was torn
down. Adding some scoping fixes that.
2012-02-08 14:40:33 +01:00
isaacs
e612143a89 Now working on 0.7.4 2012-02-07 16:44:57 -08:00
isaacs
99059aad8d 2012.02.07, Version 0.7.3 (unstable)
* Upgrade V8 to 3.9.2

* Revert support for isolates. (Ben Noordhuis)

* cluster: Cleanup docs, event handling, and process.disconnect (Andreas Madsen)

* gyp_addon: link with node.lib on Windows (Nathan Rajlich)

* http: fix case where http-parser is freed twice (koichik)

* Windows: disable RTTI and exceptions (Bert Belder)
2012-02-07 15:42:33 -08:00
isaacs
349cab0b48 Check the version before building tarball
I keep forgetting to do this.  It's such a stupid thing.
2012-02-07 15:41:21 -08:00
isaacs
986785c9d2 Fix merge-conflicts in HTML
Thanks, @AndreasMadsen
2012-02-06 23:01:17 -08:00
isaacs
116835561d Merge remote-tracking branch 'ry/v0.6'
Conflicts:
	ChangeLog
	deps/v8/src/version.cc
	deps/v8/tools/gyp/v8.gyp
	doc/about/index.html
	doc/community/index.html
	doc/index.html
	doc/logos/index.html
	doc/template.html
	lib/path.js
	lib/querystring.js
	src/node_version.h
2012-02-06 15:43:21 -08:00
isaacs
e5db01ee29 v8: Remove OutputDirectory from build/common.gypi 2012-02-06 15:22:52 -08:00
isaacs
8be699494e Upgrade V8 to 3.9.2 2012-02-06 15:21:49 -08:00
Andreas Madsen
23514fc946 [doc] cluster: remove part about autoFork since this do not exist 2012-02-06 14:54:11 -08:00
Andreas Madsen
1595a6e885 cluster: use process.disconnect method
After adding a .disconect method and connected flag in child_process
we should no longer use the process._channel object.
2012-02-06 14:54:11 -08:00
Andreas Madsen
a20872045a cluster: simplify process event handling
This simplify the internalMessage and exit event handling
And simply relay message and error event to the worker object
Note that the error event was not relayed before
2012-02-06 14:54:11 -08:00
Nathan Rajlich
5e1471c806 gyp_addon: link with node.lib on Windows
Closes GH-2685
2012-02-06 19:02:45 +01:00
koichik
c2dc673eb5 http: fix http-parser is freed twice
after response to CONNECT/Upgrade request.

Fixes #2704.
2012-02-07 02:29:28 +09:00
Ben Noordhuis
832efb1e01 test: remove deprecated isolates test 2012-02-06 17:47:09 +01:00
Bert Belder
2e2df04b35 Windows: disable RTTI and exceptions 2012-02-06 15:59:08 +01:00
Ben Noordhuis
74a8215a86 Revert support for isolates.
It was decided that the performance benefits that isolates offer (faster spin-up
times for worker processes, faster inter-worker communication, possibly a lower
memory footprint) are not actual bottlenecks for most people and do not outweigh
the potential stability issues and intrusive changes to the code base that
first-class support for isolates requires.

Hence, this commit backs out all isolates-related changes.

Good bye, isolates. We hardly knew ye.
2012-02-06 15:44:42 +01:00
Ben Noordhuis
a9723df1b7 Revert "Process symlinked shared library as .node"
This reverts commit 7e0bf7d57d.

It's possible to make GYP generate an XCode project that produces a .node file,
hence this commit is no longer needed.
2012-02-01 22:28:23 +01:00
isaacs
ec79acb3a6 working on 0.7.3 now 2012-02-01 13:05:04 -08:00
isaacs
a3efcd2006 2012.02.01, Version 0.7.2 (unstable)
* Update V8 to 3.8.9

* Support for sharing streams across Isolates (Igor Zinkovsky)

* #2636 - Fix case where http_parsers are freed too early (koichik)

* url: Support for IPv6 addresses in URLs (Łukasz Walukiewicz)

* child_process: Add disconnect() method to child processes (Andreas Madsen)

* fs: add O_EXCL support, exclusive open file (Ben Noordhuis)

* fs: more specific error messages (Tj Holowaychuk)

* tty: emit 'unknown' key event if key sequence not found (Dan VerWeire, Nathan Rajlich)

* build: compile release build too if BUILDTYPE=Debug (Ben Noordhuis)

* module: fix --debug-brk on symlinked scripts (Fedor Indutny)

* zlib: fix `Failed to set dictionary` issue (Fedor Indutny)

* waf: predict target arch for OS X (Fedor Indutny)
2012-02-01 11:37:12 -08:00
isaacs
05471f5c2a Update v8 to 3.8.9 2012-01-31 18:35:04 -08:00
isaacs
bd21038078 Merge remote-tracking branch 'ry/master' into merge-v0.6 2012-01-31 18:22:10 -08:00
isaacs
18d179c2d8 Merge remote-tracking branch 'ry/v0.6' into master
Conflicts:
	ChangeLog
	deps/uv/src/unix/udp.c
	deps/uv/src/win/fs.c
	deps/uv/src/win/udp.c
	deps/uv/test/test-fs.c
	doc/index.html
	doc/logos/index.html
	doc/template.html
	src/node_version.h
2012-01-31 18:18:00 -08:00
Igor Zinkovsky
db3c4efd1d support for sharing streams accross isolates 2012-01-31 17:45:50 -08:00
Andreas Madsen
33b7fc250f child_process: do not disconnect on exit emit
When using isolate the .fork would break because it had
no .disconnect method. This remove the exit handler there
would call .disconnect since it was not required.
It also change .disconnect to throw if the channel is closed,
this was not possible before because .disconnect would be called
twice.
2012-01-31 17:22:21 -08:00
Ben Noordhuis
03c4aa6aef build: don't set -mmacosx-version-min
It sets __MAC_OS_X_VERSION_MIN_REQUIRED__, which is what we use for feature
detection.
2012-01-31 15:12:12 +01:00
Andreas Madsen
42ea068a1a Test for ChildProcess.disconnect() 2012-01-31 14:47:12 +01:00
Ben Noordhuis
279e7e7341 fs: add O_EXCL support, exclusive open file 2012-01-31 14:29:32 +01:00
Ben Noordhuis
88b919ea56 fs, test: add file open mode tests 2012-01-31 14:29:27 +01:00
Łukasz Walukiewicz
a94ffdaec5 url: Support for IPv6 addresses in URLs.
Fixes #1138, #2610.
2012-01-31 16:58:41 +09:00
Tj Holowaychuk
26bfb6bea4 more specific fs error messages 2012-01-30 22:11:19 -08:00
Igor Zinkovsky
ff40253566 upgrade uv to 812e410772 2012-01-30 15:57:08 -08:00
Roman Shtylman
e97b961815 add node::SetMethod and node::SetPrototypeMethod
defines cannot be used if the callback is a templated and has
multiple template arguments. The comma separating the arguments
breaks the preprocessor argument handling. Using a templated function
is clearer and more idiomatic in c++.
2012-01-30 20:22:38 +01:00
Andreas Madsen
836344c90e Add disconnect method to forked child processes
This disconnect method allows the child to exit gracefully.
This also adds a disconnect event and connect property.
2012-01-30 16:35:27 +01:00
Brandon Benvie
52bd0f93bb core: make .deprecate() warn only once 2012-01-30 14:10:18 +01:00
Brandon Benvie
5403a8ce4c core: add NativeModule.prototype.deprecate
Formalize and cleanup handling of deprecated core methods.
2012-01-30 00:27:07 +01:00
Brandon Benvie
e3c0c86b28 Change removed process methods to be non-enumerable. 2012-01-29 22:17:31 +01:00
Dan VerWeire
e4afb2f724 tty: emit 'unknown' key event if key sequence not found
Add key.code and key.sequence -mad props go out to @TooTallNate
2012-01-28 17:01:04 +01:00
Ben Noordhuis
14b7c4327f uv: upgrade to 3de0411 2012-01-27 22:32:02 +01:00
Fedor Indutny
85a86b5fd6 waf: predict target arch for OSX 2012-01-27 20:37:30 +06:00
Ben Noordhuis
f89beaf3ac build: compile release build too if BUILDTYPE=Debug
It's backwards compatible with the old waf build system. If you want to compile
just the debug build, run `make -C out BUILDTYPE=Debug` instead.

Fixes #2615.
2012-01-26 23:49:57 +01:00
Fedor Indutny
c80abfa0e4 zlib: fix Failed to set dictionary issue 2012-01-25 23:35:35 +06:00
Fedor Indutny
27c85727ed module: fix --debug-brk on symlinked scripts
* fixes #1519
2012-01-24 23:13:37 +06:00
Ben Noordhuis
e806ad39d0 net, tls, http: remove socket.ondrain
Replace the ondrain hack with a regular 'drain' listener. Speeds up the
bytes/1024 http benchmark by about 1.2%.
2012-01-24 15:57:50 +01:00
isaacs
5988872ff1 Merge branch 'v0.7.1-release' 2012-01-24 00:11:59 -08:00
koichik
a6f3451e25 http: fix test-http-should-keepalive.js is fail
3df7c90 was removed when conflict was resolved.
2012-01-24 13:57:20 +09:00
isaacs
77f2cb66d1 Now working on 0.7.2 2012-01-23 17:27:08 -08:00
isaacs
a74354735a 2012.01.23, Version 0.7.1 (unstable)
* Update V8 to 3.8.8

* Install node-waf by default (Fedor Indutny)

* crypto: Add ability to turn off PKCS padding (Ingmar Runge)

* v8: implement VirtualMemory class on SunOS (Ben Noordhuis)

* Add cluster.setupMaster (Andreas Madsen)

* move `path.exists*` to `fs.exists*` (Maciej Małecki)

* typed arrays: set class name (Ben Noordhuis)

* libuv bug fixes (Igor Zinkovsky, Ben Noordhuis, Dan VerWeire)
2012-01-23 17:26:20 -08:00
isaacs
40879f33cd Upgrade V8 to 3.8.8 2012-01-23 17:16:27 -08:00
isaacs
b1b16d117e udp: 'interface' is reserved word on windows. 2012-01-23 15:44:53 -08:00
Fedor Indutny
667aae596c Merge branch 'v0.6'
Conflicts:
	ChangeLog
	doc/template.html
	lib/cluster.js
	lib/http.js
	lib/tls.js
	src/node.h
	src/node_version.h
	test/simple/test-cluster-kill-workers.js
2012-01-24 00:30:28 +06:00
Ben Noordhuis
2433eeb385 uv: upgrade to 1cca230 2012-01-23 13:35:36 +01:00
Maciej Małecki
ff512634ac version: bump NODE_PATCH_VERSION
Patch version hasn't been bumped correctly in
72cbb7492c.
2012-01-22 23:10:32 +01:00
Igor Zinkovsky
6d00c089e3 only ref non-default isolate loops 2012-01-21 14:44:48 -08:00
Maciej Małecki
e10ed097cb path fs: move path.exists* to fs.exists*
`path.exists*` functions show a deprecation warning and call functions
from `fs`. They should be removed later.

test: fix references to `path.exists*` in tests

test fs: add test for `fs.exists` and `fs.existsSync`

doc: reflect moving `path.exists*` to `fs`
2012-01-21 14:37:14 +01:00
Ben Noordhuis
56e34c2f81 http: fix deprecation warning module ID
Mea culpa, I told @mmalecki wrong
2012-01-21 14:34:33 +01:00
Igor Zinkovsky
de78922b12 ref isolate loop 2012-01-20 18:03:05 -08:00
Andreas Madsen
f9a47debfc Add cluster.setupMaster
Fixes #2470
2012-01-20 13:09:56 -08:00
Ben Noordhuis
6b5853794d build: disable NDEBUG in release builds for now
assert() sanity checks are a good thing.
2012-01-20 16:00:27 +01:00
Ben Noordhuis
4e5247772d fs, handle_wrap: use Loop(), not uv_default_loop()
Using the default loop will fail in unexpected and interesting ways when
isolates are used.
2012-01-20 15:57:50 +01:00
Shigeki Ohtsu
2156e5eca1 fs: don't assert on uv_fs_*() errors
Pass errors to the JS callbacks, don't assert in C++ land.

Fixes among other things the case where Node aborts because uv_fs_futimes()
returns ENOSYS.
2012-01-20 14:46:07 +01:00
Ben Noordhuis
0f33768059 v8: link against libsocket and libnsl on sunos
The V8 debugger requires BSD socket support. Solaris-like systems obviously
support that but you need to link against the right libraries, it's not part of
libc.
2012-01-19 23:09:00 +00:00
Ben Noordhuis
90587b1ccb v8: implement VirtualMemory class on SunOS
Unbreaks build on SunOS. Re-applies 4908e5bf7a.
2012-01-19 22:46:20 +00:00
Ingmar Runge
0ca30187cf Crypto: adding ability to turn off automatic PKCS padding 2012-01-18 21:20:25 +01:00
Ben Noordhuis
ad42a82df5 build: remove node_debug from config.gypi 2012-01-18 02:00:43 +01:00
Dan Williams
29ce743385 docs: fix syntax error on cluster api docs 2012-01-17 23:29:16 +01:00
Ben Noordhuis
e493b29598 build: respect --debug configure switch 2012-01-17 23:03:21 +01:00
Andreas Madsen
4a38795b6f Add failing test case: parent on('exit')
Fixes #2564
2012-01-17 11:43:21 -08:00
Andreas Madsen
70884875c9 Allow calling fork() without args or options
Closes GH-2424
2012-01-17 19:07:57 +01:00
Ryan Dahl
21dd53f9d3 Makefile: Don't force user to run ./configure first 2012-01-16 23:28:29 -08:00
Fedor Indutny
6e76a7cb45 installer: install node-waf
* added --without-waf flag for configure script
2012-01-16 21:56:05 -08:00
Ryan Dahl
72cbb7492c Now working on v0.7.1-pre 2012-01-16 19:46:36 -08:00
Ryan Dahl
9cc55dca6f Bump version to v0.7.0 2012-01-16 19:00:41 -08:00
Ryan Dahl
716f5bc66b Add make dist-upload 2012-01-16 18:52:36 -08:00
Ryan Dahl
317ba9fb64 Fix 'make dist' 2012-01-16 18:40:29 -08:00
Igor Zinkovsky
2c1025706b upgrade libuv to 52511b9ddc 2012-01-16 17:24:53 -08:00
Igor Zinkovsky
ab18d72b35 fix windows build 2012-01-16 16:46:23 -08:00
Ryan Dahl
ca2a047b8e Merge remote branch 'origin/v0.6'
Conflicts:
	deps/uv/src/win/util.c
	src/udp_wrap.cc
2012-01-16 15:20:26 -08:00
Ryan Dahl
7584225873 Upgrade libuv to joyent/libuv@f5bd21f 2012-01-16 15:15:34 -08:00
Igor Zinkovsky
95844451b6 fix windows build 2012-01-16 14:44:49 -08:00
Ryan Dahl
60040a4f36 Upgrade V8 to 3.8.6 2012-01-16 14:37:57 -08:00
Ryan Dahl
1afd0b52fe Revert "gyp: install node-gyp"
No.

This reverts commit 3d1476a316.
2012-01-16 14:07:35 -08:00
Fedor Indutny
3d1476a316 gyp: install node-gyp
* fixes #2480
2012-01-17 02:44:26 +06:00
Maciej Małecki
d5047f5fe6 http: use util._deprecationWarning for deprecation warning 2012-01-16 19:45:14 +01:00
Fedor Indutny
f0c629a36b uv: upgrade to e7758e1 2012-01-16 20:18:37 +06:00
Fedor Indutny
03e689fae4 Revert "util: always display a warning for module in debug mode"
This reverts commit df62005ece.
2012-01-16 19:33:16 +06:00
Maciej Małecki
df62005ece util: always display a warning for module in debug mode 2012-01-16 19:19:56 +06:00
Fedor Indutny
23de33968f querystring: fix maxKeys = 0 is ignored 2012-01-16 16:36:24 +06:00
Fedor Indutny
f1678bfc65 http: do not accept headers if limit is exceeded
* fix limiting when parser was reused
* fix maxHeadersCount = 0 is ignored ( credit to @koichik )
* add test-http-max-headers-count.js ( credit to @koichik )
2012-01-16 16:36:23 +06:00
Ben Noordhuis
03cb903e7e isolates: remove references to uv_thread_self()
uv_thread_self() is difficult to implement on Windows in a way where the return
value is valid across threads. It's already been removed from upstream libuv.
2012-01-16 01:41:29 +01:00
Fedor Indutny
8a98c2f1d8 http, querystring: added limits to prevent DoS 2012-01-16 02:45:05 +06:00
Ben Noordhuis
93465d3051 build: support --dest-cpu configure switch again 2012-01-15 16:50:58 +01:00
Fedor Indutny
220288725f test-eio-limit: add missing copyright headers 2012-01-14 23:51:53 +06:00
Fedor Indutny
e03b42d1bb Add failing test-eio-limit.js 2012-01-14 23:48:56 +06:00
Nathan Rajlich
f2ba4cef2a build: remove the old -DPLATFORM="mac" define
To prevent redefinition warnings.
2012-01-12 15:11:02 +01:00
Nathan Rajlich
9ff86a2848 build: set process.platform to "darwin" on OS X
This is consistent with the old waf build system, and doesn't break old scripts
that are expecting the value to be "darwin".

Fixes #2518.
2012-01-12 15:10:11 +01:00
koichik
7dffbaf2ce http: Upgrade/CONNECT request should detach its socket earlier
With Upgrade or CONNECT request, http.ClientRequest emits 'close' event
after its socket is closed. However, after receiving a response, the socket
is not under management by the request.

http.ClientRequest should detach the socket before 'upgrade'/'connect'
event is emitted to pass the socket to a user. After that, it should
emit 'close' event immediately without waiting for closing of the socket.

Fixes #2510.
2012-01-12 14:17:19 +09:00
Fedor Indutny
71ae175319 zlib: reset() method for deflate/inflate streams
* ammended test-zlib-dictionary to cover reusing streams
2012-01-12 03:19:19 +06:00
Fedor Indutny
89556f5a2f zlib: C++ style fixes for dictionary 2012-01-12 03:11:31 +06:00
Fedor Indutny
9e6957b0a5 Merge branch 'v0.6'
Conflicts:
	src/handle_wrap.cc
	src/node_zlib.cc
	src/process_wrap.cc
2012-01-12 02:17:44 +06:00
Mathias Bynens
8abb73ef58 punycode: Update to v0.3.0 2012-01-11 10:42:39 +01:00
Andreas Madsen
c8108aad83 child_process: fix typo in internal message event name 2012-01-11 09:59:50 +01:00
Maciej Małecki
4d49469d0d child_process: fix typo in internal message event name 2012-01-10 23:16:07 +01:00
Ryan Dahl
e1b829d2a5 Add broken test-isolates3.js 2012-01-10 12:04:19 -08:00
Ryan Dahl
d4ee61ffc7 Add failing test-isolates2.js 2012-01-10 11:48:02 -08:00
Fedor Indutny
4cbcdb4b2c test: make debugger-repl tests work with isolates 2012-01-10 16:48:45 +01:00
Ben Noordhuis
7cee968c21 isolates: add process-global list of isolates 2012-01-10 16:46:41 +01:00
Fedor Indutny
6b2091b58a debug threads 2012-01-10 02:28:49 +01:00
Fedor Indutny
99679c6430 IsolateDebugger C++ 2012-01-10 02:28:42 +01:00
Fedor Indutny
44e7033279 fixed debugger segfaults 2012-01-10 02:19:14 +01:00
Fedor Indutny
a5f74b4da7 added isolates support 2012-01-10 02:19:14 +01:00
Ben Noordhuis
97e4b3a7bf isolates: drain message queue completely 2012-01-10 02:09:08 +01:00
Andreas Madsen
787f62de8c Improve test-child-process-silent 2012-01-09 13:04:13 -08:00
Ryan Dahl
b28e700ebd require('sys') now throws
To be removed in v0.9
2012-01-09 12:59:28 -08:00
Ryan Dahl
8b28d599a7 Merge remote branch 'origin/v0.6'
Conflicts:
	Makefile
	configure
	src/node_version.h
2012-01-09 11:20:22 -08:00
koichik
08a91acd76 http: better support for CONNECT method.
Introduces 'connect' event on both client (http.ClientRequest) and
server (http.Server).

Refs: #2259, #2474.
Fixes #1576.
2012-01-09 03:51:06 +01:00
koichik
c1a63a9e90 tls: Allow establishing secure connection on the existing socket
This is necessary to use SSL over HTTP tunnels.

Refs #2259, #2474.
Fixes #2489.
2012-01-09 02:31:46 +01:00
koichik
70033bd960 net: make connect() accept options
This makes API even with tls.connect().
Refs #1983.

See also:
http://groups.google.com/group/nodejs-dev/msg/3b6dbcc4a9a82d99

Fixes #2487.
2012-01-09 02:18:39 +01:00
Maciej Małecki
0321adbcf4 tls doc: update docs to reflect API change
Refs #1983.
2012-01-08 11:13:36 +01:00
Maciej Małecki
39484f49ef test tls: make tests use new tls.connect API
Refs #1983.
2012-01-08 11:13:28 +01:00
Maciej Małecki
df0edf5fe6 https: make https use new tls.connect API
Refs #1983.
2012-01-08 11:13:18 +01:00
Maciej Małecki
4b4d059791 tls: make tls.connect accept port and host in options
Previous API used form:

    tls.connect(443, "google.com", options, ...)

now it's replaced with:

    tls.connect({port: 443, host: "google.com", ...}, ...)

It simplifies argument parsing in `tls.connect` and makes the API
consistent with other parts.

Fixes #1983.
2012-01-08 11:12:56 +01:00
Ryan Dahl
8e5674fb5c Upgrade V8 to 3.8.5 2012-01-06 13:03:06 -08:00
Ben Noordhuis
42281124d4 child_process: add isolates support
Passing an options object with {thread:true} to .fork() or .spawn() will run the
target script in a thread instead of a separate process.
2012-01-06 00:47:14 +01:00
Ben Noordhuis
1e73e4c62f isolates: remove global isolates list
No longer necessary, each isolate now waits until its subordinate isolates have
exited.
2012-01-06 00:45:27 +01:00
Ben Noordhuis
dadc30318f isolates: implement message passing
Parent and child isolates can now pass arbitrary binary messages between each
other. The messages are sent and received through a thread-safe queue that
wakes up the event loop of the receiving thread.
2012-01-06 00:42:55 +01:00
Ben Noordhuis
075acfa2d6 uv: upgrade to 56a31f0 2012-01-06 00:00:40 +01:00
Emerson Macedo
aa67b1f375 fs: add appendFile() and appendFileSync() functions 2012-01-05 21:39:57 +01:00
Mikael Bourges-Sevenier
5b05429bf0 typed arrays: add Buffer -> TypedArray constructor
- create a typed array from a node::Buffer object
- update TypedArray::set() to spec
- add TypedArray::get() method
2012-01-05 20:56:41 +01:00
Shigeki Ohtsu
55c21970fd build: compile without -fvisibility=hidden
Fixes symbol lookup errors when loading an addon module on Linux.
2012-01-05 16:50:55 +01:00
Shigeki Ohtsu
a993d22c0f build: set product_prefix to empty for Linux 2012-01-05 16:50:44 +01:00
Andreas Madsen
e2f1e50c60 typos
fixes #2465
2012-01-05 00:31:49 -08:00
Andreas Madsen
5f08c3cfa1 cluster improvements: Worker class and isolate internal messages
Fixes #2388
2012-01-04 18:30:19 -08:00
Ben Noordhuis
e21643d618 build: fix npm-cli.js install 2012-01-04 16:36:08 +01:00
Ryan Dahl
557fc396b4 Upgrade V8 to 3.8.4 2012-01-03 11:46:53 -08:00
Ben Noordhuis
c123ac05dc Merge remote-tracking branch 'origin/v0.6'
Conflicts:
	src/udp_wrap.cc
2012-01-02 12:29:39 +01:00
Ryan Dahl
4b3824b682 Merge remote branch 'origin/isolates2' 2011-12-29 11:57:40 -08:00
Ben Noordhuis
c24276f008 net: defer net.Server 'close' event to next tick 2011-12-29 19:30:07 +01:00
Ben Noordhuis
0c3b357985 Merge branch 'isolates2' 2011-12-29 01:56:58 +01:00
Ben Noordhuis
add4cfcf5f Merge branch 'v0.6'
Conflicts:
	src/platform_win32.cc
2011-12-29 01:56:44 +01:00
Ben Noordhuis
fa43f04f6a Include ngx-queue.h, fix Windows build. 2011-12-29 01:56:11 +01:00
Ben Noordhuis
25ca13ec1a uv: upgrade to 85f6b79 2011-12-29 01:56:11 +01:00
Ben Noordhuis
cdb5864fc3 Make msbuild run in parallel. 2011-12-29 01:56:11 +01:00
Ryan Dahl
4428b70cba Add isolate version of test-child-process-fork 2011-12-29 01:56:11 +01:00
Ryan Dahl
649dbbbd83 Add process.features.isolates 2011-12-29 01:56:11 +01:00
Ryan Dahl
5fc0c27d5c move isolate V8 functions out of node.cc 2011-12-29 01:56:11 +01:00
Ryan Dahl
20ba454ef9 Add node::Loop() and don't inc node_isolate.h in *.cc
node::Loop() replaces the NODE_LOOP macro. This avoids hitting
v8::Isolate::GetCurrent() for each loop lookup when HAVE_ISOLATE==0
2011-12-29 01:56:11 +01:00
Ben Noordhuis
dd0188ec08 uv: upgrade to d6a06b8 2011-12-29 01:56:11 +01:00
Ryan Dahl
40c98a977b Add shared-buffer isolate addon test 2011-12-29 01:56:11 +01:00
Ryan Dahl
f168f7d702 Remove node_isolate.h from node.h 2011-12-29 01:56:10 +01:00
Ryan Dahl
2c560c5405 Change isolate test to demo EIO bug 2011-12-29 01:56:10 +01:00
Ryan Dahl
a0f3eb015a node_file.cc should use NODE_LOOP() 2011-12-29 01:56:10 +01:00
Ryan Dahl
268476549e Join all threads at end of main thread
Require reorganizing the isolates somewhat.

Add a very simple test.
2011-12-29 01:56:10 +01:00
Ryan Dahl
4d02e77f44 Move prog_start_time init after isolate assigned 2011-12-29 01:56:10 +01:00
Ryan Dahl
4f46ee4400 Add link-list of all isolates 2011-12-29 01:56:10 +01:00
Ryan Dahl
863f17f68c Move uv loop initialization into isolate 2011-12-29 01:56:10 +01:00
Ryan Dahl
45bb10cc32 move thread_id to node_isolate.cc 2011-12-29 01:56:10 +01:00
Ben Noordhuis
6eeb59abf6 isolates: replace SLIST with ngx_queue_t 2011-12-29 01:56:10 +01:00
Ben Noordhuis
809fdf26fb isolates: add process.tid property, pass args to isolate 2011-12-29 01:56:10 +01:00
Ben Noordhuis
ca19e792c6 isolates: have node::Isolate manage the v8::Context 2011-12-29 01:56:10 +01:00
Ben Noordhuis
ea97d6ed5f isolates: rename node::Isolate member isolate_ to v8_isolate_ 2011-12-29 01:56:10 +01:00
Ben Noordhuis
5866f1a9aa Separate per-process and per-thread init logic. 2011-12-29 01:56:10 +01:00
Ben Noordhuis
2df81c57f6 Remove per-process globals from per-thread context. 2011-12-29 01:56:10 +01:00
Ryan Dahl
828bf50a0e isolates have globals stored in struct globals 2011-12-29 01:56:09 +01:00
Ben Noordhuis
eb6e60432b isolates: add _newIsolate() and _joinIsolate() to process object 2011-12-29 01:56:09 +01:00
Ben Noordhuis
09dc577931 build: move internals to separate header file 2011-12-29 01:56:09 +01:00
Ben Noordhuis
b3d4938e3e build: add --without-isolates configure switch 2011-12-29 01:56:09 +01:00
Ben Noordhuis
66116924ed isolates: add atexit() functionality for isolates 2011-12-29 01:56:09 +01:00
Ben Noordhuis
356992fe4d isolates: isolate-ify the main loop 2011-12-29 01:56:09 +01:00
Ben Noordhuis
e9f8e28426 uv: upgrade to f5c2a4a 2011-12-29 01:56:09 +01:00
Ben Noordhuis
bc7bae1d6b Merge remote-tracking branch 'origin/v0.6'
Conflicts:
	src/platform_win32.cc
2011-12-29 01:49:10 +01:00
Ben Noordhuis
5427311ae6 uv: upgrade to 0db56ea 2011-12-29 01:43:24 +01:00
Ben Noordhuis
9143b43e98 Include ngx-queue.h, fix Windows build. 2011-12-29 00:59:06 +01:00
Ben Noordhuis
2afd20b542 uv: upgrade to 85f6b79 2011-12-29 00:18:23 +01:00
Ben Noordhuis
59faab4330 Make msbuild run in parallel. 2011-12-28 23:56:53 +01:00
Ryan Dahl
b7c05e1b75 Upgrade V8 to 3.8.3 2011-12-28 14:13:50 -08:00
koichik
b037c16f55 test: fix test-sys.js fails if the time zone is not CET
Fixes #2423.
2011-12-28 15:18:11 +09:00
Ryan Dahl
b319699132 Add isolate version of test-child-process-fork 2011-12-27 18:11:32 -08:00
Ryan Dahl
036e59394a Add process.features.isolates 2011-12-27 13:06:25 -08:00
Ryan Dahl
533a455274 move isolate V8 functions out of node.cc 2011-12-27 12:54:25 -08:00
Ryan Dahl
9d792f3183 Add node::Loop() and don't inc node_isolate.h in *.cc
node::Loop() replaces the NODE_LOOP macro. This avoids hitting
v8::Isolate::GetCurrent() for each loop lookup when HAVE_ISOLATE==0
2011-12-27 12:54:25 -08:00
Ben Noordhuis
c481f97a9c uv: upgrade to d6a06b8 2011-12-27 12:54:24 -08:00
Ryan Dahl
02f24f54ba Add shared-buffer isolate addon test 2011-12-27 12:54:24 -08:00
Ryan Dahl
87bb848268 Remove node_isolate.h from node.h 2011-12-27 12:54:23 -08:00
Ryan Dahl
8c476371f5 Change isolate test to demo EIO bug 2011-12-27 12:54:23 -08:00
Ryan Dahl
a8506c41c6 node_file.cc should use NODE_LOOP() 2011-12-27 12:54:23 -08:00
Ryan Dahl
41062e71a7 Join all threads at end of main thread
Require reorganizing the isolates somewhat.

Add a very simple test.
2011-12-27 12:54:23 -08:00
Ryan Dahl
2d8c1fe1ed Move prog_start_time init after isolate assigned 2011-12-27 12:54:23 -08:00
Ryan Dahl
1a433b9637 Add link-list of all isolates 2011-12-27 12:54:23 -08:00
Ryan Dahl
78a25696f1 Move uv loop initialization into isolate 2011-12-27 12:54:23 -08:00
Ryan Dahl
39a492799d move thread_id to node_isolate.cc 2011-12-27 12:54:22 -08:00
Ben Noordhuis
469cb1b7b7 isolates: replace SLIST with ngx_queue_t 2011-12-27 12:54:22 -08:00
Ben Noordhuis
d329fc7b09 isolates: add process.tid property, pass args to isolate 2011-12-27 12:54:22 -08:00
Ben Noordhuis
3063ba0800 isolates: have node::Isolate manage the v8::Context 2011-12-27 12:54:22 -08:00
Ben Noordhuis
9d71e74491 isolates: rename node::Isolate member isolate_ to v8_isolate_ 2011-12-27 12:54:22 -08:00
Ben Noordhuis
3aadd4fe76 Separate per-process and per-thread init logic. 2011-12-27 12:54:22 -08:00
Ben Noordhuis
8a538ce372 Remove per-process globals from per-thread context. 2011-12-27 12:54:22 -08:00
Ryan Dahl
9caeceef6d isolates have globals stored in struct globals 2011-12-27 12:54:21 -08:00
Ben Noordhuis
edbec3f8f3 isolates: add _newIsolate() and _joinIsolate() to process object 2011-12-27 12:54:21 -08:00
Ben Noordhuis
a778a25cab build: move internals to separate header file 2011-12-27 12:54:21 -08:00
Ben Noordhuis
39e2c469db build: add --without-isolates configure switch 2011-12-27 12:54:20 -08:00
Ben Noordhuis
2a7a2ca986 isolates: add atexit() functionality for isolates 2011-12-27 12:54:20 -08:00
Ben Noordhuis
c3346f6760 isolates: isolate-ify the main loop 2011-12-27 12:54:20 -08:00
Ben Noordhuis
0d5a6b2d9d uv: upgrade to f5c2a4a 2011-12-27 12:54:19 -08:00
koichik
b962ff35dd tls: fix test-https-client-reject fails
Fixes #2417.
2011-12-27 17:33:23 +09:00
koichik
e6b6075024 http: Avoid 'data'/'end' events after pause()
Fixes #1040.
2011-12-26 16:14:47 +01:00
Ryan Dahl
48a9a2d355 Add deprecation message for http.Client 2011-12-23 17:42:27 -08:00
Ryan Dahl
c2d9e62f16 Merge remote branch 'origin/v0.6'
Conflicts:
	deps/v8/src/version.cc
2011-12-23 15:58:11 -08:00
Ryan Dahl
e4731f8168 Upgrade V8 to 3.8.2.1 2011-12-23 15:57:10 -08:00
Ryan Dahl
624f70e88f GYP: rename options.gypi to config.gypi
Sounds more familiar to unix users used to config.h
2011-12-23 14:25:17 -08:00
Ryan Dahl
6ac22bfb04 Add gitignore file for addon tests 2011-12-21 14:18:56 -08:00
Ryan Dahl
60a9e1e40f Upgrade GYP to r1115 2011-12-21 12:39:36 -08:00
Ryan Dahl
f7f8af8420 Merge remote branch 'origin/v0.6'
Conflicts:
	Makefile
	lib/_debugger.js
2011-12-21 12:17:23 -08:00
Ryan Dahl
4eaf4ce26a Upgrade V8 to 3.8.2 2011-12-21 10:54:24 -08:00
Ben Noordhuis
a82f5389d9 deps: fix openssl build on x86_64 2011-12-21 18:35:50 +01:00
Ben Noordhuis
b24c515dbf uv: upgrade to 10de090 2011-12-21 16:59:53 +01:00
Ryan Dahl
18b92201be Support addons with gyp
Initial pass.
2011-12-20 22:03:35 -08:00
Ryan Dahl
7edfb02984 Remove visibility=hidden options from common.gypi
Not necessary and preventing addon loading.
2011-12-20 22:02:50 -08:00
Ryan Dahl
6c5f1f58f3 Remove unnecessary stuff from node.gyp 2011-12-20 20:26:13 -08:00
Ryan Dahl
b603578b53 Fix 'make install'
Broken in 45605c because configure does not spit out proper JavaScript.
Needed to change single quotes to double.
2011-12-19 18:06:21 -08:00
Ben Noordhuis
aac717da8d Add missing return statement in _debugPause() binding. 2011-12-20 00:34:19 +01:00
jbergstroem
45605c9b39 gyp: switch json for pprint when generating config 2011-12-20 00:10:57 +01:00
jbergstroem
f9994114ab build: remove unused cmakelist 2011-12-20 00:10:49 +01:00
Maciej Małecki
5c7532e5b3 assert: test RegExp's properties when checking for equality
Previous code ignored the fact that `/a/ != /a/g`.

Test case included.
2011-12-20 00:10:49 +01:00
Pedro Teixeira
a805012d6f assert: .deepEqual() support for RegExp objects 2011-12-20 00:10:38 +01:00
Ben Noordhuis
213b8af2f6 gyp: include opensslconf.h on x64
Good news, it means we don't have to compile with OPENSSL_NO_ASM=1 after all.
2011-12-19 23:24:29 +01:00
Ben Noordhuis
15d0fa6dc1 gyp: compile openssl with OPENSSL_NO_ASM=1
Fixes linker error "undefined reference to `OPENSSL_ia32_cpuid'". This is
sub-optimal and needs to be revisited, the plain C implementations are often
much slower.
2011-12-19 22:55:11 +01:00
Ryan Dahl
c65a91c96f GYP: don't build V8 twice 2011-12-19 13:41:04 -08:00
Fedor Indutny
802c4c6a61 debugger: document pause and setBreakpoint(line)
Fixes #2381
2011-12-19 13:29:21 -08:00
Andreas Madsen
3966e4e7a5 Remove debug console.log and optimize object copy
Fixes #2380
2011-12-19 13:25:19 -08:00
Ryan Dahl
21e7292ea0 Upgrade V8 to 3.8.1 2011-12-19 13:06:37 -08:00
Andreas Madsen
07b1997388 Add env argument to cluster.fork
Fixes 2378
2011-12-19 12:34:59 -08:00
Fedor Indutny
80858761a8 break on exception
Fixes #2304
2011-12-19 11:09:40 -08:00
Fedor Indutny
a239ea0d40 use inlineRefs, as it's already impl 2011-12-19 11:09:16 -08:00
Fedor Indutny
b00b2f08bf pass noRefs as arguments 2011-12-19 11:09:16 -08:00
Fedor Indutny
b0388ccad0 pause command 2011-12-19 11:09:16 -08:00
Fedor Indutny
07ad11916f allow setBreakpoint(line) 2011-12-19 11:09:16 -08:00
Fedor Indutny
c07edd90f5 preserve cursor pos
* configurable via .prompt()'s preserveCursor argument (false by default)
2011-12-19 11:09:16 -08:00
Fedor Indutny
d9377f5eb0 request backtrace w/o refs, see #1745 2011-12-19 11:09:16 -08:00
Nathan Rajlich
855f46677c test: Add test case for MODULE_NOT_FOUND. 2011-12-19 23:47:07 +09:00
Nathan Rajlich
ec11525d33 docs: Add docs for MODULE_NOT_FOUND error. 2011-12-19 23:47:02 +09:00
Nathan Rajlich
3f987cd925 module: Set the error.code to 'MODULE_NOT_FOUND' when a bad path is given to require.
Fixes #2358.
2011-12-19 23:46:41 +09:00
Ryan Dahl
bb8f73419c Fix make targets so they detect changes
Broken in 10d92b3
2011-12-18 15:12:25 -08:00
Avi Flax
ee0a7b928b util: output Dates with Date.toString not Date.toUTCString 2011-12-18 23:07:47 +01:00
Andreas Madsen
b084322f52 Add silent option to child_process.fork
Fixes #2354.
2011-12-17 12:53:44 -08:00
Ryan Dahl
10d92b3dcd saner targets 2011-12-17 03:23:17 -08:00
Fedor Indutny
a9f2c4aa30 --without-npm option
Fixes #2353.
2011-12-17 00:39:04 -08:00
Ryan Dahl
e61de70c96 gyp: use built-in openssl by default 2011-12-16 15:00:23 -08:00
Ryan Dahl
64de69c1a4 Upgrade GYP to r1107 2011-12-16 14:06:29 -08:00
Ryan Dahl
1865b11dcb Merge remote branch 'origin/v0.6'
Conflicts:
	wscript
2011-12-16 13:57:36 -08:00
Ryan Dahl
67e12a0f84 Remove UVTEST from makefile 2011-12-16 13:46:42 -08:00
Ryan Dahl
01e4fe5fbc upgrade libuv to cb70db1 2011-12-16 13:35:08 -08:00
Igor Zinkovsky
45822da46a fix windows build 2011-12-15 18:42:03 -08:00
Igor Zinkovsky
500c8f45f5 Remove platform files, and use uv platform api 2011-12-15 18:01:22 -08:00
Igor Zinkovsky
88cc688731 fix windows build 2011-12-15 17:20:49 -08:00
Igor Zinkovsky
da3356bb38 upgrade libuv to 8e50b6043da7b3221f51b3158033255c9a210d08 2011-12-15 15:56:42 -08:00
Ryan Dahl
de5ba2db25 Don't print args from gyp_node 2011-12-15 13:19:36 -08:00
Robert Mustacchi
2240486d3d Add process.abort 2011-12-14 17:02:15 -08:00
Ryan Dahl
b3a7de15b7 Upgrade V8 to 3.8.0 2011-12-14 15:02:32 -08:00
Fedor Indutny
be23c51f69 Implement make install
Fixes #2331, #2197, #2283
2011-12-14 14:41:44 -08:00
Ben Noordhuis
bdd19ab40b build: update 'make install' warning message 2011-12-14 02:49:34 +01:00
Igor Zinkovsky
06a22e2ea1 fix windows build 2011-12-09 17:24:37 -08:00
Ryan Dahl
c5e51cead8 Move lock back to node_crypto.cc 2011-12-08 15:58:29 -08:00
Ryan Dahl
3d3f29cf06 Remove wscript 2011-12-08 15:10:26 -08:00
Ryan Dahl
cced79d4a8 Move a few more global vars into struct 2011-12-08 15:09:47 -08:00
Ryan Dahl
e10fd321e4 move global vars from platfrom, node_signal_watcher to struct 2011-12-07 18:03:18 -08:00
Ryan Dahl
59055b227a Move node_buffer.cc globals to struct 2011-12-07 16:01:46 -08:00
Ryan Dahl
e53e9c72cb move global vars for node_file.cc, node_zlib.cc, and node_crypto.cc 2011-12-07 15:44:33 -08:00
Ryan Dahl
06d86ebe84 Move node_http_parser.cc global vars into node_vars.h 2011-12-07 13:31:55 -08:00
koichik
f8c335d0ca tls: enable rejectUnauthorized option to client
Fiexes #2247.
2011-12-07 22:47:06 +09:00
Ryan Dahl
e0a207c27a Begin moving static vars into struct for isolates.
Only node.cc, stream_wrap.cc, and tcp_wrap.cc have been done. The rest still
need work.
2011-12-07 01:14:54 -08:00
Ryan Dahl
ebe0fb697a Merge remote branch 'origin/v0.6' 2011-12-06 17:04:51 -08:00
Ryan Dahl
2003593143 Merge remote branch 'origin/v0.6'
Conflicts:
	deps/v8/src/debug.cc
	deps/v8/src/version.cc
	src/node_version.h
2011-12-06 11:50:54 -08:00
Fedor Indutny
e609195202 [zlib] added dictionary support 2011-12-05 17:58:31 -08:00
Ryan Dahl
21d081fd7f Upgrade V8 to 3.7.12 2011-12-05 16:29:01 -08:00
Ben Noordhuis
e90623edc2 gyp: upgrade to r1103 2011-12-03 21:28:17 +01:00
Ben Noordhuis
49ba55b100 Merge branch 'v0.6'
Conflicts:
	src/node_version.h
2011-12-02 16:34:33 +01:00
Ben Noordhuis
f44d0b9044 crypto: throw exception on unknown digest method
Fixes #2227.
2011-11-30 14:27:53 +01:00
Ben Noordhuis
bbd976b8c4 build: always compile with large file support
Fixes a nasty sizeof(struct stat) mismatch bug that caused random crashes and
silent memory corruption.
2011-11-30 02:28:12 +01:00
eddy_me08@yahoo.com
eda15387a0 build: regenerate out/Makefile from within the main Makefile
Fixes #2147.
2011-11-29 19:35:58 +01:00
Ben Noordhuis
a033261f39 build: DRY configure script 2011-11-29 16:30:35 +01:00
Ben Noordhuis
2445fb8bdd Fix double #define of NODE_VERSION_IS_RELEASE 2011-11-27 02:09:15 +01:00
Ben Noordhuis
1cf13bca19 build: compile with -D__DARWIN_64_BIT_INO_T on OS X
Fixes a struct stat size mismatch on 64 bits machines that made Node crash with
a EXC_BAD_ACCESS on startup.

Fixes #2061 for gyp builds. Solution proposed by Paddy Byers.
2011-11-25 16:53:38 +01:00
Bert Belder
cffd0bb68d Merge branch 'v0.6'
Conflicts:
	Makefile
	src/node_version.h
	test/simple/test-http-response-no-headers.js
2011-11-25 12:34:29 +01:00
Ben Noordhuis
1db9a2adbe build: print "not yet implemented" warning on make install 2011-11-23 13:27:53 +01:00
Ryan Dahl
8595981195 Merge remote branch 'origin/v0.6'
Conflicts:
	Makefile
	src/node_version.h
	test/simple/test-crypto.js
2011-11-22 13:01:10 -08:00
Felix Geisendörfer
b3f91f15b2 Remove support for multi-source pipe()
This reverts 6c5b31bd which had too few use cases, too much complexity,
and can be handled in user-land by using `{end: false}`.

Closes #1996
2011-11-22 08:51:19 -08:00
isaacs
e543b0e95e zlib: Fix invalidly failing test 2011-11-22 08:51:19 -08:00
Maciej Małecki
3f862cf179 test: stdin isn't closed after resume() and pause()
This works on `node v0.4.12`, but doesn't work on `node v0.6.2`
2011-11-21 12:34:19 +01:00
Ryan Dahl
585936157c Add missing rm 2011-11-18 12:03:35 -08:00
Ben Noordhuis
a808ab4ac4 crypto: use the libuv rwlock API 2011-11-18 13:07:13 +01:00
Ben Noordhuis
1b2d333ee3 uv: upgrade to e4680cc 2011-11-18 13:07:01 +01:00
Ryan Dahl
48d21dd541 Force makefile generation in gyp 2011-11-17 17:30:30 -08:00
Paddy Byers
4f8d6d0834 build: fix gyp xcode project generator
Only attempt to generate FrameworkPhase output for code targets.
2011-11-17 23:49:55 +01:00
Ben Noordhuis
29d8ff51c8 build: remove v8-node.gyp 2011-11-17 23:48:40 +01:00
Ben Noordhuis
534e41b474 crypto: make verify() return true or false, not 1 or 0
It's what the documentation says it should return.
2011-11-17 21:17:21 +01:00
Ben Noordhuis
bed405cfea Merge remote branch 'origin/v0.6' 2011-11-17 20:06:50 +00:00
E. Azer Koçulu
e258169666 util: remove the line requiring events 2011-11-17 20:21:48 +01:00
Ben Noordhuis
4f38c5ece3 test: add 'response body with no headers' http test
HTTP/0.9 - fails with a parse error
HTTP/1.0 - works
HTTP/1.1 - fails with an empty response body

See #1711.
2011-11-17 16:32:09 +01:00
Ben Noordhuis
8f15582ef3 test: add 'no response headers' http parser test 2011-11-17 13:36:29 +01:00
Ryan Dahl
40cb398867 Working on v0.7.0 2011-11-16 13:38:04 -08:00
Ryan Dahl
93dc713670 Merge remote branch 'origin/v0.6' 2011-11-16 13:37:20 -08:00
Łukasz Walukiewicz
5d0b5a00aa buffer: fix minimum values for writeInt*() functions 2011-11-16 21:27:26 +01:00
Ben Noordhuis
cf2ee19049 crypto: fix 'var may be used uninitialized' compiler warnings 2011-11-15 22:56:11 +01:00
Ben Noordhuis
b9e1bb3d92 build: auto-run tools/gyp_node after ./configure 2011-11-15 17:17:05 +01:00
Ryan Dahl
14b04b06b4 Remove SCONS deprecate WAF
We keep around WAF for node-waf only.

We need great diligence by people over the next couple weeks to work out all
the kinks in the GYP build system. We realize that it is currently several
times slower than the WAF build. Please lend a hand.

Fixes #1504
Fixes #1500
2011-11-14 19:17:42 -08:00
7037 changed files with 1163911 additions and 581222 deletions

26
.gitignore vendored
View File

@@ -1,5 +1,8 @@
core
vgcore.*
v8*.log
perf.data
perf.data.old
.waf*
tags
.lock-wscript
@@ -12,12 +15,14 @@ node_g
.benchmark_reports
/.project
/.cproject
icu_config.gypi
/out
# various stuff that VC++ produces/uses
Debug/
Release/
!doc/blog/**
*.sln
!nodemsi.sln
*.suo
@@ -31,13 +36,28 @@ ipch/
*.sdf
*.opensdf
/options.gypi
/config.mk
/config.gypi
*-nodegyp*
/gyp-mac-tool
/dist-osx
/npm.wxs
/tools/msvs/npm.wixobj
email.md
blog.html
deps/v8-*
node_modules
./node_modules
.svn/
# generated by gyp on Windows
deps/openssl/openssl.props
deps/openssl/openssl.targets
deps/openssl/openssl.xml
# build/release artifacts
/*.tar.gz
/SHASUMS*.txt*
/tools/wrk/wrk
# test artifacts
tools/faketime

122
.mailmap Normal file
View File

@@ -0,0 +1,122 @@
Aaron Heckmann <aaron.heckmann@gmail.com> <aaron.heckmann+github@gmail.com>
Abe Fettig <abefettig@gmail.com> <abe@fettig.net>
Alex Kocharin <rlidwka@kocharin.ru>
Alex Kocharin <rlidwka@kocharin.ru> <alex@kocharin.ru>
Alexis Sellier <self@cloudhead.net>
Alexis Sellier <self@cloudhead.net> <alexis@cloudhead.io>
Arlo Breault <arlolra@gmail.com>
Artem Zaytsev <a.arepo@gmail.com>
Atsuo Fukaya <fukayatsu@gmail.com>
Ben Noordhuis <info@bnoordhuis.nl> <bnoordhuis@bender.(none)>
Ben Taber <ben.taber@gmail.com>
Bert Belder <bertbelder@gmail.com> <bert@piscisaureus2.(none)>
Bert Belder <bertbelder@gmail.com> <info@2bs.nl>
Bert Belder <bertbelder@gmail.com> <piscisaureus@Berts-MacBook-Pro.local>
Brandon Benvie <brandon@bbenvie.com> <brandon@brandonbenvie.com>
Brian White <mscdex@mscdex.net>
Brian White <mscdex@mscdex.net> <mscdex@gmail.com>
Chew Choon Keat <choonkeat@gmail.com>
Christopher Lenz <cmlenz@gmail.com> <chris@lamech.local>
Daniel Berger <code+node@dpbis.net>
Daniel Chcouri <333222@gmail.com>
Daniel Gröber <darklord@darkboxed.org>
Daniel Gröber <darklord@darkboxed.org> <dxld@darkboxed.org>
Daniel Pihlström <sciolist.se@gmail.com>
Dave Pacheco <dap@joyent.com> <dap@cs.brown.edu>
David Siegel <david@artcom.de> <david.siegel@artcom.de>
Domenic Denicola <domenic@domenicdenicola.com>
Eduard Burtescu <eddy_me08@yahoo.com>
Einar Otto Stangvik <einaros@gmail.com>
Elliott Cable <me@ell.io>
EungJun Yi <semtlenori@gmail.com>
Evan Larkin <evan.larkin.il.com> <evan.larkin.iit@gmail.com>
Farid Neshat <FaridN_SOAD@yahoo.com>
Felix Böhm <felixboehm55@googlemail.com> <me@feedic.com>
Felix Geisendörfer <felix@debuggable.com>
Felix Geisendörfer <felix@debuggable.com>
Friedemann Altrock <frodenius@gmail.com>
Fuji Goro <gfuji@cpan.org>
Gabriel de Perthuis <g2p.code@gmail.com>
Gil Pedersen <git@gpost.dk> <github@gpost.dk>
Henry Chin <hheennrryy@gmail.com>
Herbert Vojčík <herby@mailbox.sk>
Igor Soarez <igorsoarez@gmail.com>
Igor Zinkovsky <igorzi@microsoft.com>
Isaac Z. Schlueter <i@izs.me>
Isaac Z. Schlueter <i@izs.me> <i@foohack.com>
Jake Verbaten <raynos2@gmail.com>
Jered Schmidt <tr@nslator.jp>
Joe Shaw <joe@joeshaw.org> <joeshaw@litl.com>
Johan Bergström <bugs@bergstroem.nu>
Johan Dahlberg <jfd@distrop.com> <dahlberg.johan@gmail.com>
Jonas Pfenniger <jonas@pfenniger.name> <jonas@stvs.ch>
Jonathan Rentzsch <jwr.git@redshed.net>
Josh Erickson <josh@snoj.us>
Joshua S. Weinstein <josher19@users.sf.net>
Jérémy Lal <kapouer@melix.org>
Jérémy Lal <kapouer@melix.org> <holisme@gmail.com>
Kai Sasaki Lewuathe <sasaki_kai@lewuathe.sakura.ne.jp>
Kazuyuki Yamada <tasogare.pg@gmail.com>
Koichi Kobayashi <koichik@improvement.jp>
Kris Kowal <kris.kowal@cixar.com>
Kyle Robinson Young <kyle@dontkry.com>
Luke Bayes <lbayes@patternpark.com>
Maciej Małecki <maciej.malecki@notimplemented.org> <me@mmalecki.com>
Mathias Pettersson <mape@mape.me>
Michael Bernstein <michaelrbernstein@gmail.com>
Michael Wilber <gcr@sneakygcr.net>
Micheil Smith <micheil@brandedcode.com> <micheil@yettobebranded.net>
Mikael Bourges-Sevenier <mikeseven@gmail.com> <msevenier@motorola.com>
Nebu Pookins<nebu@nebupookins.net>
Nicholas Kinsey <pyrotechnick@feistystudios.com>
Onne Gorter <onne@onnlucky.com>
Paul Querna <pquerna@apache.org> <paul@querna.org>
Ray Morgan <rmorgan@zappos.com>
Ray Solomon <raybsolomon@gmail.com>
Rick Olson <technoweenie@gmail.com>
Ryan Dahl <ry@tinyclouds.org>
Ryan Emery <seebees@gmail.com>
Sam Shull <brickysam26@gmail.com> <brickysam26@samuel-shulls-computer.local>
Sam Shull <brickysam26@gmail.com> <sshull@squaremouth.com>
Sambasiva Suda <sambasivarao@gmail.com>
San-Tai Hsu <v@fatpipi.com>
Scott Blomquist <github@scott.blomqui.st> <sblom@microsoft.com>
Sergey Kryzhanovsky <skryzhanovsky@gmail.com> <another@dhcp199-223-red.yandex.net>
Shannen Saez <shannenlaptop@gmail.com>
Shigeki Ohtsu <ohtsu@d.jp> <ohtsu@iij.ad.jp>
Siddharth Mahendraker <siddharth_mahen@hotmail.com> <siddharth_mahen@me.com>
Simon Willison <simon@simonwillison.net>
Stanislav Opichal <opichals@gmail.com>
Stefan Bühler <stbuehler@web.de>
TJ Holowaychuk <tj@vision-media.ca>
TJ Holowaychuk <tj@vision-media.ca> <tjholowayhuk@gmail.com>
Tadashi SAWADA <cesare@mayverse.jp>
Takahiro ANDO <takahiro.ando@gmail.com>
Ted Young <ted@radicaldesigns.org>
Thomas Lee <thomas.lee@shinetech.com> <tom@tom-debian.sensis.com.au>
Tim Caswell <tim@creationix.com> <tim@0-26-8-e9-4c-e1.dyn.utdallas.edu>
Tim Price <timprice@mangoraft.com>
Tim Smart <timehandgod@gmail.com> <tim@fostle.com>
Tim Smart <timehandgod@gmail.com> <timehandgod@gmail.com>
Tom Hughes-Croucher <tom.hughes@palm.com>
Tom Hughes-Croucher <tom.hughes@palm.com> <tom_croucher@yahoo.com>
Trevor Burnham <trevor@databraid.com> <trevorburnham@gmail.com>
Tyler Larson <talltyler@gmail.com>
Vincent Voyer <v@fasterize.com>
Willi Eggeling <email@wje-online.de>
Yoshihiro KIKUCHI <yknetg@gmail.com>
Yuichiro MASUI <masui@masuidrive.jp>
Zachary Scott <zachary@zacharyscott.net> <zachary.s.scott@gmail.com>
Zoran Tomicic <ztomicic@gmail.com>
# These people didn't contribute patches to node directly,
# but we've landed their v8 patches in the node repository:
Daniel Clifford <danno@chromium.org>
Erik Corry <erik.corry@gmail.com>
Jakob Kummerow <jkummerow@chromium.org>
Kevin Millikin <kmillikin@chromium.org>
Lasse R.H. Nielsen <lrn@chromium.org>
Michael Starzinger <mstarzinger@chromium.org>
Toon Verwaest <verwaest@chromium.org>
Vyacheslav Egorov <vegorov@chromium.org>
Yang Guo <yangguo@chromium.org>

315
AUTHORS
View File

@@ -59,7 +59,7 @@ Arlo Breault <arlolra@gmail.com>
Kris Kowal <kris.kowal@cixar.com>
Jacek Becela <jacek.becela@gmail.com>
Rob Ellis <kazoomer@gmail.com>
Tim Smart <timehAndGod@gmail.com>
Tim Smart <timehandgod@gmail.com>
Herbert Vojčík <herby@mailbox.sk>
Krishna Rajendran <krishna@emptybox.org>
Nicholas Kinsey <pyrotechnick@feistystudios.com>
@@ -98,8 +98,7 @@ Jerome Etienne <jerome.etienne@gmail.com>
Dmitriy Shalashov <skaurus@gmail.com>
Adam Wiggins <adam@heroku.com>
Rick Olson <technoweenie@gmail.com>
David Siegel <david.siegel@artcom.de>
Sergey Kzyzhanovsky <skryzhanovsky@gmail.com>
Sergey Kryzhanovsky <skryzhanovsky@gmail.com>
Marco Rogers <marco.rogers@gmail.com>
Benjamin Fritsch <beanie@benle.de>
Jan Kassens <jan@kassens.net>
@@ -125,7 +124,7 @@ Sam Stephenson <sam@37signals.com>
Jorge Chamorro Bieling <jorge@jorgechamorro.com>
Evan Larkin <evan.larkin.il.com>
Sean Coates <sean@seancoates.com>
Tom Hughes <tom.hughes@palm.com>
Tom Hughes-Croucher <tom.hughes@palm.com>
Joshua Peek <josh@joshpeek.com>
Nathan Rajlich <nathan@tootallnate.net>
Peteris Krumins <peteris.krumins@gmail.com>
@@ -144,13 +143,13 @@ Daniel Gröber <darklord@darkboxed.org>
Travis Swicegood <development@domain51.com>
Oleg Slobodskoi <oleg008@gmail.com>
Jeremy Martin <jmar777@gmail.com>
Michael W <gcr@sneakygcr.net>
Michael Wilber <gcr@sneakygcr.net>
Sean Braithwaite <brapse@gmail.com>
Anders Conbere <aconbere@gmail.com>
Devin Torres <devin@devintorres.com>
Theo Schlossnagle <jesus@omniti.com>
Kai Chen <kaichenxyz@gmail.com>
Daniel C <333222@gmail.com>
Daniel Chcouri <333222@gmail.com>
Mihai Călin Bazon <mihai@bazon.net>
Ali Farhadi <a.farhadi@gmail.com>
Daniel Ennis <aikar@aikar.co>
@@ -159,67 +158,79 @@ Greg Hughes <greg@ghughes.com>
David Trejo <david.daniel.trejo@gmail.com>
Joe Walnes <joe@walnes.com>
Koichi Kobayashi <koichik@improvement.jp>
Daniel Gröber <dxld@darkboxed.org>
Konstantin Käfer <github@kkaefer.com>
Richard Rodger <richard@ricebridge.com>
Andreas Reich <andreas@reich.name>
Tony Huang <cnwzhjs@gmail.com>
Dean McNamee <dean@gmail.com>
Trevor Burnham <trevor@databraid.com>
Zachary Scott <zachary@zacharyscott.net>
Arnout Kazemier <info@3rd-Eden.com>
George Stagas <gstagas@gmail.com>
Ben Weaver <ben@orangesoda.net>
Scott McWhirter <scott.mcwhirter@joyent.com>
Jakub Lekstan <jakub.lekstan@dreamlab.pl>
Nick Campbell <nicholas.j.campbell@gmail.com>
Nebu Pookins <nebu@nebupookins.net>
Tim Baumann <tim@timbaumann.info>
Robert Mustacchi <rm@joyent.com>
Håvard Stranden <havard.stranden@gmail.com>
George Miroshnykov <george.miroshnykov@gmail.com>
Mark Cavage <mark.cavage@joyent.com>
Håvard Stranden <havard.stranden@gmail.com>
Marcel Laverdet <marcel@laverdet.com>
Alexandre Marangone <a.marangone@gmail.com>
Mark Cavage <mark.cavage@joyent.com>
Ryan Petrello <lists@ryanpetrello.com>
Fuji Goro <gfuji@cpan.org>
Siddharth Mahendraker <siddharth_mahen@hotmail.com>
Dave Pacheco <dap@joyent.com>
Mathias Buus <m@ge.tt>
Henry Rawas <henryr@schakra.com>
Yoshihiro KIKUCHI <yknetg@gmail.com>
Brett Kiefer <kiefer@gmail.com>
Mariano Iglesias <mariano@cricava.com>
Jörn Horstmann <git@jhorstmann.net>
Joe Shaw <joeshaw@litl.com>
Alex Xu <alex_y_xu@yahoo.ca>
Kip Gebhardt <kip.gebhardt@voxer.com>
Stefan Rusu <saltwaterc@gmail.com>
Wojciech Wnętrzak <w.wnetrzak@gmail.com>
Reid Burke <me@reidburke.com>
Joe Shaw <joe@joeshaw.org>
Niklas Fiekas <niklas.fiekas@googlemail.com>
Adam Luikart <me@adamluikart.com>
avz <a.arepo@gmail.com>
Artem Zaytsev <a.arepo@gmail.com>
Alex Xu <alex_y_xu@yahoo.ca>
Jeremy Selier <jeremy@jolicloud.com>
Igor Zinkovsky <igorzi@microsoft.com>
Kip Gebhardt <kip.gebhardt@voxer.com>
Stefan Rusu <saltwaterc@gmail.com>
Shigeki Ohtsu <ohtsu@d.jp>
vegorov@chromium.org <vegorov@chromium.org>
Wojciech Wnętrzak <w.wnetrzak@gmail.com>
Devon Govett <devongovett@gmail.com>
Steve Engledow <steve.engledow@proxama.com>
Pierre-Alexandre St-Jean <pierrealexandre.stjean@gmail.com>
Reid Burke <me@reidburke.com>
Vicente Jimenez Aguilar <googuy@gmail.com>
SAWADA Tadashi <cesare@mayverse.jp>
Logan Smyth <loganfsmyth@gmail.com>
Christopher Wright <christopherwright@gmail.com>
Mickaël Delahaye <mickael.delahaye@gmail.com>
Tadashi SAWADA <cesare@mayverse.jp>
Jeroen Janssen <jeroen.janssen@gmail.com>
Daniel Pihlström <sciolist.se@gmail.com>
Stefan Bühler <stbuehler@web.de>
Alexander Uvarov <alexander.uvarov@gmail.com>
Aku Kotkavuo <aku@hibana.net>
Peter Bright <drpizza@quiscalusmexicanus.org>
Logan Smyth <loganfsmyth@gmail.com>
Christopher Wright <christopherwright@gmail.com>
Glen Low <glen.low@pixelglow.com>
Thomas Shinnick <tshinnic@gmail.com>
Mickaël Delahaye <mickael.delahaye@gmail.com>
Antranig Basman <antranig.basman@colorado.edu>
Maciej Małecki <maciej.malecki@notimplemented.org>
Evan Martin <martine@danga.com>
Peter Lyons <pete@peterlyons.com>
jkummerow@chromium.org <jkummerow@chromium.org>
Jann Horn <jannhorn@googlemail.com>
Abimanyu Raja <abimanyuraja@gmail.com>
Karl Skomski <karl@skomski.com>
Niclas Hoyer <niclas@verbugt.de>
Karl Skomski <karl@skomski.com>
Michael Jackson <mjijackson@gmail.com>
Ashok Mudukutore <ashok@lineratesystems.com>
Sean Cunningham <sean.cunningham@mandiant.com>
Vitor Balocco <vitorbal@gmail.com>
Ben Leslie <benno@benno.id.au>
Eric Lovett <etlovett@gmail.com>
Christian Tellnes <christian@tellnes.no>
Colton Baker <github@netrefuge.net>
Tyler Larson <talltyler@gmail.com>
@@ -229,7 +240,6 @@ Simen Brekken <simen.brekken@gmail.com>
Guglielmo Ferri <44gatti@gmail.com>
Thomas Parslow <tom@almostobsolete.net>
Ryan Emery <seebees@gmail.com>
Zachary Scott <zachary@zacharyscott.net>
Jordan Sissel <jls@semicomplete.com>
Matt Robenolt <matt@ydekproductions.com>
Jacob H.C. Kragh <jhckragh@gmail.com>
@@ -240,13 +250,18 @@ Mathias Bynens <mathias@qiwi.be>
Łukasz Walukiewicz <lukasz@walukiewicz.eu>
Artur Adib <arturadib@gmail.com>
E. Azer Koçulu <azer@kodfabrik.com>
Paddy Byers <paddy.byers@gmail.com>
Roman Shtylman <shtylman@gmail.com>
Kyle Robinson Young <kyle@dontkry.com>
Tim Oxley <secoif@gmail.com>
Eduard Burtescu <eddy_me08@yahoo.com>
Ingmar Runge <ingmar@irsoft.de>
Russ Bradberry <rbradberry@gmail.com>
Andreas Madsen <amwebdk@gmail.com>
Adam Malcontenti-Wilson <adman.com@gmail.com>
Avi Flax <avi@aviflax.com>
Pedro Teixeira <pedro.teixeira@gmail.com>
Johan Bergström <bugs@bergstroem.nu>
James Hartig <james.hartig@grooveshark.com>
Shannen Saez <shannenlaptop@gmail.com>
Seong-Rak Choi <ragiragi@hanmail.net>
@@ -254,6 +269,8 @@ Dave Irvine <davman99@gmail.com>
Ju-yeong Park <interruptz@gmail.com>
Phil Sung <psung@dnanexus.com>
Damon Oehlman <damon.oehlman@sidelab.com>
Mikael Bourges-Sevenier <mikeseven@gmail.com>
Emerson Macedo <emerleite@gmail.com>
Ryunosuke SATO <tricknotes.rs@gmail.com>
Michael Bernstein <michaelrbernstein@gmail.com>
Guillermo Rauch <rauchg@gmail.com>
@@ -262,18 +279,254 @@ Brandon Benvie <brandon@bbenvie.com>
Nicolas LaCasse <nlacasse@borderstylo.com>
Dan VerWeire <dverweire@gmail.com>
Matthew Fitzsimmons <matt@joyent.com>
Paddy Byers <paddy.byers@gmail.com>
Philip Tellis <philip.tellis@gmail.com>
Christopher Jeffrey <chjjeffrey@gmail.com>
Seth Fitzsimmons <seth@mojodna.net>
Einar Otto Stangvik <einaros@gmail.com>
Paul Vorbach <paul@vorb.de>
tedsuo <ted@radicaldesigns.org>
Luke Gallagher <notfornoone@gmail.com>
Tomasz Buchert <tomek.buchert@gmail.com>
Myles Byrne <myles@myles.id.au>
T.C. Hollingsworth <tchollingsworth@gmail.com>
Cam Pedersen <diffference@gmail.com>
Roly Fentanes <roly426@gmail.com>
Ted Young <ted@radicaldesigns.org>
Joshua Holbrook <josh.holbrook@gmail.com>
Rod Vagg <rod@vagg.org>
Bryan Cantrill <bryan@joyent.com>
lrn@chromium.org <lrn@chromium.org>
Dane Springmeyer <dane@dbsgeo.com>
Blake Miner <miner.blake@gmail.com>
Vincent Ollivier <contact@vincentollivier.com>
Jimb Esser <jimb@railgun3d.com>
Sambasiva Suda <sambasivarao@gmail.com>
Sadique Ali <sadiqalikm@gmail.com>
Dmitry Nizovtsev <dmitry@ukrteam.com>
Alex Kocharin <rlidwka@kocharin.ru>
Ming Liu <vmliu1@gmail.com>
Shea Levy <shea@shealevy.com>
Nao Iizuka <iizuka@kyu-mu.net>
Christian Ress <christian@ressonline.de>
Rod Vagg <rod@vagg.org>
Matt Ezell <ezell.matt@gmail.com>
Charlie McConnell <charlie@charlieistheman.com>
Farid Neshat <FaridN_SOAD@yahoo.com>
Johannes Wüller <johanneswueller@gmail.com>
Erik Lundin <mjor.himself@gmail.com>
Bryan Cantrill <bryan@joyent.com>
Yosef Dinerstein <yosefd@microsoft.com>
Nathan Friedly <nathan@nfriedly.com>
Aaron Jacobs <jacobsa@google.com>
Mustansir Golawala <mgolawala@gmail.com>
Atsuo Fukaya <fukayatsu@gmail.com>
Domenic Denicola <domenic@domenicdenicola.com>
Joshua S. Weinstein <josher19@users.sf.net>
Dane Springmeyer <dane@dbsgeo.com>
Erik Dubbelboer <erik@dubbelboer.com>
Malte-Thorben Bruns <skenqbx@googlemail.com>
Michael Thomas <aelmalinka@gmail.com>
Garen Torikian <gjtorikian@gmail.com>
EungJun Yi <semtlenori@gmail.com>
Vincent Voyer <v@fasterize.com>
ANDO Takahiro <takahiro.ando@gmail.com>
Takahiro ANDO <takahiro.ando@gmail.com>
Brian Schroeder <bts@gmail.com>
J. Lee Coltrane <lee@projectmastermind.com>
Javier Hernández <jhernandez@emergya.com>
James Koval <james.ross.koval@gmail.com>
Kevin Gadd <kevin.gadd@gmail.com>
Ray Solomon <raybsolomon@gmail.com>
Kevin Bowman <github@magicmonkey.org>
Erwin van der Koogh <github@koogh.com>
Matt Gollob <mattgollob@gmail.com>
Simon Sturmer <sstur@me.com>
Joel Brandt <joelrbrandt@gmail.com>
Marc Harter <wavded@gmail.com>
Nuno Job <nunojobpinto@gmail.com>
Ben Kelly <ben@wanderview.com>
Felix Böhm <felixboehm55@googlemail.com>
George Shank <shankga@gmail.com>
Gabriel de Perthuis <g2p.code@gmail.com>
Vladimir Beloborodov <redhead.ru@gmail.com>
Tim Macfarlane <timmacfarlane@gmail.com>
Jonas Westerlund <jonas.westerlund@me.com>
Dominic Tarr <dominic.tarr@gmail.com>
Justin Plock <jplock@gmail.com>
Timothy J Fontaine <tjfontaine@gmail.com>
Toshihiro Nakamura <toshihiro.nakamura@gmail.com>
Ivan Torres <mexpolk@gmail.com>
Philipp Hagemeister <phihag@phihag.de>
Mike Morearty <mike@morearty.com>
Pavel Lang <langpavel@phpskelet.org>
Peter Rybin <peter.rybin@gmail.com>
Joe Andaverde <joe@andaverde.net>
Eugen Dueck <eugen@dueck.org>
Gil Pedersen <git@gpost.dk>
Tyler Neylon <tylerneylon@gmail.com>
Josh Erickson <josh@snoj.us>
Golo Roden <webmaster@goloroden.de>
Ron Korving <rkorving@wizcorp.jp>
Brandon Wilson <chlavois@gmail.com>
Ian Babrou <ibobrik@gmail.com>
Bearice Ren <bearice@gmail.com>
Ankur Oberoi <aoberoi@gmail.com>
Atsuya Takagi <atsuya.takagi@gmail.com>
Pooya Karimian <pkarimian@sencha.com>
Frédéric Germain <frederic.germain@gmail.com>
Robin Lee <cheeselee@fedoraproject.org>
Kazuyuki Yamada <tasogare.pg@gmail.com>
Adam Blackburn <regality@gmail.com>
Willi Eggeling <email@wje-online.de>
Paul Serby <paul.serby@clock.co.uk>
Andrew Paprocki <andrew@ishiboo.com>
Ricky Ng-Adam <rngadam@lophilo.com>
Aaditya Bhatia <aadityabhatia@gmail.com>
Max Ogden <max@maxogden.com>
Igor Soarez <igorsoarez@gmail.com>
Olivier Lalonde <olalonde@gmail.com>
Francois Marier <francois@mozilla.com>
Trevor Norris <trev.norris@gmail.com>
Kai Sasaki Lewuathe <sasaki_kai@lewuathe.sakura.ne.jp>
Nicolas Chambrier <naholyr@gmail.com>
Tim Bradshaw <tfb@cley.com>
Johannes Ewald <mail@johannesewald.de>
Chris Dent <chris.dent@gmail.com>
Dan Milon <danmilon@gmail.com>
Brandon Philips <brandon.philips@rackspace.com>
Frederico Silva <frederico.silva@gmail.com>
Jan Wynholds <jan@rootmusic.com>
Girish Ramakrishnan <girish@forwardbias.in>
Anthony Pesch <anthony@usamp.com>
Stephen Gallagher <sgallagh@redhat.com>
Sergey Kholodilov <serghol@gmail.com>
Tim Kuijsten <tim@netsend.nl>
Michael Axiak <mike@axiak.net>
Chad Rhyner <chadrhyner@gmail.com>
Ben Taber <ben.taber@gmail.com>
Luke Arduini <luke.arduini@me.com>
Luke Bayes <lbayes@patternpark.com>
Nirk Niggler <nirk.niggler@gmail.com>
James Hight <james@zavoo.com>
Mike Harsch <mike@harschsystems.com>
Alexandr Emelin <frvzmb@gmail.com>
James Campos <james.r.campos@gmail.com>
Dave Olszewski <cxreg@pobox.com>
Tim Price <timprice@mangoraft.com>
Jake Verbaten <raynos2@gmail.com>
Jacob Gable <jacob.gable@gmail.com>
Rick Yakubowski <richard@orpha-systems.com>
Dan Kohn <dan@dankohn.com>
Andy Burke <aburke@bitflood.org>
Sugendran Ganess <sugendran@sugendran.net>
Jim Schubert <james.schubert@gmail.com>
Victor Costan <costan@gmail.com>
Arianit Uka <arianit@bigvikinggames.com>
Andrei Sedoi <bsnote@gmail.com>
Eugene Girshov <eugene.girshov@nixu.com>
Evan Oxfeld <eoxfeld@nearinfinity.com>
Lars-Magnus Skog <lars.magnus.skog@gmail.com>
Raymond Feng <enjoyjava@gmail.com>
Aaron Cannon <cannona@fireantproductions.com>
Xidorn Quan <quanxunzhen@gmail.com>
Paolo Fragomeni <paolo@async.ly>
Scott Blomquist <github@scott.blomqui.st>
Henry Chin <hheennrryy@gmail.com>
Julian Gruber <julian@juliangruber.com>
JeongHoon Byun <outsideris@gmail.com>
Iskren Ivov Chernev <iskren.chernev@gmail.com>
Alexey Kupershtokh <alexey.kupershtokh@gmail.com>
Benjamin Ruston <benjy.ruston@gmail.com>
Mitar Milutinovic <mitar.git@tnode.com>
Michael Hart <michael.hart.au@gmail.com>
Andrew Hart <hartandrewr@gmail.com>
Rafael Garcia <rgarcia2009@gmail.com>
Tobias Müllerleile <tobias@muellerleile.net>
Stanislav Ochotnicky <sochotnicky@redhat.com>
Ryan Graham <r.m.graham@gmail.com>
Kelly Gerber <kellygerber22@yahoo.com>
Ryan Doenges <rhdoenges@gmail.com>
Sean Silva <chisophugis@gmail.com>
Miroslav Bajtoš <miro.bajtos@gmail.com>
Sam Roberts <vieuxtech@gmail.com>
Kevin Locke <kevin@kevinlocke.name>
Daniel Moore <polaris@northhorizon.net>
Robert Kowalski <rok@kowalski.gd>
Benoit Vallée <github@benoitvallee.net>
Ryuichi Okumura <okuryu@okuryu.com>
Brandon Frohs <bfrohs@gmail.com>
Nathan Zadoks <nathan@nathan7.eu>
Rafael Henrique Moreira <rafadev7@gmail.com>
Daniel G. Taylor <dan@programmer-art.org>
Kiyoshi Nomo <tokyoincidents.g@gmail.com>
Veres Lajos <vlajos@gmail.com>
Yuan Chuan <yuanchuan23@gmail.com>
Peter Rust <peter@cornerstonenw.com>
Shuan Wang <shuanwang@gmail.com>
Andrew Chilton <andychilton@gmail.com>
Wyatt Preul <wpreul@gmail.com>
Forrest L Norvell <ogd@aoaioxxysz.net>
Eran Hammer <eran@hueniverse.com>
Daniel Chatfield <chatfielddaniel@gmail.com>
Eivind Uggedal <eivind@uggedal.com>
Edward Hutchins <eahutchins@gmail.com>
Chris Wren <cthewren@gmail.com>
Duan Yao <duanyao@ustc.edu>
Eric Schrock <Eric.Schrock@delphix.com>
Zarko Stankovic <stankovic.zarko@gmail.com>
Maxim Bogushevich <boga1@mail.ru>
Phillip Alexander <git@phillipalexander.io>
Tim Wood <washwithcare@gmail.com>
Linus Unnebäck <linus@folkdatorn.se>
Nikolai Vavilov <vvnicholas@gmail.com>
Michael Ridgway <mcridgway@gmail.com>
Yazhong Liu <yorkiefixer@gmail.com>
Gabriel Falkenberg <gabriel.falkenberg@gmail.com>
Kai Groner <kai@gronr.com>
Gabriel Farrell <g@grrawr.com>
Nicolas Kaiser <nikai@nikai.net>
Lev Gimelfarb <lev.gimelfarb@gmail.com>
Dav Glass <davglass@gmail.com>
ayanamist <contact@ayanamist.com>
Lorenz Leutgeb <lorenz.leutgeb@gmail.com>
Brandon Cheng <bcheng.gt@gmail.com>
Alexis Campailla <alexis@janeasystems.com>
Jun Ma <roammm@gmail.com>
Maxime Quandalle <maxime.quandalle@gmail.com>
Benjamin Waters <ben25890@gmail.com>
Doron Pagot <doronpagot@gmail.com>
Kenan Sulayman <kenan@sly.mn>
Christian Schulz <me@rndm.de>
Pedro Ballesteros <nitroduna@gmail.com>
Anton Khlynovskiy <subzey@gmail.com>
Nicolas Talle <dev@nicolab.net>
Mike Pennisi <mike@mikepennisi.com>
Greg Brail <greg@apigee.com>
Shuhei Kagawa <shuhei.kagawa@gmail.com>
Josh Dague <daguej@email.uc.edu>
Goh Yisheng (Andrew) <mail.yisheng@gmail.com>
William Bert <william@spanishdict.com>
Greg Sabia Tucker <greg@narrowlabs.com>
Calvin Metcalf <calvin.metcalf@gmail.com>
cjihrig <cjihrig@gmail.com>
Chris Barber <chris@cb1inc.com>
Nick Apperson <apperson@gmail.com>
Oguz Bastemur <obastemur@gmail.com>
Maurice Butler <maurice.butler@gmail.com>
Chris Dickinson <christopher.s.dickinson@gmail.com>
Julien Gilli <julien.gilli@joyent.com>
Jakob Gillich <jakob@gillich.me>
James Halliday <mail@substack.net>
Kevin Simper <kevin.simper@gmail.com>
Jackson Tian <shyvo1987@gmail.com>
Tristan Berger <tristan.berger@gmail.com>
Mathias Schreck <schreck.mathias@googlemail.com>
Matthew Fitzsimmons <matt@fitzage.com>
Swaagie <info@martijnswaagman.nl>
Emmanuel Odeke <emmanuel.odeke@cmgcanada.ca>
Eric Mill <eric@konklone.com>
Brendan Ashworth <squirrelslikeacorns@gmail.com>
Alejandro Oviedo <alejandro.oviedo.g@gmail.com>
pkcs <pkcs@gmx.com>
Saúl Ibarra Corretgé <saghul@gmail.com>
silverwind <silv3rwind@gmail.com>
Steven R. Loomis <srl@icu-project.org>
James M Snell <jasnell@gmail.com>
Amir Saboury <amir.saboury@gmail.com>
Florin-Cristian Gavrila <cristi_gavrila1@yahoo.com>
Tyler Anton <mtyleranton@gmail.com>
Jonas Dohse <jonas@dohse.ch>

141
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,141 @@
# CONTRIBUTING
The node.js project welcomes new contributors. This document will guide you
through the process.
### FORK
Fork the project [on GitHub](https://github.com/joyent/node) and check out
your copy.
```
$ git clone git@github.com:username/node.git
$ cd node
$ git remote add upstream git://github.com/joyent/node.git
```
Now decide if you want your feature or bug fix to go into the master branch
or the stable branch. As a rule of thumb, bug fixes go into the stable branch
while new features go into the master branch.
The stable branch is effectively frozen; patches that change the node.js
API/ABI or affect the run-time behavior of applications get rejected.
The rules for the master branch are less strict; consult the
[stability index page][] for details.
In a nutshell, modules are at varying levels of API stability. Bug fixes are
always welcome but API or behavioral changes to modules at stability level 3
and up are off-limits.
Node.js has several bundled dependencies in the deps/ and the tools/
directories that are not part of the project proper. Any changes to files
in those directories or its subdirectories should be sent to their respective
projects. Do not send your patch to us, we cannot accept it.
In case of doubt, open an issue in the [issue tracker][], post your question
to the [node.js mailing list][] or contact one of the [project maintainers][]
on [IRC][].
Especially do so if you plan to work on something big. Nothing is more
frustrating than seeing your hard work go to waste because your vision
does not align with that of a project maintainer.
### BRANCH
Okay, so you have decided on the proper branch. Create a feature branch
and start hacking:
```
$ git checkout -b my-feature-branch -t origin/v0.10
```
(Where v0.10 is the latest stable branch as of this writing.)
### COMMIT
Make sure git knows your name and email address:
```
$ git config --global user.name "J. Random User"
$ git config --global user.email "j.random.user@example.com"
```
Writing good commit logs is important. A commit log should describe what
changed and why. Follow these guidelines when writing one:
1. The first line should be 50 characters or less and contain a short
description of the change prefixed with the name of the changed
subsystem (e.g. "net: add localAddress and localPort to Socket").
2. Keep the second line blank.
3. Wrap all other lines at 72 columns.
A good commit log looks like this:
```
subsystem: explaining the commit in one line
Body of commit message is a few lines of text, explaining things
in more detail, possibly giving some background about the issue
being fixed, etc etc.
The body of the commit message can be several paragraphs, and
please do proper word-wrap and keep columns shorter than about
72 characters or so. That way `git log` will show things
nicely even when it is indented.
```
The header line should be meaningful; it is what other people see when they
run `git shortlog` or `git log --oneline`.
Check the output of `git log --oneline files_that_you_changed` to find out
what subsystem (or subsystems) your changes touch.
### REBASE
Use `git rebase` (not `git merge`) to sync your work from time to time.
```
$ git fetch upstream
$ git rebase upstream/v0.10 # or upstream/master
```
### TEST
Bug fixes and features should come with tests. Add your tests in the
test/simple/ directory. Look at other tests to see how they should be
structured (license boilerplate, common includes, etc.).
```
$ make jslint test
```
Make sure the linter is happy and that all tests pass. Please, do not submit
patches that fail either check.
### PUSH
```
$ git push origin my-feature-branch
```
Go to https://github.com/username/node and select your feature branch. Click
the 'Pull Request' button and fill out the form.
Pull requests are usually reviewed within a few days. If there are comments
to address, apply your changes in a separate commit and push that to your
feature branch. Post a comment in the pull request afterwards; GitHub does
not send out notifications when you add commits.
[stability index page]: https://github.com/joyent/node/blob/master/doc/api/documentation.markdown
[issue tracker]: https://github.com/joyent/node/issues
[node.js mailing list]: http://groups.google.com/group/nodejs
[IRC]: http://webchat.freenode.net/?channels=node.js
[project maintainers]: https://github.com/joyent/node/wiki/Project-Organization

2247
ChangeLog

File diff suppressed because it is too large Load Diff

669
LICENSE
View File

@@ -84,119 +84,8 @@ maintained libraries. The externally maintained libraries used by Node are:
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
- libev, located at deps/uv/src/unix/ev. libev's license follows:
"""
All files in libev are Copyright (C)2007,2008,2009 Marc Alexander Lehmann.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Alternatively, the contents of this package may be used under the terms
of the GNU General Public License ("GPL") version 2 or any later version,
in which case the provisions of the GPL are applicable instead of the
above. If you wish to allow the use of your version of this package only
under the terms of the GPL and not to allow others to use your version of
this file under the BSD license, indicate your decision by deleting the
provisions above and replace them with the notice and other provisions
required by the GPL in this and the other files of this package. If you do
not delete the provisions above, a recipient may use your version of this
file under either the BSD or the GPL.
"""
- libeio, located at deps/uv/src/unix/eio. libeio's license follows:
"""
All files in libeio are Copyright (C)2007,2008 Marc Alexander Lehmann.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Alternatively, the contents of this package may be used under the terms
of the GNU General Public License ("GPL") version 2 or any later version,
in which case the provisions of the GPL are applicable instead of the
above. If you wish to allow the use of your version of this package only
under the terms of the GPL and not to allow others to use your version of
this file under the BSD license, indicate your decision by deleting the
provisions above and replace them with the notice and other provisions
required by the GPL in this and the other files of this package. If you do
not delete the provisions above, a recipient may use your version of this
file under either the BSD or the GPL.
"""
- WAF build system, located at tools/waf*. WAF's license follows:
"""
Copyright Thomas Nagy, 2005-2011
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
"""
- C-Ares, an asynchronous DNS client, located at deps/uv/src/ares. C-Ares license
follows
- C-Ares, an asynchronous DNS client, located at deps/cares. C-Ares license
follows:
"""
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
@@ -215,7 +104,7 @@ maintained libraries. The externally maintained libraries used by Node are:
- OpenSSL located at deps/openssl. OpenSSL is cryptographic software written
by Eric Young (eay@cryptsoft.com) to provide SSL/TLS encryption. OpenSSL's
license follows
license follows:
"""
/* ====================================================================
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
@@ -225,7 +114,7 @@ maintained libraries. The externally maintained libraries used by Node are:
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
@@ -296,11 +185,11 @@ maintained libraries. The externally maintained libraries used by Node are:
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
IN THE SOFTWARE.
"""
- Closure Linter is located at tools/closure_linter. Closure's license
follows
follows:
"""
# Copyright (c) 2007, Google Inc.
# All rights reserved.
@@ -363,38 +252,6 @@ maintained libraries. The externally maintained libraries used by Node are:
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
- lib/buffer_ieee754.js. Its license follows:
"""
// Copyright (c) 2008, Fair Oaks Labs, Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
"""
- lib/punycode.js is copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
and released under the MIT license.
"""
@@ -403,7 +260,7 @@ maintained libraries. The externally maintained libraries used by Node are:
* Available under MIT license <http://mths.be/mit>
"""
- tools/gyp GYP is a meta-build system. GYP's license follows:
- tools/gyp. GYP is a meta-build system. GYP's license follows:
"""
Copyright (c) 2009 Google Inc. All rights reserved.
@@ -434,12 +291,12 @@ maintained libraries. The externally maintained libraries used by Node are:
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
- Zlib at deps/zlib. zlib's license follows
- Zlib at deps/zlib. zlib's license follows:
"""
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.4, March 14th, 2010
version 1.2.8, April 28th, 2013
Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -457,78 +314,253 @@ maintained libraries. The externally maintained libraries used by Node are:
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly
Mark Adler
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
*/
"""
- npm is a package manager program located at deps/npm.
npm's license follows:
- npm is a package manager program located at deps/npm.
npm's license follows:
"""
Copyright 2009-2012, Isaac Z. Schlueter (the "Original Author")
Copyright (c) Isaac Z. Schlueter
All rights reserved.
MIT +no-false-attribs License
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
Distributions of all or part of the Software intended to be used
by the recipients as they would use the unmodified Software,
containing modifications that substantially alter, remove, or
disable functionality of the Software, outside of the documented
configuration mechanisms provided by the Software, shall be
modified such that the Original Author's bug reporting email
addresses and urls are either replaced with the contact information
of the parties responsible for the changes, or removed entirely.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
npm is released under the Artistic 2.0 License.
The text of the License follows:
Except where noted, this license applies to any and all software
programs and associated documentation files created by the
Original Author, when distributed with the Software.
--------
The Artistic License 2.0
Copyright (c) 2000-2006, The Perl Foundation.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
This license establishes the terms under which a given free software
Package may be copied, modified, distributed, and/or redistributed.
The intent is that the Copyright Holder maintains some artistic
control over the development of that Package while still keeping the
Package available as open source and free software.
You are always permitted to make arrangements wholly outside of this
license directly with the Copyright Holder of a given Package. If the
terms of this license do not permit the full use that you propose to
make of the Package, you should contact the Copyright Holder and seek
a different licensing arrangement.
Definitions
"Copyright Holder" means the individual(s) or organization(s)
named in the copyright notice for the entire Package.
"Contributor" means any party that has contributed code or other
material to the Package, in accordance with the Copyright Holder's
procedures.
"You" and "your" means any person who would like to copy,
distribute, or modify the Package.
"Package" means the collection of files distributed by the
Copyright Holder, and derivatives of that collection and/or of
those files. A given Package may consist of either the Standard
Version, or a Modified Version.
"Distribute" means providing a copy of the Package or making it
accessible to anyone else, or in the case of a company or
organization, to others outside of your company or organization.
"Distributor Fee" means any fee that you charge for Distributing
this Package or providing support for this Package to another
party. It does not mean licensing fees.
"Standard Version" refers to the Package if it has not been
modified, or has been modified only in ways explicitly requested
by the Copyright Holder.
"Modified Version" means the Package, if it has been changed, and
such changes were not explicitly requested by the Copyright
Holder.
"Original License" means this Artistic License as Distributed with
the Standard Version of the Package, in its current version or as
it may be modified by The Perl Foundation in the future.
"Source" form means the source code, documentation source, and
configuration files for the Package.
"Compiled" form means the compiled bytecode, object code, binary,
or any other form resulting from mechanical transformation or
translation of the Source form.
Permission for Use and Modification Without Distribution
(1) You are permitted to use the Standard Version and create and use
Modified Versions for any purpose without restriction, provided that
you do not Distribute the Modified Version.
Permissions for Redistribution of the Standard Version
(2) You may Distribute verbatim copies of the Source form of the
Standard Version of this Package in any medium without restriction,
either gratis or for a Distributor Fee, provided that you duplicate
all of the original copyright notices and associated disclaimers. At
your discretion, such verbatim copies may or may not include a
Compiled form of the Package.
(3) You may apply any bug fixes, portability changes, and other
modifications made available from the Copyright Holder. The resulting
Package will still be considered the Standard Version, and as such
will be subject to the Original License.
Distribution of Modified Versions of the Package as Source
(4) You may Distribute your Modified Version as Source (either gratis
or for a Distributor Fee, and with or without a Compiled form of the
Modified Version) provided that you clearly document how it differs
from the Standard Version, including, but not limited to, documenting
any non-standard features, executables, or modules, and provided that
you do at least ONE of the following:
(a) make the Modified Version available to the Copyright Holder
of the Standard Version, under the Original License, so that the
Copyright Holder may include your modifications in the Standard
Version.
(b) ensure that installation of your Modified Version does not
prevent the user installing or running the Standard Version. In
addition, the Modified Version must bear a name that is different
from the name of the Standard Version.
(c) allow anyone who receives a copy of the Modified Version to
make the Source form of the Modified Version available to others
under
(i) the Original License or
(ii) a license that permits the licensee to freely copy,
modify and redistribute the Modified Version using the same
licensing terms that apply to the copy that the licensee
received, and requires that the Source form of the Modified
Version, and of any works derived from it, be made freely
available in that license fees are prohibited but Distributor
Fees are allowed.
Distribution of Compiled Forms of the Standard Version
or Modified Versions without the Source
(5) You may Distribute Compiled forms of the Standard Version without
the Source, provided that you include complete instructions on how to
get the Source of the Standard Version. Such instructions must be
valid at the time of your distribution. If these instructions, at any
time while you are carrying out such distribution, become invalid, you
must provide new instructions on demand or cease further distribution.
If you provide valid instructions or cease distribution within thirty
days after you become aware that the instructions are invalid, then
you do not forfeit any of your rights under this license.
(6) You may Distribute a Modified Version in Compiled form without
the Source, provided that you comply with Section 4 with respect to
the Source of the Modified Version.
Aggregating or Linking the Package
(7) You may aggregate the Package (either the Standard Version or
Modified Version) with other packages and Distribute the resulting
aggregation provided that you do not charge a licensing fee for the
Package. Distributor Fees are permitted, and licensing fees for other
components in the aggregation are permitted. The terms of this license
apply to the use and Distribution of the Standard or Modified Versions
as included in the aggregation.
(8) You are permitted to link Modified and Standard Versions with
other works, to embed the Package in a larger work of your own, or to
build stand-alone binary or bytecode versions of applications that
include the Package, and Distribute the result without restriction,
provided the result does not expose a direct interface to the Package.
Items That are Not Considered Part of a Modified Version
(9) Works (including, but not limited to, modules and scripts) that
merely extend or make use of the Package, do not, by themselves, cause
the Package to be a Modified Version. In addition, such works are not
considered parts of the Package itself, and are not subject to the
terms of this license.
General Provisions
(10) Any use, modification, and distribution of the Standard or
Modified Versions is governed by this Artistic License. By using,
modifying or distributing the Package, you accept this license. Do not
use, modify, or distribute the Package, if you do not accept this
license.
(11) If your Modified Version has been derived from a Modified
Version made by someone other than you, you are nevertheless required
to ensure that your Modified Version complies with the requirements of
this license.
(12) This license does not grant you the right to use any trademark,
service mark, tradename, or logo of the Copyright Holder.
(13) This license includes the non-exclusive, worldwide,
free-of-charge patent license to make, have made, use, offer to sell,
sell, import and otherwise transfer the Package with respect to any
patent claims licensable by the Copyright Holder that are necessarily
infringed by the Package. If you institute patent litigation
(including a cross-claim or counterclaim) against any party alleging
that the Package constitutes direct or contributory patent
infringement, then this Artistic License to you shall terminate on the
date that such litigation is filed.
(14) Disclaimer of Warranty:
THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
part of the Node.js project, and is neither owned by nor
officially affiliated with Joyent, Inc.
Packages published in the npm registry are not part of npm
itself, are the sole property of their respective maintainers,
and are not covered by this license.
Packages published in the npm registry (other than the Software and
its included dependencies) are not part of npm itself, are the sole
property of their respective maintainers, and are not covered by
this license.
"npm Logo" created by Mathias Pettersson and Brian Hammond,
used with permission.
This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer,
according to the terms of the MIT license.
"Gubblebum Blocky" font
Copyright (c) by Tjarda Koster, http://jelloween.deviantart.com
included for use in the npm website and documentation,
used with permission.
This program uses "request", Copyright (c) 2011 Mikeal Rogers,
according to the terms of the Apache license.
This program uses "mkdirp", Copyright (c) 2010 James Halliday,
according to the terms of the MIT/X11 license.
This program uses several Node modules contained in the node_modules/
subdirectory, according to the terms of their respective licenses.
"""
- tools/doc/node_modules/marked Marked is a Markdown parser. Marked's
license follows
- tools/doc/node_modules/marked. Marked is a Markdown parser. Marked's
license follows:
"""
Copyright (c) 2011-2012, Christopher Jeffrey (https://github.com/chjj/)
@@ -550,3 +582,230 @@ maintained libraries. The externally maintained libraries used by Node are:
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
"""
- test/gc/node_modules/weak. Node-weak is a node.js addon that provides garbage
collector notifications. Node-weak's license follows:
"""
Copyright (c) 2011, Ben Noordhuis <info@bnoordhuis.nl>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
"""
- src/ngx-queue.h. ngx-queue.h is taken from the nginx source tree. nginx's
license follows:
"""
Copyright (C) 2002-2012 Igor Sysoev
Copyright (C) 2011,2012 Nginx, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
"""
- wrk is located at tools/wrk. wrk's license follows:
"""
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
"""

326
Makefile
View File

@@ -1,39 +1,80 @@
-include config.mk
BUILDTYPE ?= Release
PYTHON ?= python
WAF = $(PYTHON) tools/waf-light
NINJA ?= ninja
DESTDIR ?=
SIGN ?=
web_root = node@nodejs.org:~/web/nodejs.org/
NODE ?= ./node
#
# Because we recursively call make from waf we need to make sure that we are
# using the correct make. Not all makes are GNU Make, but this likely only
# works with gnu make. To deal with this we remember how the user invoked us
# via a make builtin variable and use that in all subsequent operations
#
export NODE_MAKE := $(MAKE)
# Default to verbose builds.
# To do quiet/pretty builds, run `make V=` to set V to an empty string,
# or set the V environment variable to an empty string.
V ?= 1
all: program
@-[ -f out/Release/node ] && ls -lh out/Release/node
# BUILDTYPE=Debug builds both release and debug builds. If you want to compile
# just the debug build, run `make -C out BUILDTYPE=Debug` instead.
ifeq ($(BUILDTYPE),Release)
all: out/Makefile node
else
all: out/Makefile node node_g
endif
all-progress:
@$(WAF) -p build
# The .PHONY is needed to ensure that we recursively use the out/Makefile
# to check for changes.
.PHONY: node node_g
program:
@$(WAF) --product-type=program build
ifeq ($(USE_NINJA),1)
node: config.gypi
$(NINJA) -C out/Release/
ln -fs out/Release/node node
staticlib:
@$(WAF) --product-type=cstaticlib build
node_g: config.gypi
$(NINJA) -C out/Debug/
ln -fs out/Debug/node $@
else
node: config.gypi out/Makefile
$(MAKE) -C out BUILDTYPE=Release V=$(V)
ln -fs out/Release/node node
dynamiclib:
@$(WAF) --product-type=cshlib build
node_g: config.gypi out/Makefile
$(MAKE) -C out BUILDTYPE=Debug V=$(V)
ln -fs out/Debug/node $@
endif
install:
@$(WAF) install
out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/common.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
ifeq ($(USE_NINJA),1)
touch out/Makefile
$(PYTHON) tools/gyp_node.py -f ninja
else
$(PYTHON) tools/gyp_node.py -f make
endif
config.gypi: configure
$(PYTHON) ./configure
install: all
$(PYTHON) tools/install.py $@ $(DESTDIR)
uninstall:
@$(WAF) uninstall
$(PYTHON) tools/install.py $@ $(DESTDIR)
clean:
-rm -rf out/Makefile node node_g out/$(BUILDTYPE)/node blog.html email.md
-find out/ -name '*.o' -o -name '*.a' | xargs rm -rf
-rm -rf node_modules
distclean:
-rm -rf out
-rm -f config.gypi
-rm -f config.mk
-rm -rf node node_g blog.html email.md
-rm -rf node_modules
test: all
$(PYTHON) tools/test.py --mode=release simple message
$(MAKE) jslint
test-http1: all
$(PYTHON) tools/test.py --mode=release --use-http1 simple message
@@ -41,16 +82,16 @@ test-http1: all
test-valgrind: all
$(PYTHON) tools/test.py --mode=release --valgrind simple message
node_modules/weak:
test/gc/node_modules/weak/build/Release/weakref.node:
@if [ ! -f node ]; then make all; fi
@if [ ! -d node_modules ]; then mkdir -p node_modules; fi
./node deps/npm/bin/npm-cli.js install weak \
--prefix="$(shell pwd)" --unsafe-perm # go ahead and run as root.
./node deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
--directory="$(shell pwd)/test/gc/node_modules/weak" \
--nodedir="$(shell pwd)"
test-gc: all node_modules/weak
test-gc: all test/gc/node_modules/weak/build/Release/weakref.node
$(PYTHON) tools/test.py --mode=release gc
test-all: all node_modules/weak
test-all: all test/gc/node_modules/weak/build/Release/weakref.node
$(PYTHON) tools/test.py --mode=debug,release
make test-npm
@@ -78,41 +119,35 @@ test-pummel: all
test-internet: all
$(PYTHON) tools/test.py internet
test-npm: all
test-npm: node
./node deps/npm/test/run.js
test-npm-publish: all
test-npm-publish: node
npm_package_config_publishtest=true ./node deps/npm/test/run.js
out/Release/node: all
test-timers:
$(MAKE) --directory=tools faketime
$(PYTHON) tools/test.py --mode=release timers
test-timers-clean:
$(MAKE) --directory=tools clean
apidoc_sources = $(wildcard doc/api/*.markdown)
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
$(addprefix out/,$(apidoc_sources:.markdown=.json))
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/logos out/doc/images
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
doc_images = $(addprefix out/,$(wildcard doc/images/* doc/*.jpg doc/*.png))
website_files = \
out/doc/index.html \
out/doc/v0.4_announcement.html \
out/doc/cla.html \
out/doc/sh_main.js \
out/doc/sh_javascript.min.js \
out/doc/sh_vim-dark.css \
out/doc/sh.css \
out/doc/favicon.ico \
out/doc/pipe.css \
out/doc/about/index.html \
out/doc/community/index.html \
out/doc/logos/index.html \
out/doc/changelog.html \
$(doc_images)
out/doc/sh_javascript.min.js
doc: program $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/
doc: $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ out/doc/changelog.html node
doc-branch: NODE_DOC_VERSION = v$(shell $(PYTHON) tools/getnodeversion.py | cut -f1,2 -d.)
doc-branch: doc
$(apidoc_dirs):
mkdir -p $@
@@ -120,20 +155,17 @@ $(apidoc_dirs):
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
cp $< $@
out/doc/changelog.html: ChangeLog doc/changelog-head.html doc/changelog-foot.html tools/build-changelog.sh
out/doc/changelog.html: ChangeLog doc/changelog-head.html doc/changelog-foot.html tools/build-changelog.sh node
bash tools/build-changelog.sh
out/doc/%.html: doc/%.html
cat $< | sed -e 's|__VERSION__|'$(VERSION)'|g' > $@
out/doc/%: doc/%
cp -r $< $@
out/doc/api/%.json: doc/api/%.markdown
out/Release/node tools/doc/generate.js --format=json $< > $@
out/doc/api/%.json: doc/api/%.markdown node
NODE_DOC_VERSION=$(NODE_DOC_VERSION) out/Release/node tools/doc/generate.js --format=json $< > $@
out/doc/api/%.html: doc/api/%.markdown
out/Release/node tools/doc/generate.js --format=html --template=doc/template.html $< > $@
out/doc/api/%.html: doc/api/%.markdown node
NODE_DOC_VERSION=$(NODE_DOC_VERSION) out/Release/node tools/doc/generate.js --format=html --template=doc/template.html $< > $@
email.md: ChangeLog tools/email-footer.md
bash tools/changelog-head.sh | sed 's|^\* #|* \\#|g' > $@
@@ -152,78 +184,185 @@ website-upload: doc
rm -f ~/web/nodejs.org/dist/node-latest.tar.gz &&\
ln -s $(VERSION)/node-$(VERSION).tar.gz ~/web/nodejs.org/dist/node-latest.tar.gz'
doc-branch-upload: NODE_DOC_VERSION = v$(shell $(PYTHON) tools/getnodeversion.py | cut -f1,2 -d.)
doc-branch-upload: doc-branch
echo $(NODE_DOC_VERSION)
rsync -r out/doc/api/ node@nodejs.org:~/web/nodejs.org/$(NODE_DOC_VERSION)
docopen: out/doc/api/all.html
-google-chrome out/doc/api/all.html
docclean:
-rm -rf out/doc
clean:
$(WAF) clean
-find tools -name "*.pyc" | xargs rm -f
-rm -rf blog.html email.md
-rm -rf node_modules
distclean: docclean
-find tools -name "*.pyc" | xargs rm -f
-rm -rf dist-osx
-rm -rf out/ node node_g
-rm -rf blog.html email.md
check:
@tools/waf-light check
VERSION=v$(shell $(PYTHON) tools/getnodeversion.py)
RAWVER=$(shell $(PYTHON) tools/getnodeversion.py)
VERSION=v$(RAWVER)
NODE_DOC_VERSION=$(VERSION)
RELEASE=$(shell $(PYTHON) tools/getnodeisrelease.py)
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
ifeq ($(findstring x86_64,$(shell uname -m)),x86_64)
DESTCPU ?= x64
else
DESTCPU ?= ia32
endif
ifeq ($(DESTCPU),x64)
ARCH=x64
else
ifeq ($(DESTCPU),arm)
ARCH=arm
else
ARCH=x86
endif
endif
TARNAME=node-$(VERSION)
ifdef NIGHTLY
TAG = nightly-$(NIGHTLY)
TARNAME=node-$(VERSION)-$(TAG)
endif
TARBALL=$(TARNAME).tar.gz
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
BINARYTAR=$(BINARYNAME).tar.gz
PKG=out/$(TARNAME).pkg
PACKAGEMAKER ?= /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
PKGSRC=nodejs-$(DESTCPU)-$(RAWVER).tgz
ifdef NIGHTLY
PKGSRC=nodejs-$(DESTCPU)-$(RAWVER)-$(TAG).tgz
endif
#dist: doc/node.1 doc/api
dist: $(TARBALL) $(PKG)
dist: doc $(TARBALL) $(PKG)
PKGDIR=out/dist-osx
release-only:
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
exit 0 ; \
else \
echo "" >&2 ; \
echo "The git repository is not clean." >&2 ; \
echo "Please commit changes before building release tarball." >&2 ; \
echo "" >&2 ; \
git status --porcelain | egrep -v '^\?\?' >&2 ; \
echo "" >&2 ; \
exit 1 ; \
fi
@if [ "$(NIGHTLY)" != "" -o "$(RELEASE)" = "1" ]; then \
exit 0; \
else \
echo "" >&2 ; \
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
echo "Did you remember to update src/node_version.cc?" >&2 ; \
echo "" >&2 ; \
exit 1 ; \
fi
pkg: $(PKG)
$(PKG):
-rm -rf $(PKGDIR)
# Need to remove deps between architecture changes.
rm -rf out/*/deps
$(WAF) configure --prefix=/usr/local --without-snapshot --dest-cpu=ia32
CFLAGS=-m32 DESTDIR=$(PKGDIR)/32 $(WAF) install
rm -rf out/*/deps
$(WAF) configure --prefix=/usr/local --without-snapshot --dest-cpu=x64
CFLAGS=-m64 DESTDIR=$(PKGDIR) $(WAF) install
$(PKG): release-only
rm -rf $(PKGDIR)
rm -rf out/deps out/Release
$(PYTHON) ./configure --without-snapshot --dest-cpu=ia32 --tag=$(TAG)
$(MAKE) install V=$(V) DESTDIR=$(PKGDIR)/32
rm -rf out/deps out/Release
$(PYTHON) ./configure --without-snapshot --dest-cpu=x64 --tag=$(TAG)
$(MAKE) install V=$(V) DESTDIR=$(PKGDIR)
SIGN="$(APP_SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
lipo $(PKGDIR)/32/usr/local/bin/node \
$(PKGDIR)/usr/local/bin/node \
-output $(PKGDIR)/usr/local/bin/node-universal \
-create
mv $(PKGDIR)/usr/local/bin/node-universal $(PKGDIR)/usr/local/bin/node
rm -rf $(PKGDIR)/32
$(packagemaker) \
--id "org.nodejs.NodeJS-$(VERSION)" \
$(PACKAGEMAKER) \
--id "org.nodejs.Node" \
--doc tools/osx-pkg.pmdoc \
--out $(PKG)
SIGN="$(INT_SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh
$(TARBALL): out/doc
$(TARBALL): release-only node doc
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
mkdir -p $(TARNAME)/doc
mkdir -p $(TARNAME)/doc/api
cp doc/node.1 $(TARNAME)/doc/node.1
cp -r out/doc/api $(TARNAME)/doc/api
cp -r out/doc/api/* $(TARNAME)/doc/api/
rm -rf $(TARNAME)/deps/v8/test # too big
rm -rf $(TARNAME)/doc/images # too big
find $(TARNAME)/ -type l | xargs rm # annoying on windows
tar -cf $(TARNAME).tar $(TARNAME)
rm -rf $(TARNAME)
gzip -f -9 $(TARNAME).tar
tar: $(TARBALL)
$(BINARYTAR): release-only
rm -rf $(BINARYNAME)
rm -rf out/deps out/Release
$(PYTHON) ./configure --prefix=/ --without-snapshot --dest-cpu=$(DESTCPU) --tag=$(TAG) $(CONFIG_FLAGS)
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
cp README.md $(BINARYNAME)
cp LICENSE $(BINARYNAME)
cp ChangeLog $(BINARYNAME)
tar -cf $(BINARYNAME).tar $(BINARYNAME)
rm -rf $(BINARYNAME)
gzip -f -9 $(BINARYNAME).tar
binary: $(BINARYTAR)
$(PKGSRC): release-only
rm -rf dist out
$(PYTHON) configure --prefix=/ --without-snapshot \
--dest-cpu=$(DESTCPU) --tag=$(TAG) $(CONFIG_FLAGS)
$(MAKE) install DESTDIR=dist
(cd dist; find * -type f | sort) > packlist
pkg_info -X pkg_install | \
egrep '^(MACHINE_ARCH|OPSYS|OS_VERSION|PKGTOOLS_VERSION)' > build-info
pkg_create -B build-info -c tools/pkgsrc/comment -d tools/pkgsrc/description \
-f packlist -I /opt/local -p dist -U $(PKGSRC)
pkgsrc: $(PKGSRC)
dist-upload: $(TARBALL) $(PKG)
ssh node@nodejs.org mkdir -p web/nodejs.org/dist/$(VERSION)
scp $(TARBALL) node@nodejs.org:~/web/nodejs.org/dist/$(VERSION)/$(TARBALL)
scp $(PKG) node@nodejs.org:~/web/nodejs.org/dist/$(VERSION)/$(TARNAME).pkg
bench:
wrkclean:
$(MAKE) -C tools/wrk/ clean
rm tools/wrk/wrk
wrk: tools/wrk/wrk
tools/wrk/wrk:
$(MAKE) -C tools/wrk/
bench-net: all
@$(NODE) benchmark/common.js net
bench-crypto: all
@$(NODE) benchmark/common.js crypto
bench-tls: all
@$(NODE) benchmark/common.js tls
bench-http: wrk all
@$(NODE) benchmark/common.js http
bench-fs: all
@$(NODE) benchmark/common.js fs
bench-misc: all
@$(MAKE) -C benchmark/misc/function_call/
@$(NODE) benchmark/common.js misc
bench-array: all
@$(NODE) benchmark/common.js arrays
bench-buffer: all
@$(NODE) benchmark/common.js buffers
bench-all: bench bench-misc bench-array bench-buffer
bench: bench-net bench-http bench-fs bench-tls
bench-http-simple:
benchmark/http_simple_bench.sh
bench-idle:
@@ -231,12 +370,15 @@ bench-idle:
sleep 1
./node benchmark/idle_clients.js &
jslintfix:
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/fixjsstyle.py --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
jslint:
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/ --exclude_files lib/punycode.js
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
cpplint:
@$(PYTHON) tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
lint: jslint cpplint
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean dist-upload check uninstall install all program staticlib dynamiclib test test-all website-upload
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all staticlib dynamiclib test test-all website-upload pkg blog blogclean tar binary release-only bench-http-simple bench-idle bench-all bench bench-misc bench-array bench-buffer bench-net bench-http bench-fs bench-tls

View File

@@ -1,319 +0,0 @@
BUILDTYPE ?= Release
all: out/Makefile
tools/gyp_node -f make
$(MAKE) -C out BUILDTYPE=$(BUILDTYPE)
-ln -fs out/Release/node node
-ln -fs out/Debug/node node_g
out/Release/node: all
out/Makefile: node.gyp deps/uv/uv.gyp
clean:
rm -rf out
distclean:
rm -rf out
test: all
python tools/test.py --mode=release simple message
test-http1: all
python tools/test.py --mode=release --use-http1 simple message
test-valgrind: all
python tools/test.py --mode=release --valgrind simple message
test-all: all
python tools/test.py --mode=debug,release
test-all-http1: all
python tools/test.py --mode=debug,release --use-http1
test-all-valgrind: all
python tools/test.py --mode=debug,release --valgrind
test-release: all
python tools/test.py --mode=release
test-debug: all
python tools/test.py --mode=debug
test-message: all
python tools/test.py message
test-simple: all
python tools/test.py simple
test-pummel: all
python tools/test.py pummel
test-internet: all
python tools/test.py internet
UVTEST += simple/test-assert
UVTEST += simple/test-buffer
UVTEST += simple/test-c-ares
UVTEST += simple/test-chdir
UVTEST += simple/test-delayed-require
UVTEST += simple/test-eio-race2
UVTEST += simple/test-eio-race4
UVTEST += simple/test-event-emitter-add-listeners
UVTEST += simple/test-event-emitter-modify-in-emit
UVTEST += simple/test-event-emitter-num-args
UVTEST += simple/test-event-emitter-once
UVTEST += simple/test-event-emitter-remove-all-listeners
UVTEST += simple/test-event-emitter-remove-listeners
UVTEST += simple/test-exception-handler
UVTEST += simple/test-exception-handler2
UVTEST += simple/test-exception-handler
UVTEST += simple/test-executable-path
UVTEST += simple/test-file-read-noexist
UVTEST += simple/test-file-write-stream
UVTEST += simple/test-fs-fsync
UVTEST += simple/test-fs-open
UVTEST += simple/test-fs-readfile-empty
UVTEST += simple/test-fs-read-file-sync
UVTEST += simple/test-fs-read-file-sync-hostname
UVTEST += simple/test-fs-sir-writes-alot
UVTEST += simple/test-fs-write
UVTEST += simple/test-fs-write-buffer
UVTEST += simple/test-fs-write-file
UVTEST += simple/test-fs-write-file-buffer
UVTEST += simple/test-fs-write-stream
UVTEST += simple/test-fs-write-stream-end
UVTEST += simple/test-fs-write-sync
UVTEST += simple/test-global
UVTEST += simple/test-http
UVTEST += simple/test-http-1.0
UVTEST += simple/test-http-abort-client
UVTEST += simple/test-http-allow-req-after-204-res
UVTEST += simple/test-http-blank-header
UVTEST += simple/test-http-buffer-sanity
UVTEST += simple/test-http-cat
UVTEST += simple/test-http-chunked
UVTEST += simple/test-http-client-abort
UVTEST += simple/test-http-client-parse-error
UVTEST += simple/test-http-client-race
UVTEST += simple/test-http-client-race-2
UVTEST += simple/test-http-client-upload
UVTEST += simple/test-http-client-upload-buf
UVTEST += simple/test-http-contentLength0
UVTEST += simple/test-http-default-encoding
UVTEST += simple/test-http-dns-fail
UVTEST += simple/test-http-eof-on-connect
UVTEST += simple/test-http-exceptions
UVTEST += simple/test-http-expect-continue
UVTEST += simple/test-http-extra-response
UVTEST += simple/test-http-head-request
UVTEST += simple/test-http-head-response-has-no-body
UVTEST += simple/test-http-keep-alive
UVTEST += simple/test-http-keep-alive-close-on-header
UVTEST += simple/test-http-malformed-request
UVTEST += simple/test-http-many-keep-alive-connections
UVTEST += simple/test-http-mutable-headers
UVTEST += simple/test-http-parser
UVTEST += simple/test-http-proxy
UVTEST += simple/test-http-request-end
UVTEST += simple/test-http-response-close
UVTEST += simple/test-http-response-readable
UVTEST += simple/test-http-unix-socket
UVTEST += simple/test-http-server
UVTEST += simple/test-http-server-multiheaders
UVTEST += simple/test-http-set-cookies
UVTEST += simple/test-http-set-timeout
UVTEST += simple/test-http-set-trailers
UVTEST += simple/test-http-upgrade-agent
UVTEST += simple/test-http-upgrade-client
UVTEST += simple/test-http-upgrade-client2
UVTEST += simple/test-http-upgrade-server
UVTEST += simple/test-http-upgrade-server2
UVTEST += simple/test-http-wget
UVTEST += simple/test-http-write-empty-string
UVTEST += simple/test-http-wget
UVTEST += simple/test-mkdir-rmdir
UVTEST += simple/test-net-binary
UVTEST += simple/test-net-pingpong
UVTEST += simple/test-net-can-reset-timeout
UVTEST += simple/test-net-connect-buffer
UVTEST += simple/test-net-connect-timeout
UVTEST += simple/test-net-create-connection
UVTEST += simple/test-net-eaddrinuse
UVTEST += simple/test-net-isip
UVTEST += simple/test-net-keepalive
UVTEST += simple/test-net-pingpong
UVTEST += simple/test-net-reconnect
UVTEST += simple/test-net-remote-address-port
UVTEST += simple/test-net-server-bind
UVTEST += simple/test-net-server-max-connections
UVTEST += simple/test-net-server-try-ports
UVTEST += simple/test-net-stream
UVTEST += simple/test-net-socket-timeout
UVTEST += simple/test-next-tick
UVTEST += simple/test-next-tick-doesnt-hang
UVTEST += simple/test-next-tick-errors
UVTEST += simple/test-next-tick-ordering
UVTEST += simple/test-next-tick-ordering2
UVTEST += simple/test-next-tick-starvation
UVTEST += simple/test-module-load-list
UVTEST += simple/test-path
UVTEST += simple/test-pipe-stream
UVTEST += simple/test-pump-file2tcp
UVTEST += simple/test-pump-file2tcp-noexist
UVTEST += simple/test-punycode
UVTEST += simple/test-querystring
UVTEST += simple/test-readdir
UVTEST += simple/test-readdouble
UVTEST += simple/test-readfloat
UVTEST += simple/test-readint
UVTEST += simple/test-readuint
UVTEST += simple/test-regress-GH-819
UVTEST += simple/test-regress-GH-897
UVTEST += simple/test-regression-object-prototype
UVTEST += simple/test-require-cache
UVTEST += simple/test-require-cache-without-stat
UVTEST += simple/test-require-exceptions
UVTEST += simple/test-require-resolve
UVTEST += simple/test-script-context
UVTEST += simple/test-script-new
UVTEST += simple/test-script-static-context
UVTEST += simple/test-script-static-new
UVTEST += simple/test-script-static-this
UVTEST += simple/test-script-this
UVTEST += simple/test-stream-pipe-cleanup
UVTEST += simple/test-stream-pipe-error-handling
UVTEST += simple/test-stream-pipe-event
UVTEST += simple/test-stream-pipe-multi
UVTEST += simple/test-string-decoder
UVTEST += simple/test-sys
UVTEST += simple/test-tcp-wrap
UVTEST += simple/test-tcp-wrap-connect
UVTEST += simple/test-tcp-wrap-listen
UVTEST += simple/test-timers-linked-list
UVTEST += simple/test-tty-stdout-end
UVTEST += simple/test-url
UVTEST += simple/test-utf8-scripts
UVTEST += simple/test-vm-create-context-circular-reference
UVTEST += simple/test-writedouble
UVTEST += simple/test-writefloat
UVTEST += simple/test-writeint
UVTEST += simple/test-writeuint
UVTEST += simple/test-zerolengthbufferbug
UVTEST += pummel/test-http-client-reconnect-bug
UVTEST += pummel/test-http-upload-timeout
UVTEST += pummel/test-net-many-clients
UVTEST += pummel/test-net-pause
UVTEST += pummel/test-net-pingpong-delay
UVTEST += pummel/test-net-timeout
UVTEST += pummel/test-timers
UVTEST += pummel/test-timer-wrap
UVTEST += pummel/test-timer-wrap2
UVTEST += pummel/test-vm-memleak
UVTEST += internet/test-dns
UVTEST += simple/test-tls-client-abort
UVTEST += simple/test-tls-client-verify
UVTEST += simple/test-tls-connect
#UVTEST += simple/test-tls-ext-key-usage # broken
UVTEST += simple/test-tls-junk-closes-server
UVTEST += simple/test-tls-npn-server-client
UVTEST += simple/test-tls-request-timeout
#UVTEST += simple/test-tls-securepair-client # broken
UVTEST += simple/test-tls-securepair-server
#UVTEST += simple/test-tls-server-verify # broken
UVTEST += simple/test-tls-set-encoding
# child_process
UVTEST += simple/test-child-process-exit-code
UVTEST += simple/test-child-process-buffering
UVTEST += simple/test-child-process-exec-cwd
UVTEST += simple/test-child-process-cwd
UVTEST += simple/test-child-process-env
UVTEST += simple/test-child-process-stdin
UVTEST += simple/test-child-process-ipc
UVTEST += simple/test-child-process-deprecated-api
test-uv: all
NODE_USE_UV=1 python tools/test.py $(UVTEST)
test-uv-debug: all
NODE_USE_UV=1 python tools/test.py --mode=debug $(UVTEST)
apidoc_sources = $(wildcard doc/api/*.markdown)
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html))
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
website_files = \
out/doc/index.html \
out/doc/v0.4_announcement.html \
out/doc/cla.html \
out/doc/sh_main.js \
out/doc/sh_javascript.min.js \
out/doc/sh_vim-dark.css \
out/doc/logo.png \
out/doc/sponsored.png \
out/doc/favicon.ico \
out/doc/pipe.css
doc: out/Release/node $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs)
$(apidoc_dirs):
mkdir -p $@
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
cp $< $@
out/doc/%: doc/%
cp $< $@
out/doc/api/%.html: doc/api/%.markdown out/Release/node $(apidoc_dirs) $(apiassets) tools/doctool/doctool.js
out/Release/node tools/doctool/doctool.js doc/template.html $< > $@
out/doc/%:
website-upload: doc
scp -r out/doc/* $(web_root)
docopen: out/doc/api/all.html
-google-chrome out/doc/api/all.html
docclean:
-rm -rf out/doc
VERSION=$(shell git describe)
TARNAME=node-$(VERSION)
#dist: doc/node.1 doc/api
dist: doc
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
mkdir -p $(TARNAME)/doc
cp doc/node.1 $(TARNAME)/doc/node.1
cp -r out/doc/api $(TARNAME)/doc/api
rm -rf $(TARNAME)/deps/v8/test # too big
rm -rf $(TARNAME)/doc/logos # too big
tar -cf $(TARNAME).tar $(TARNAME)
rm -rf $(TARNAME)
gzip -f -9 $(TARNAME).tar
bench:
benchmark/http_simple_bench.sh
bench-idle:
./node benchmark/idle_server.js &
sleep 1
./node benchmark/idle_clients.js &
jslint:
PYTHONPATH=tools/closure_linter/ python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/
cpplint:
@python tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
lint: jslint cpplint
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install all program staticlib dynamiclib test test-all website-upload

View File

@@ -3,16 +3,44 @@ Evented I/O for V8 javascript. [![Build Status](https://secure.travis-ci.org/joy
### To build:
Unix/Macintosh (requires python 2.6 or 2.7):
Prerequisites (Unix only):
* GCC 4.2 or newer
* Python 2.6 or 2.7
* GNU Make 3.81 or newer
* libexecinfo (FreeBSD and OpenBSD only)
Unix/Macintosh:
./configure
make
make install
If your python binary is in a non-standard location or has a
non-standard name, run the following instead:
export PYTHON=/path/to/python
$PYTHON ./configure
make
make install
Windows:
vcbuild.bat
You can download pre-built binaries for various operating systems from
[http://nodejs.org/download/](http://nodejs.org/download/). The Windows
and OS X installers will prompt you for the location to install to.
The tarballs are self-contained; you can extract them to a local directory
with:
tar xzf /path/to/node-<version>-<platform>-<arch>.tar.gz
Or system-wide with:
cd /usr/local && tar --strip-components 1 -xzf \
/path/to/node-<version>-<platform>-<arch>.tar.gz
### To run the tests:
Unix/Macintosh:
@@ -35,9 +63,9 @@ Resources for Newcomers
---
- [The Wiki](https://github.com/joyent/node/wiki)
- [nodejs.org](http://nodejs.org/)
- [how to install node.js and npm (node package manager)](http://joyeur.com/2010/12/10/installing-node-and-npm/)
- [how to install node.js and npm (node package manager)](http://www.joyent.com/blog/installing-node-and-npm/)
- [list of modules](https://github.com/joyent/node/wiki/modules)
- [searching the npm registry](http://search.npmjs.org/)
- [searching the npm registry](http://npmjs.org/)
- [list of companies and projects using node](https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node)
- [node.js mailing list](http://groups.google.com/group/nodejs)
- irc chatroom, [#node.js on freenode.net](http://webchat.freenode.net?channels=node.js&uio=d4)

View File

@@ -0,0 +1,20 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
type: 'Array Buffer Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split(' '),
n: [25]
});
function main(conf) {
var type = conf.type;
var clazz = global[type];
var n = +conf.n;
bench.start();
var arr = new clazz(n * 1e6);
for (var i = 0; i < 10; ++i) {
for (var j = 0, k = arr.length; j < k; ++j) {
arr[j] = (j ^ k) & 127;
}
}
bench.end(n);
}

View File

@@ -1,15 +0,0 @@
var types = 'Array Buffer Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split(' ');
var type = types[types.indexOf(process.argv[2])];
if (!type)
type = types[0];
console.error('Benchmarking', type);
var clazz = global[type];
var arr = new clazz(25 * 10e5);
for (var i = 0; i < 10; ++i) {
for (var j = 0, k = arr.length; j < k; ++j) {
arr[j] = (j ^ k) & 127;
}
}

View File

@@ -0,0 +1,20 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
type: 'Array Buffer Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split(' '),
n: [25]
});
function main(conf) {
var type = conf.type;
var clazz = global[type];
var n = +conf.n;
bench.start();
var arr = new clazz(n * 1e6);
for (var i = 0; i < 10; ++i) {
for (var j = 0, k = arr.length; j < k; ++j) {
arr[j] = 0.0;
}
}
bench.end(n);
}

View File

@@ -0,0 +1,20 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
type: 'Array Buffer Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split(' '),
n: [25]
});
function main(conf) {
var type = conf.type;
var clazz = global[type];
var n = +conf.n;
bench.start();
var arr = new clazz(n * 1e6);
for (var i = 0; i < 10; ++i) {
for (var j = 0, k = arr.length; j < k; ++j) {
arr[j] = 0;
}
}
bench.end(n);
}

View File

@@ -1,15 +0,0 @@
var types = 'Array Buffer Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split(' ');
var type = types[types.indexOf(process.argv[2])];
if (!type)
type = types[0];
console.error('Benchmarking', type);
var clazz = global[type];
var arr = new clazz(25 * 10e5);
for (var i = 0; i < 10; ++i) {
for (var j = 0, k = arr.length; j < k; ++j) {
arr[j] = 0.0;
}
}

View File

@@ -1,15 +0,0 @@
var types = 'Array Buffer Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split(' ');
var type = types[types.indexOf(process.argv[2])];
if (!type)
type = types[0];
console.error('Benchmarking', type);
var clazz = global[type];
var arr = new clazz(25 * 10e5);
for (var i = 0; i < 10; ++i) {
for (var j = 0, k = arr.length; j < k; ++j) {
arr[j] = 0;
}
}

View File

@@ -1,6 +0,0 @@
SlowBuffer = require('buffer').SlowBuffer;
for (var i = 0; i < 1e6; i++) {
b = new SlowBuffer(10);
b[1] = 2
}

View File

@@ -0,0 +1,36 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('../common.js');
var bench = common.createBenchmark(main, {});
function main(conf) {
var N = 64 * 1024 * 1024;
var b = Buffer(N);
var s = '';
for (var i = 0; i < 256; ++i) s += String.fromCharCode(i);
bench.start();
for (var i = 0; i < N; i += 256) b.write(s, i, 256, 'ascii');
for (var i = 0; i < 32; ++i) b.toString('base64');
bench.end(64);
}

View File

@@ -0,0 +1,19 @@
SlowBuffer = require('buffer').SlowBuffer;
var common = require('../common.js');
var bench = common.createBenchmark(main, {
type: ['fast', 'slow'],
len: [10, 1024],
n: [1024]
});
function main(conf) {
var len = +conf.len;
var n = +conf.n;
var clazz = conf.type === 'fast' ? Buffer : SlowBuffer;
bench.start();
for (var i = 0; i < n * 1024; i++) {
b = new clazz(len);
}
bench.end(n);
}

View File

@@ -0,0 +1,31 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
noAssert: [false, true],
buffer: ['fast', 'slow'],
type: ['UInt8', 'UInt16LE', 'UInt16BE',
'UInt32LE', 'UInt32BE',
'Int8', 'Int16LE', 'Int16BE',
'Int32LE', 'Int32BE',
'FloatLE', 'FloatBE',
'DoubleLE', 'DoubleBE'],
millions: [1]
});
function main(conf) {
var noAssert = conf.noAssert === 'true';
var len = +conf.millions * 1e6;
var clazz = conf.buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
var buff = new clazz(8);
var fn = 'read' + conf.type;
buff.writeDoubleLE(0, 0, noAssert);
var testFunction = new Function('buff', [
"for (var i = 0; i !== " + len + "; i++) {",
" buff." + fn + "(0, " + JSON.stringify(noAssert) + ");",
"}"
].join("\n"));
bench.start();
testFunction(buff);
bench.end(len / 1e6);
}

View File

@@ -0,0 +1,69 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
noAssert: [false, true],
buffer: ['fast', 'slow'],
type: ['UInt8', 'UInt16LE', 'UInt16BE',
'UInt32LE', 'UInt32BE',
'Int8', 'Int16LE', 'Int16BE',
'Int32LE', 'Int32BE',
'FloatLE', 'FloatBE',
'DoubleLE', 'DoubleBE'],
millions: [1]
});
const INT8 = 0x7f;
const INT16 = 0x7fff;
const INT32 = 0x7fffffff;
const UINT8 = (INT8 * 2) + 1;
const UINT16 = (INT16 * 2) + 1;
const UINT32 = INT32;
var mod = {
writeInt8: INT8,
writeInt16BE: INT16,
writeInt16LE: INT16,
writeInt32BE: INT32,
writeInt32LE: INT32,
writeUInt8: UINT8,
writeUInt16BE: UINT16,
writeUInt16LE: UINT16,
writeUInt32BE: UINT32,
writeUInt32LE: UINT32
};
function main(conf) {
var noAssert = conf.noAssert === 'true';
var len = +conf.millions * 1e6;
var clazz = conf.buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
var buff = new clazz(8);
var fn = 'write' + conf.type;
if (fn.match(/Int/))
benchInt(buff, fn, len, noAssert);
else
benchFloat(buff, fn, len, noAssert);
}
function benchInt(buff, fn, len, noAssert) {
var m = mod[fn];
var testFunction = new Function('buff', [
"for (var i = 0; i !== " + len + "; i++) {",
" buff." + fn + "(i & " + m + ", 0, " + JSON.stringify(noAssert) + ");",
"}"
].join("\n"));
bench.start();
testFunction(buff);
bench.end(len / 1e6);
}
function benchFloat(buff, fn, len, noAssert) {
var testFunction = new Function('buff', [
"for (var i = 0; i !== " + len + "; i++) {",
" buff." + fn + "(i, 0, " + JSON.stringify(noAssert) + ");",
"}"
].join("\n"));
bench.start();
testFunction(buff);
bench.end(len / 1e6);
}

View File

@@ -0,0 +1,57 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
type: ['Uint8', 'Uint16LE', 'Uint16BE',
'Uint32LE', 'Uint32BE',
'Int8', 'Int16LE', 'Int16BE',
'Int32LE', 'Int32BE',
'Float32LE', 'Float32BE',
'Float64LE', 'Float64BE'],
millions: [1]
});
const INT8 = 0x7f;
const INT16 = 0x7fff;
const INT32 = 0x7fffffff;
const UINT8 = INT8 * 2;
const UINT16 = INT16 * 2;
const UINT32 = INT32 * 2;
var mod = {
setInt8: INT8,
setInt16: INT16,
setInt32: INT32,
setUint8: UINT8,
setUint16: UINT16,
setUint32: UINT32
};
function main(conf) {
var len = +conf.millions * 1e6;
var ab = new ArrayBuffer(8);
var dv = new DataView(ab, 0, 8);
var le = /LE$/.test(conf.type);
var fn = 'set' + conf.type.replace(/[LB]E$/, '');
if (/int/i.test(fn))
benchInt(dv, fn, len, le);
else
benchFloat(dv, fn, len, le);
}
function benchInt(dv, fn, len, le) {
var m = mod[fn];
bench.start();
for (var i = 0; i < len; i++) {
dv[fn](0, i % m, le);
}
bench.end(len / 1e6);
}
function benchFloat(dv, fn, len, le) {
bench.start();
for (var i = 0; i < len; i++) {
dv[fn](0, i * 0.1, le);
}
bench.end(len / 1e6);
}

199
benchmark/common.js Normal file
View File

@@ -0,0 +1,199 @@
var assert = require('assert');
var path = require('path');
var silent = +process.env.NODE_BENCH_SILENT;
exports.PORT = process.env.PORT || 12346;
// If this is the main module, then run the benchmarks
if (module === require.main) {
var type = process.argv[2];
if (!type) {
console.error('usage:\n ./node benchmark/common.js <type>');
process.exit(1);
}
var fs = require('fs');
var dir = path.join(__dirname, type);
var tests = fs.readdirSync(dir);
var spawn = require('child_process').spawn;
runBenchmarks();
}
function runBenchmarks() {
var test = tests.shift();
if (!test)
return;
if (test.match(/^[\._]/))
return process.nextTick(runBenchmarks);
console.error(type + '/' + test);
test = path.resolve(dir, test);
var a = (process.execArgv || []).concat(test);
var child = spawn(process.execPath, a, { stdio: 'inherit' });
child.on('close', function(code) {
if (code)
process.exit(code);
else {
console.log('');
runBenchmarks();
}
});
}
exports.createBenchmark = function(fn, options) {
return new Benchmark(fn, options);
};
function Benchmark(fn, options) {
this.fn = fn;
this.options = options;
this.config = parseOpts(options);
this._name = require.main.filename.split(/benchmark[\/\\]/).pop();
this._start = [0,0];
this._started = false;
var self = this;
process.nextTick(function() {
self._run();
});
}
// benchmark an http server.
Benchmark.prototype.http = function(p, args, cb) {
var self = this;
var wrk = path.resolve(__dirname, '..', 'tools', 'wrk', 'wrk');
var regexp = /Requests\/sec:[ \t]+([0-9\.]+)/;
var spawn = require('child_process').spawn;
var url = 'http://127.0.0.1:' + exports.PORT + p;
args = args.concat(url);
var out = '';
var child = spawn(wrk, args);
child.stdout.setEncoding('utf8');
child.stdout.on('data', function(chunk) {
out += chunk;
});
child.on('close', function(code) {
if (cb)
cb(code);
if (code) {
console.error('wrk failed with ' + code);
process.exit(code)
}
var m = out.match(regexp);
var qps = m && +m[1];
if (!qps) {
console.error('%j', out);
console.error('wrk produced strange output');
process.exit(1);
}
self.report(+qps);
});
};
Benchmark.prototype._run = function() {
if (this.config)
return this.fn(this.config);
// one more more options weren't set.
// run with all combinations
var main = require.main.filename;
var settings = [];
var queueLen = 1;
var options = this.options;
var queue = Object.keys(options).reduce(function(set, key) {
var vals = options[key];
assert(Array.isArray(vals));
// match each item in the set with each item in the list
var newSet = new Array(set.length * vals.length);
var j = 0;
set.forEach(function(s) {
vals.forEach(function(val) {
newSet[j++] = s.concat(key + '=' + val);
});
});
return newSet;
}, [[main]]);
var spawn = require('child_process').spawn;
var node = process.execPath;
var i = 0;
function run() {
var argv = queue[i++];
if (!argv)
return;
var child = spawn(node, argv, { stdio: 'inherit' });
child.on('close', function(code, signal) {
if (code)
console.error('child process exited with code ' + code);
else
run();
});
}
run();
};
function parseOpts(options) {
// verify that there's an option provided for each of the options
// if they're not *all* specified, then we return null.
var keys = Object.keys(options);
var num = keys.length;
var conf = {};
for (var i = 2; i < process.argv.length; i++) {
var m = process.argv[i].match(/^(.+)=(.+)$/);
if (!m || !m[1] || !m[2] || !options[m[1]])
return null;
else {
conf[m[1]] = isFinite(m[2]) ? +m[2] : m[2]
num--;
}
}
// still go ahead and set whatever WAS set, if it was.
if (num !== 0) {
Object.keys(conf).forEach(function(k) {
options[k] = [conf[k]];
});
}
return num === 0 ? conf : null;
};
Benchmark.prototype.start = function() {
if (this._started)
throw new Error('Called start more than once in a single benchmark');
this._started = true;
this._start = process.hrtime();
};
Benchmark.prototype.end = function(operations) {
var elapsed = process.hrtime(this._start);
if (!this._started)
throw new Error('called end without start');
if (typeof operations !== 'number')
throw new Error('called end() without specifying operation count');
var time = elapsed[0] + elapsed[1]/1e9;
var rate = operations/time;
this.report(rate);
};
Benchmark.prototype.report = function(value) {
var heading = this.getHeading();
if (!silent)
console.log('%s: %s', heading, value.toPrecision(5));
process.exit(0);
};
Benchmark.prototype.getHeading = function() {
var conf = this.config;
return this._name + ' ' + Object.keys(conf).map(function(key) {
return key + '=' + conf[key];
}).join(' ');
}

151
benchmark/compare.js Normal file
View File

@@ -0,0 +1,151 @@
var usage = 'node benchmark/compare.js ' +
'<node-binary1> <node-binary2> ' +
'[--html] [--red|-r] [--green|-g]';
var show = 'both';
var nodes = [];
var html = false;
for (var i = 2; i < process.argv.length; i++) {
var arg = process.argv[i];
switch (arg) {
case '--red': case '-r':
show = show === 'green' ? 'both' : 'red';
break;
case '--green': case '-g':
show = show === 'red' ? 'both' : 'green';
break;
case '--html':
html = true;
break;
case '-h': case '-?': case '--help':
console.log(usage);
process.exit(0);
default:
nodes.push(arg);
break;
}
}
if (!html) {
var start = '';
var green = '\033[1;32m';
var red = '\033[1;31m';
var reset = '\033[m';
var end = '';
} else {
var start = '<pre style="background-color:#333;color:#eee">';
var green = '<span style="background-color:#0f0;color:#000">';
var red = '<span style="background-color:#f00;color:#fff">';
var reset = '</span>';
var end = '</pre>';
}
var runBench = process.env.NODE_BENCH || 'bench';
if (nodes.length !== 2)
return console.error('usage:\n %s', usage);
var spawn = require('child_process').spawn;
var results = {};
var toggle = 1;
var r = (+process.env.NODE_BENCH_RUNS || 1) * 2;
run();
function run() {
if (--r < 0)
return compare();
toggle = ++toggle % 2;
var node = nodes[toggle];
console.error('running %s', node);
var env = {};
for (var i in process.env)
env[i] = process.env[i];
env.NODE = node;
var out = '';
var child = spawn('make', [runBench], { env: env });
child.stdout.setEncoding('utf8');
child.stdout.on('data', function(c) {
out += c;
});
child.stderr.pipe(process.stderr);
child.on('close', function(code) {
if (code) {
console.error('%s exited with code=%d', node, code);
process.exit(code);
} else {
out.trim().split(/\r?\n/).forEach(function(line) {
line = line.trim();
if (!line)
return;
var s = line.split(':');
var num = +s.pop();
if (!num && num !== 0)
return;
line = s.join(':');
var res = results[line] = results[line] || {};
res[node] = res[node] || [];
res[node].push(num);
});
run();
}
});
}
function compare() {
// each result is an object with {"foo.js arg=bar":12345,...}
// compare each thing, and show which node did the best.
// node[0] is shown in green, node[1] shown in red.
var maxLen = -Infinity;
var util = require('util');
console.log(start);
Object.keys(results).map(function(bench) {
var res = results[bench];
var n0 = avg(res[nodes[0]]);
var n1 = avg(res[nodes[1]]);
var pct = ((n0 - n1) / n1 * 100).toFixed(2);
var g = n0 > n1 ? green : '';
var r = n0 > n1 ? '' : red;
var c = r || g;
if (show === 'green' && !g || show === 'red' && !r)
return;
var r0 = util.format('%s%s: %d%s', g, nodes[0], n0.toPrecision(5), g ? reset : '');
var r1 = util.format('%s%s: %d%s', r, nodes[1], n1.toPrecision(5), r ? reset : '');
var pct = c + pct + '%' + reset;
var l = util.format('%s: %s %s', bench, r0, r1);
maxLen = Math.max(l.length + pct.length, maxLen);
return [l, pct];
}).filter(function(l) {
return l;
}).forEach(function(line) {
var l = line[0];
var pct = line[1];
var dotLen = maxLen - l.length - pct.length + 2;
var dots = ' ' + new Array(Math.max(0, dotLen)).join('.') + ' ';
console.log(l + dots + pct);
});
console.log(end);
}
function avg(list) {
if (list.length >= 3) {
list = list.sort();
var q = Math.floor(list.length / 4) || 1;
list = list.slice(q, -q);
}
return list.reduce(function(a, b) {
return a + b;
}, 0) / list.length;
}

View File

@@ -0,0 +1,101 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
writes: [500],
cipher: [ 'AES192', 'AES256' ],
type: ['asc', 'utf', 'buf'],
len: [2, 1024, 102400, 1024 * 1024],
api: ['legacy', 'stream']
});
function main(conf) {
var api = conf.api;
if (api === 'stream' && process.version.match(/^v0\.[0-8]\./)) {
console.error('Crypto streams not available until v0.10');
// use the legacy, just so that we can compare them.
api = 'legacy';
}
var crypto = require('crypto');
var assert = require('assert');
var alice = crypto.getDiffieHellman('modp5');
var bob = crypto.getDiffieHellman('modp5');
alice.generateKeys();
bob.generateKeys();
var pubEnc = /^v0\.[0-8]/.test(process.version) ? 'binary' : null;
var alice_secret = alice.computeSecret(bob.getPublicKey(), pubEnc, 'hex');
var bob_secret = bob.computeSecret(alice.getPublicKey(), pubEnc, 'hex');
// alice_secret and bob_secret should be the same
assert(alice_secret == bob_secret);
var alice_cipher = crypto.createCipher(conf.cipher, alice_secret);
var bob_cipher = crypto.createDecipher(conf.cipher, bob_secret);
var message;
var encoding;
switch (conf.type) {
case 'asc':
message = new Array(conf.len + 1).join('a');
encoding = 'ascii';
break;
case 'utf':
message = new Array(conf.len / 2 + 1).join('ü');
encoding = 'utf8';
break;
case 'buf':
message = new Buffer(conf.len);
message.fill('b');
break;
default:
throw new Error('unknown message type: ' + conf.type);
}
var fn = api === 'stream' ? streamWrite : legacyWrite;
// write data as fast as possible to alice, and have bob decrypt.
// use old API for comparison to v0.8
bench.start();
fn(alice_cipher, bob_cipher, message, encoding, conf.writes);
}
function streamWrite(alice, bob, message, encoding, writes) {
var written = 0;
bob.on('data', function(c) {
written += c.length;
});
bob.on('end', function() {
// Gbits
var bits = written * 8;
var gbits = bits / (1024 * 1024 * 1024);
bench.end(gbits);
});
alice.pipe(bob);
while (writes-- > 0)
alice.write(message, encoding);
alice.end();
}
function legacyWrite(alice, bob, message, encoding, writes) {
var written = 0;
for (var i = 0; i < writes; i++) {
var enc = alice.update(message, encoding);
var dec = bob.update(enc);
written += dec.length;
}
var enc = alice.final();
var dec = bob.update(enc);
written += dec.length;
dec = bob.final();
written += dec.length;
var bits = written * 8;
var gbits = written / (1024 * 1024 * 1024);
bench.end(gbits);
}

View File

@@ -0,0 +1,86 @@
// throughput benchmark
// creates a single hasher, then pushes a bunch of data through it
var common = require('../common.js');
var crypto = require('crypto');
var bench = common.createBenchmark(main, {
writes: [500],
algo: [ 'sha256', 'md5' ],
type: ['asc', 'utf', 'buf'],
out: ['hex', 'binary', 'buffer'],
len: [2, 1024, 102400, 1024 * 1024],
api: ['legacy', 'stream']
});
function main(conf) {
var api = conf.api;
if (api === 'stream' && process.version.match(/^v0\.[0-8]\./)) {
console.error('Crypto streams not available until v0.10');
// use the legacy, just so that we can compare them.
api = 'legacy';
}
var crypto = require('crypto');
var assert = require('assert');
var message;
var encoding;
switch (conf.type) {
case 'asc':
message = new Array(conf.len + 1).join('a');
encoding = 'ascii';
break;
case 'utf':
message = new Array(conf.len / 2 + 1).join('ü');
encoding = 'utf8';
break;
case 'buf':
message = new Buffer(conf.len);
message.fill('b');
break;
default:
throw new Error('unknown message type: ' + conf.type);
}
var fn = api === 'stream' ? streamWrite : legacyWrite;
bench.start();
fn(conf.algo, message, encoding, conf.writes, conf.len, conf.out);
}
function legacyWrite(algo, message, encoding, writes, len, outEnc) {
var written = writes * len;
var bits = written * 8;
var gbits = bits / (1024 * 1024 * 1024);
while (writes-- > 0) {
var h = crypto.createHash(algo);
h.update(message, encoding);
var res = h.digest(outEnc);
// include buffer creation costs for older versions
if (outEnc === 'buffer' && typeof res === 'string')
res = new Buffer(res, 'binary');
}
bench.end(gbits);
}
function streamWrite(algo, message, encoding, writes, len, outEnc) {
var written = writes * len;
var bits = written * 8;
var gbits = bits / (1024 * 1024 * 1024);
while (writes-- > 0) {
var h = crypto.createHash(algo);
if (outEnc !== 'buffer')
h.setEncoding(outEnc);
h.write(message, encoding);
h.end();
h.read();
}
bench.end(gbits);
}

View File

@@ -0,0 +1,77 @@
// throughput benchmark
// creates a single hasher, then pushes a bunch of data through it
var common = require('../common.js');
var crypto = require('crypto');
var bench = common.createBenchmark(main, {
writes: [500],
algo: [ 'sha256', 'md5' ],
type: ['asc', 'utf', 'buf'],
len: [2, 1024, 102400, 1024 * 1024],
api: ['legacy', 'stream']
});
function main(conf) {
var api = conf.api;
if (api === 'stream' && process.version.match(/^v0\.[0-8]\./)) {
console.error('Crypto streams not available until v0.10');
// use the legacy, just so that we can compare them.
api = 'legacy';
}
var crypto = require('crypto');
var assert = require('assert');
var message;
var encoding;
switch (conf.type) {
case 'asc':
message = new Array(conf.len + 1).join('a');
encoding = 'ascii';
break;
case 'utf':
message = new Array(conf.len / 2 + 1).join('ü');
encoding = 'utf8';
break;
case 'buf':
message = new Buffer(conf.len);
message.fill('b');
break;
default:
throw new Error('unknown message type: ' + conf.type);
}
var fn = api === 'stream' ? streamWrite : legacyWrite;
bench.start();
fn(conf.algo, message, encoding, conf.writes, conf.len);
}
function legacyWrite(algo, message, encoding, writes, len) {
var written = writes * len;
var bits = written * 8;
var gbits = bits / (1024 * 1024 * 1024);
var h = crypto.createHash(algo);
while (writes-- > 0)
h.update(message, encoding);
h.digest();
bench.end(gbits);
}
function streamWrite(algo, message, encoding, writes, len) {
var written = writes * len;
var bits = written * 8;
var gbits = bits / (1024 * 1024 * 1024);
var h = crypto.createHash(algo);
while (writes-- > 0)
h.write(message, encoding);
h.end();
h.read();
bench.end(gbits);
}

View File

@@ -1,42 +0,0 @@
var SlowBuffer = require('buffer').SlowBuffer;
var POOLSIZE = 8*1024;
var pool;
function allocPool () {
pool = new SlowBuffer(POOLSIZE);
pool.used = 0;
}
function FastBuffer (length) {
this.length = length;
if (length > POOLSIZE) {
// Big buffer, just alloc one.
this.parent = new Buffer(length);
this.offset = 0;
} else {
// Small buffer.
if (!pool || pool.length - pool.used < length) allocPool();
this.parent = pool;
this.offset = pool.used;
pool.used += length;
}
// HERE HERE HERE
SlowBuffer.makeFastBuffer(this.parent, this, this.offset, this.length);
}
exports.FastBuffer = FastBuffer;
FastBuffer.prototype.get = function (i) {
if (i < 0 || i >= this.length) throw new Error("oob");
return this.parent[this.offset + i];
};
FastBuffer.prototype.set = function (i, v) {
if (i < 0 || i >= this.length) throw new Error("oob");
return this.parent[this.offset + i] = v;
};
// TODO define slice, toString, write, etc.
// slice should not use c++

View File

@@ -1,6 +0,0 @@
FastBuffer = require('./fast_buffer2').FastBuffer;
for (var i = 0; i < 1e6; i++) {
b = new FastBuffer(10);
b[1] = 2;
}

View File

@@ -1,4 +0,0 @@
for (var i = 0; i < 1e6; i++) {
b = new Buffer(10);
b[1] = 2;
}

View File

@@ -0,0 +1,96 @@
// If there are no args, then this is the root. Run all the benchmarks!
if (!process.argv[2])
parent();
else
runTest(+process.argv[2], +process.argv[3], process.argv[4]);
function parent() {
var types = [ 'string', 'buffer' ];
var durs = [ 1, 5 ];
var sizes = [ 1, 10, 100, 2048, 10240 ];
var queue = [];
types.forEach(function(t) {
durs.forEach(function(d) {
sizes.forEach(function(s) {
queue.push([__filename, d, s, t]);
});
});
});
var spawn = require('child_process').spawn;
var node = process.execPath;
run();
function run() {
var args = queue.shift();
if (!args)
return;
var child = spawn(node, args, { stdio: 'inherit' });
child.on('close', function(code, signal) {
if (code)
throw new Error('Benchmark failed: ' + args.slice(1));
run();
});
}
}
function runTest(dur, size, type) {
if (type !== 'string')
type = 'buffer';
switch (type) {
case 'string':
var chunk = new Array(size + 1).join('a');
break;
case 'buffer':
var chunk = new Buffer(size);
chunk.fill('a');
break;
}
var writes = 0;
var fs = require('fs');
try { fs.unlinkSync('write_stream_throughput'); } catch (e) {}
var start
var end;
function done() {
var time = end[0] + end[1]/1E9;
var written = fs.statSync('write_stream_throughput').size / 1024;
var rate = (written / time).toFixed(2);
console.log('fs_write_stream_dur_%d_size_%d_type_%s: %d',
dur, size, type, rate);
try { fs.unlinkSync('write_stream_throughput'); } catch (e) {}
}
var f = require('fs').createWriteStream('write_stream_throughput');
f.on('drain', write);
f.on('open', write);
f.on('close', done);
// streams2 fs.WriteStreams will let you send a lot of writes into the
// buffer before returning false, so capture the *actual* end time when
// all the bytes have been written to the disk, indicated by 'finish'
f.on('finish', function() {
end = process.hrtime(start);
});
var ending = false;
function write() {
// don't try to write after we end, even if a 'drain' event comes.
// v0.8 streams are so sloppy!
if (ending)
return;
start = start || process.hrtime();
while (false !== f.write(chunk));
end = process.hrtime(start);
if (end[0] >= dur) {
ending = true;
f.end();
}
}
}

View File

@@ -0,0 +1,87 @@
// test the througput of the fs.WriteStream class.
var path = require('path');
var common = require('../common.js');
var filename = path.resolve(__dirname, '.removeme-benchmark-garbage');
var fs = require('fs');
var filesize = 1000 * 1024 * 1024;
var assert = require('assert');
var type, encoding, size;
var bench = common.createBenchmark(main, {
type: ['buf', 'asc', 'utf'],
size: [1024, 4096, 65535, 1024*1024]
});
function main(conf) {
type = conf.type;
size = +conf.size;
switch (type) {
case 'buf':
encoding = null;
break;
case 'asc':
encoding = 'ascii';
break;
case 'utf':
encoding = 'utf8';
break;
default:
throw new Error('invalid type');
}
makeFile(runTest);
}
function runTest() {
assert(fs.statSync(filename).size === filesize);
var rs = fs.createReadStream(filename, {
bufferSize: size,
encoding: encoding
});
rs.on('open', function() {
bench.start();
});
var bytes = 0;
rs.on('data', function(chunk) {
bytes += chunk.length;
});
rs.on('end', function() {
try { fs.unlinkSync(filename); } catch (e) {}
// MB/sec
bench.end(bytes / (1024 * 1024));
});
}
function makeFile() {
var buf = new Buffer(filesize / 1024);
if (encoding === 'utf8') {
// ü
for (var i = 0; i < buf.length; i++) {
buf[i] = i % 2 === 0 ? 0xC3 : 0xBC;
}
} else if (encoding === 'ascii') {
buf.fill('a');
} else {
buf.fill('x');
}
try { fs.unlinkSync(filename); } catch (e) {}
var w = 1024;
var ws = fs.createWriteStream(filename);
ws.on('close', runTest);
ws.on('drain', write);
write();
function write() {
do {
w--;
} while (false !== ws.write(buf) && w > 0);
if (w === 0)
ws.end();
}
}

48
benchmark/fs/readfile.js Normal file
View File

@@ -0,0 +1,48 @@
// Call fs.readFile over and over again really fast.
// Then see how many times it got called.
// Yes, this is a silly benchmark. Most benchmarks are silly.
var path = require('path');
var common = require('../common.js');
var filename = path.resolve(__dirname, '.removeme-benchmark-garbage');
var fs = require('fs');
var bench = common.createBenchmark(main, {
dur: [5],
len: [1024, 16 * 1024 * 1024],
concurrent: [1, 10]
});
function main(conf) {
var len = +conf.len;
try { fs.unlinkSync(filename); } catch (e) {}
var data = new Buffer(len);
data.fill('x');
fs.writeFileSync(filename, data);
data = null;
var reads = 0;
bench.start();
setTimeout(function() {
bench.end(reads);
try { fs.unlinkSync(filename); } catch (e) {}
}, +conf.dur * 1000);
function read() {
fs.readFile(filename, afterRead);
}
function afterRead(er, data) {
if (er)
throw er;
if (data.length !== len)
throw new Error('wrong number of bytes returned');
reads++;
read();
}
var cur = +conf.concurrent;
while (cur--) read();
}

View File

@@ -0,0 +1,78 @@
// test the througput of the fs.WriteStream class.
var path = require('path');
var common = require('../common.js');
var filename = path.resolve(__dirname, '.removeme-benchmark-garbage');
var fs = require('fs');
var bench = common.createBenchmark(main, {
dur: [5],
type: ['buf', 'asc', 'utf'],
size: [2, 1024, 65535, 1024 * 1024]
});
function main(conf) {
var dur = +conf.dur;
var type = conf.type;
var size = +conf.size;
var encoding;
var chunk;
switch (type) {
case 'buf':
chunk = new Buffer(size);
chunk.fill('b');
break;
case 'asc':
chunk = new Array(size + 1).join('a');
encoding = 'ascii';
break;
case 'utf':
chunk = new Array(Math.ceil(size/2) + 1).join('ü');
encoding = 'utf8';
break;
default:
throw new Error('invalid type');
}
try { fs.unlinkSync(filename); } catch (e) {}
var started = false;
var ending = false;
var ended = false;
setTimeout(function() {
ending = true;
f.end();
}, dur * 1000);
var f = fs.createWriteStream(filename);
f.on('drain', write);
f.on('open', write);
f.on('close', done);
f.on('finish', function() {
ended = true;
var written = fs.statSync(filename).size / 1024;
try { fs.unlinkSync(filename); } catch (e) {}
bench.end(written / 1024);
});
function write() {
// don't try to write after we end, even if a 'drain' event comes.
// v0.8 streams are so sloppy!
if (ending)
return;
if (!started) {
started = true;
bench.start();
}
while (false !== f.write(chunk, encoding));
}
function done() {
if (!ended)
f.emit('finish');
}
}

View File

@@ -1,43 +0,0 @@
var binding = require('./build/default/binding');
c = 0
function js() {
return c++; //(new Date()).getTime();
}
var cxx = binding.hello;
var i, N = 100000000;
console.log(js());
console.log(cxx());
var start = new Date();
for (i = 0; i < N; i++) {
js();
}
var jsDiff = new Date() - start;
console.log(N +" JS function calls: " + jsDiff);
var start = new Date();
for (i = 0; i < N; i++) {
cxx();
}
var cxxDiff = new Date() - start;
console.log(N +" C++ function calls: " + cxxDiff);
function toMicro (diff) {
return (diff / N) * 1000000;
}
console.log("\nJS function call speed: %d microseconds", toMicro(jsDiff));
console.log("C++ function call speed: %d microseconds", toMicro(cxxDiff));
console.log("\nJS speedup " + (cxxDiff / jsDiff));

View File

@@ -1,19 +0,0 @@
#include <v8.h>
#include <node.h>
#include <time.h>
using namespace v8;
static int c = 0;
static Handle<Value> Hello(const Arguments& args) {
HandleScope scope;
//time_t tv = time(NULL);
return scope.Close(Integer::New(c++));
}
extern "C" void init (Handle<Object> target) {
HandleScope scope;
//target->Set(String::New("hello"), String::New("World"));
NODE_SET_METHOD(target, "hello", Hello);
}

View File

@@ -1,15 +0,0 @@
srcdir = '.'
blddir = 'build'
VERSION = '0.0.1'
def set_options(opt):
opt.tool_options('compiler_cxx')
def configure(conf):
conf.check_tool('compiler_cxx')
conf.check_tool('node_addon')
def build(bld):
obj = bld.new_task_gen('cxx', 'shlib', 'node_addon')
obj.target = 'binding'
obj.source = 'binding.cc'

View File

@@ -0,0 +1,116 @@
#!/bin/bash
cd "$(dirname "$(dirname $0)")"
node=${NODE:-./node}
name=${NAME:-stacks}
if type sysctl &>/dev/null; then
# darwin and linux
sudo sysctl -w net.inet.ip.portrange.first=12000
sudo sysctl -w net.inet.tcp.msl=1000
sudo sysctl -w kern.maxfiles=1000000 kern.maxfilesperproc=1000000
elif type /usr/sbin/ndd &>/dev/null; then
# sunos
/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 12000
/usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65535
/usr/sbin/ndd -set /dev/tcp tcp_max_buf 2097152
/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 1048576
/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 1048576
fi
ulimit -n 100000
$node benchmark/http_simple.js &
nodepid=$!
echo "node pid = $nodepid"
sleep 1
# has to stay alive until dtrace exits
dtrace -n 'profile-97/pid == '$nodepid' && arg1/{ @[jstack(150, 8000)] = count(); } tick-60s { exit(0); }' \
| grep -v _ZN2v88internalL21Builtin_HandleApiCallENS0_12_GLOBAL__N_116BuiltinA \
> "$name".src &
dtracepid=$!
echo "dtrace pid = $dtracepid"
sleep 1
test () {
c=$1
t=$2
l=$3
k=$4
ab $k -t 10 -c $c http://127.0.0.1:8000/$t/$l \
2>&1 | grep Req
}
#test 100 bytes 1024
#test 10 bytes 100 -k
#test 100 bytes 1024 -k
#test 100 bytes 1024 -k
#test 100 bytes 1024 -k
echo 'Keep going until dtrace stops listening...'
while pargs $dtracepid &>/dev/null; do
test 100 bytes ${LENGTH:-1} -k
done
kill $nodepid
echo 'Turn the stacks into a svg'
stackvis dtrace flamegraph-svg < "$name".src > "$name".raw.svg
echo 'Prune tiny stacks out of the graph'
node -e '
var infile = process.argv[1];
var outfile = process.argv[2];
var output = "";
var fs = require("fs");
var input = fs.readFileSync(infile, "utf8");
input = input.split("id=\"details\" > </text>");
var head = input.shift() + "id=\"details\" > </text>";
input = input.join("id=\"details\" > </text>");
var tail = "</svg>";
input = input.split("</svg>")[0];
var minyKept = Infinity;
var minyOverall = Infinity;
var rects = input.trim().split(/\n/).filter(function(rect) {
var my = rect.match(/y="([0-9\.]+)"/);
if (!my)
return false;
var y = +my[1];
if (!y)
return false;
minyOverall = Math.min(minyOverall, y);
// pluck off everything that will be less than one pixel.
var mw = rect.match(/width="([0-9\.]+)"/)
if (mw) {
var width = +mw[1];
if (!(width >= 1))
return false;
}
minyKept = Math.min(minyKept, y);
return true;
});
// move everything up to the top of the page.
var ydiff = minyKept - minyOverall;
rects = rects.map(function(rect) {
var my = rect.match(/y="([0-9\.]+)"/);
var y = +my[1];
var newy = y - ydiff;
rect = rect.replace(/y="([0-9\.]+)"/, "y=\"" + newy + "\"");
return rect;
});
fs.writeFileSync(outfile, head + "\n" + rects.join("\n") + "\n" + tail);
' "$name".raw.svg "$name".svg
echo ''
echo 'done. Results in '"$name"'.svg'

43
benchmark/http.sh Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
cd "$(dirname "$(dirname $0)")"
if type sysctl &>/dev/null; then
# darwin and linux
sudo sysctl -w net.ipv4.ip_local_port_range="12000 65535"
sudo sysctl -w net.inet.ip.portrange.first=12000
sudo sysctl -w net.inet.tcp.msl=1000
sudo sysctl -w kern.maxfiles=1000000 kern.maxfilesperproc=1000000
elif type /usr/sbin/ndd &>/dev/null; then
# sunos
/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 12000
/usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65535
/usr/sbin/ndd -set /dev/tcp tcp_max_buf 2097152
/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 1048576
/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 1048576
fi
ulimit -n 100000
k=${KEEPALIVE}
if [ "$k" = "no" ]; then
k=""
else
k="-k"
fi
node=${NODE:-./node}
$node benchmark/http_simple.js &
npid=$!
sleep 1
if [ "$k" = "-k" ]; then
echo "using keepalive"
fi
for i in a a a a a a a a a a a a a a a a a a a a; do
ab $k -t 10 -c 100 http://127.0.0.1:8000/${TYPE:-bytes}/${LENGTH:-1024} \
2>&1 | grep Req | egrep -o '[0-9\.]+'
done
kill $npid

View File

@@ -0,0 +1,69 @@
// Measure the time it takes for the HTTP client to send a request body.
var common = require('../common.js');
var http = require('http');
var bench = common.createBenchmark(main, {
dur: [5],
type: ['asc', 'utf', 'buf'],
bytes: [32, 256, 1024],
method: ['write', 'end '] // two spaces added to line up each row
});
function main(conf) {
var dur = +conf.dur;
var len = +conf.bytes;
var encoding;
var chunk;
switch (conf.type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
chunk = new Array(len + 1).join('a');
break;
}
var nreqs = 0;
var options = {
headers: { 'Connection': 'keep-alive', 'Transfer-Encoding': 'chunked' },
agent: new http.Agent({ maxSockets: 1 }),
host: '127.0.0.1',
port: common.PORT,
path: '/',
method: 'POST'
};
var server = http.createServer(function(req, res) {
res.end();
});
server.listen(options.port, options.host, function() {
setTimeout(done, dur * 1000);
bench.start();
pummel();
});
function pummel() {
var req = http.request(options, function(res) {
nreqs++;
pummel(); // Line up next request.
res.resume();
});
if (conf.method === 'write') {
req.write(chunk, encoding);
req.end();
} else {
req.end(chunk, encoding);
}
}
function done() {
bench.end(nreqs);
}
}

38
benchmark/http/cluster.js Normal file
View File

@@ -0,0 +1,38 @@
var common = require('../common.js');
var PORT = common.PORT;
var cluster = require('cluster');
if (cluster.isMaster) {
var bench = common.createBenchmark(main, {
// unicode confuses ab on os x.
type: ['bytes', 'buffer'],
length: [4, 1024, 102400],
c: [50, 500]
});
} else {
require('../http_simple.js');
}
function main(conf) {
process.env.PORT = PORT;
var workers = 0;
var w1 = cluster.fork();
var w2 = cluster.fork();
cluster.on('listening', function() {
workers++;
if (workers < 2)
return;
setTimeout(function() {
var path = '/' + conf.type + '/' + conf.length;
var args = ['-r', '-t', 5, '-c', conf.c, '-k'];
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
bench.http(path, args, function() {
w1.destroy();
w2.destroy();
});
}, 100);
});
}

View File

@@ -0,0 +1,59 @@
// When calling .end(buffer) right away, this triggers a "hot path"
// optimization in http.js, to avoid an extra write call.
//
// However, the overhead of copying a large buffer is higher than
// the overhead of an extra write() call, so the hot path was not
// always as hot as it could be.
//
// Verify that our assumptions are valid.
var common = require('../common.js');
var PORT = common.PORT;
var bench = common.createBenchmark(main, {
type: ['asc', 'utf', 'buf'],
kb: [64, 128, 256, 1024],
c: [100],
method: ['write', 'end '] // two spaces added to line up each row
});
function main(conf) {
http = require('http');
var chunk;
var len = conf.kb * 1024;
switch (conf.type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
chunk = new Array(len + 1).join('a');
break;
}
function write(res) {
res.write(chunk);
res.end();
}
function end(res) {
res.end(chunk);
}
var method = conf.method === 'write' ? write : end;
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
var server = http.createServer(function(req, res) {
method(res);
});
server.listen(common.PORT, function() {
bench.http('/', args, function() {
server.close();
});
});
}

23
benchmark/http/simple.js Normal file
View File

@@ -0,0 +1,23 @@
var common = require('../common.js');
var PORT = common.PORT;
var bench = common.createBenchmark(main, {
// unicode confuses ab on os x.
type: ['bytes', 'buffer'],
length: [4, 1024, 102400],
c: [50, 500]
});
function main(conf) {
process.env.PORT = PORT;
var spawn = require('child_process').spawn;
var server = require('../http_simple.js');
setTimeout(function() {
var path = '/' + conf.type + '/' + conf.length; //+ '/' + conf.chunks;
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
bench.http(path, args, function() {
server.close();
});
}, 2000);
}

127
benchmark/http_bench.js Normal file
View File

@@ -0,0 +1,127 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var spawn = require('child_process').spawn;
var cluster = require('cluster');
var http = require('http');
var options = {
mode: 'master',
host: '127.0.0.1',
port: 22344,
path: '/',
servers: 1,
clients: 1
};
for (var i = 2; i < process.argv.length; ++i) {
var args = process.argv[i].split('=', 2);
var key = args[0];
var val = args[1];
options[key] = val;
}
switch (options.mode) {
case 'master': startMaster(); break;
case 'server': startServer(); break;
case 'client': startClient(); break;
default: throw new Error('Bad mode: ' + options.mode);
}
process.title = 'http_bench[' + options.mode + ']';
// monkey-patch the log functions so they include name + pid
console.log = patch(console.log);
console.trace = patch(console.trace);
console.error = patch(console.error);
function patch(fun) {
var prefix = process.title + '[' + process.pid + '] ';
return function() {
var args = Array.prototype.slice.call(arguments);
args[0] = prefix + args[0];
return fun.apply(console, args);
};
}
function startMaster() {
if (!cluster.isMaster) return startServer();
for (var i = ~~options.servers; i > 0; --i) cluster.fork();
for (var i = ~~options.clients; i > 0; --i) {
var cp = spawn(process.execPath, [__filename, 'mode=client']);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
}
}
function startServer() {
http.createServer(onRequest).listen(options.port, options.host);
var body = Array(1024).join('x');
var headers = {'Content-Length': '' + body.length};
function onRequest(req, res) {
req.on('error', onError);
res.on('error', onError);
res.writeHead(200, headers);
res.end(body);
}
function onError(err) {
console.error(err.stack);
}
}
function startClient() {
// send off a bunch of concurrent requests
// TODO make configurable
sendRequest();
sendRequest();
function sendRequest() {
var req = http.request(options, onConnection);
req.on('error', onError);
req.end();
}
// add a little back-off to prevent EADDRNOTAVAIL errors, it's pretty easy
// to exhaust the available port range
function relaxedSendRequest() {
setTimeout(sendRequest, 1);
}
function onConnection(res) {
res.on('error', onError);
res.on('data', onData);
res.on('end', relaxedSendRequest);
}
function onError(err) {
console.error(err.stack);
relaxedSendRequest();
}
function onData(data) {
// this space intentionally left blank
}
}

View File

@@ -0,0 +1,13 @@
var http = require('http');
var port = parseInt(process.env.PORT, 10) || 8000;
var defaultLag = parseInt(process.argv[2], 10) || 100;
http.createServer(function(req, res) {
res.writeHead(200, { 'content-type': 'text/plain',
'content-length': '2' });
var lag = parseInt(req.url.split("/").pop(), 10) || defaultLag;
setTimeout(function() {
res.end('ok');
}, lag);
}).listen(port, 'localhost');

View File

@@ -1,98 +1,120 @@
path = require("path");
exec = require("child_process").exec;
http = require("http");
var path = require('path'),
exec = require('child_process').exec,
http = require('http');
port = parseInt(process.env.PORT || 8000);
var port = parseInt(process.env.PORT || 8000);
console.log('pid ' + process.pid);
var fixed = makeString(20 * 1024, 'C'),
storedBytes = {},
storedBuffer = {},
storedUnicode = {};
fixed = ""
for (var i = 0; i < 20*1024; i++) {
fixed += "C";
var useDomains = process.env.NODE_USE_DOMAINS;
// set up one global domain.
if (useDomains) {
var domain = require('domain');
var gdom = domain.create();
gdom.on('error', function(er) {
console.error('Error on global domain', er);
throw er;
});
gdom.enter();
}
stored = {};
storedBuffer = {};
var server = module.exports = http.createServer(function (req, res) {
if (useDomains) {
var dom = domain.create();
dom.add(req);
dom.add(res);
}
var server = http.createServer(function (req, res) {
var commands = req.url.split("/");
var commands = req.url.split('/');
var command = commands[1];
var body = "";
var body = '';
var arg = commands[2];
var n_chunks = parseInt(commands[3], 10);
var status = 200;
if (command == "bytes") {
var n = parseInt(arg, 10)
if (command == 'bytes') {
var n = ~~arg;
if (n <= 0)
throw "bytes called with n <= 0"
if (stored[n] === undefined) {
console.log("create stored[n]");
stored[n] = "";
for (var i = 0; i < n; i++) {
stored[n] += "C"
}
throw new Error('bytes called with n <= 0')
if (storedBytes[n] === undefined) {
storedBytes[n] = makeString(n, 'C');
}
body = stored[n];
body = storedBytes[n];
} else if (command == "buffer") {
var n = parseInt(arg, 10)
if (n <= 0) throw new Error("bytes called with n <= 0");
} else if (command == 'buffer') {
var n = ~~arg;
if (n <= 0)
throw new Error('buffer called with n <= 0');
if (storedBuffer[n] === undefined) {
console.log("create storedBuffer[n]");
storedBuffer[n] = new Buffer(n);
for (var i = 0; i < n; i++) {
storedBuffer[n][i] = "C".charCodeAt(0);
storedBuffer[n][i] = 'C'.charCodeAt(0);
}
}
body = storedBuffer[n];
} else if (command == "quit") {
res.connection.server.close();
body = "quitting";
} else if (command == 'unicode') {
var n = ~~arg;
if (n <= 0)
throw new Error('unicode called with n <= 0');
if (storedUnicode[n] === undefined) {
storedUnicode[n] = makeString(n, '\u263A');
}
body = storedUnicode[n];
} else if (command == "fixed") {
} else if (command == 'quit') {
res.connection.server.close();
body = 'quitting';
} else if (command == 'fixed') {
body = fixed;
} else if (command == "echo") {
res.writeHead(200, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
} else if (command == 'echo') {
res.writeHead(200, { 'Content-Type': 'text/plain',
'Transfer-Encoding': 'chunked' });
req.pipe(res);
return;
} else {
status = 404;
body = "not found\n";
body = 'not found\n';
}
// example: http://localhost:port/bytes/512/4
// sends a 512 byte body in 4 chunks of 128 bytes
if (n_chunks > 0) {
res.writeHead(status, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
res.writeHead(status, { 'Content-Type': 'text/plain',
'Transfer-Encoding': 'chunked' });
// send body in chunks
var len = body.length;
var step = ~~(len / n_chunks) || len;
var step = Math.floor(len / n_chunks) || 1;
for (var i = 0; i < len; i += step) {
res.write(body.slice(i, i + step));
for (var i = 0, n = (n_chunks - 1); i < n; ++i) {
res.write(body.slice(i * step, i * step + step));
}
res.end();
res.end(body.slice((n_chunks - 1) * step));
} else {
var content_length = body.length.toString();
res.writeHead(status, { "Content-Type": "text/plain",
"Content-Length": content_length });
res.writeHead(status, { 'Content-Type': 'text/plain',
'Content-Length': content_length });
res.end(body);
}
});
function makeString(size, c) {
var s = '';
while (s.length < size) {
s += c;
}
return s;
}
server.listen(port, function () {
console.log('Listening at http://127.0.0.1:'+port+'/');
});
process.on('exit', function() {
console.error('libuv counters', process.uvCounters());
if (module === require.main)
console.error('Listening at http://127.0.0.1:'+port+'/');
});

View File

@@ -0,0 +1,127 @@
//
// Usage:
// node benchmark/http_simple_auto.js <args> <target>
//
// Where:
// <args> Arguments to pass to `ab`.
// <target> Target to benchmark, e.g. `bytes/1024` or `buffer/8192`.
//
var path = require("path");
var http = require("http");
var spawn = require("child_process").spawn;
var port = parseInt(process.env.PORT || 8000);
var fixed = ""
for (var i = 0; i < 20*1024; i++) {
fixed += "C";
}
var stored = {};
var storedBuffer = {};
var server = http.createServer(function (req, res) {
var commands = req.url.split("/");
var command = commands[1];
var body = "";
var arg = commands[2];
var n_chunks = parseInt(commands[3], 10);
var status = 200;
if (command == "bytes") {
var n = parseInt(arg, 10)
if (n <= 0)
throw "bytes called with n <= 0"
if (stored[n] === undefined) {
stored[n] = "";
for (var i = 0; i < n; i++) {
stored[n] += "C"
}
}
body = stored[n];
} else if (command == "buffer") {
var n = parseInt(arg, 10)
if (n <= 0) throw new Error("bytes called with n <= 0");
if (storedBuffer[n] === undefined) {
storedBuffer[n] = new Buffer(n);
for (var i = 0; i < n; i++) {
storedBuffer[n][i] = "C".charCodeAt(0);
}
}
body = storedBuffer[n];
} else if (command == "quit") {
res.connection.server.close();
body = "quitting";
} else if (command == "fixed") {
body = fixed;
} else if (command == "echo") {
res.writeHead(200, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
req.pipe(res);
return;
} else {
status = 404;
body = "not found\n";
}
// example: http://localhost:port/bytes/512/4
// sends a 512 byte body in 4 chunks of 128 bytes
if (n_chunks > 0) {
res.writeHead(status, { "Content-Type": "text/plain",
"Transfer-Encoding": "chunked" });
// send body in chunks
var len = body.length;
var step = Math.floor(len / n_chunks) || 1;
for (var i = 0, n = (n_chunks - 1); i < n; ++i) {
res.write(body.slice(i * step, i * step + step));
}
res.end(body.slice((n_chunks - 1) * step));
} else {
var content_length = body.length.toString();
res.writeHead(status, { "Content-Type": "text/plain",
"Content-Length": content_length });
res.end(body);
}
});
server.listen(port, function () {
var url = 'http://127.0.0.1:' + port + '/';
var n = process.argv.length - 1;
process.argv[n] = url + process.argv[n];
var cp = spawn('ab', process.argv.slice(2));
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
cp.on('exit', function() {
server.close();
process.nextTick(dump_mm_stats);
});
});
function dump_mm_stats() {
if (typeof gc != 'function') return;
var before = process.memoryUsage();
for (var i = 0; i < 10; ++i) gc();
var after = process.memoryUsage();
setTimeout(print_stats, 250); // give GC time to settle
function print_stats() {
console.log('\nBEFORE / AFTER GC');
['rss', 'heapTotal', 'heapUsed'].forEach(function(key) {
var a = before[key] / (1024 * 1024);
var b = after[key] / (1024 * 1024);
console.log('%sM / %sM %s', a.toFixed(2), b.toFixed(2), key);
});
}
}

View File

@@ -1,7 +1,7 @@
#!/bin/bash
SERVER=127.0.0.1
PORT=8000
PORT=${PORT:=8000}
# You may want to configure your TCP settings to make many ports available
# to node and ab. On macintosh use:
@@ -19,9 +19,6 @@ if [ $SERVER == "127.0.0.1" ]; then
sleep 1
fi
info=`curl -s http://$SERVER:$PORT/info`
eval $info
date=`date "+%Y%m%d%H%M%S"`
ab_hello_world() {

View File

@@ -3,7 +3,7 @@ var os = require('os');
if (cluster.isMaster) {
console.log('master running on pid %d', process.pid);
for (var i = 1, n = os.cpus().length; i < n; ++i) cluster.fork();
for (var i = 0, n = os.cpus().length; i < n; ++i) cluster.fork();
} else {
require(__dirname + '/http_simple.js');
}

View File

@@ -14,7 +14,7 @@
static int c = 0;
static int tsize = 1000 * 1048576;
static const char path[] = "/tmp/wt.dat";
static const char* path = "/tmp/wt.dat";
static char buf[65536];
static uint64_t now(void) {
@@ -45,7 +45,6 @@ static void writetest(int size, size_t bsize)
for (i = 0; i < size; i += bsize) {
int rv = write(fd, buf, bsize);
if (c++ % 2000 == 0) fprintf(stderr, ".");
if (rv < 0) {
perror("write failed");
exit(254);
@@ -66,7 +65,7 @@ static void writetest(int size, size_t bsize)
elapsed = (end - start) / 1e6;
mbps = ((tsize/elapsed)) / 1048576;
fprintf(stderr, "\nWrote %d bytes in %03fs using %ld byte buffers: %03fmB/s\n", size, elapsed, bsize, mbps);
fprintf(stderr, "Wrote %d bytes in %03fs using %ld byte buffers: %03f\n", size, elapsed, bsize, mbps);
}
void readtest(int size, size_t bsize)
@@ -106,11 +105,13 @@ void cleanup() {
unlink(path);
}
int main()
int main(int argc, char** argv)
{
int i;
int bsizes[] = {1024, 4096, 8192, 16384, 32768, 65536, 0};
if (argc > 1) path = argv[1];
for (i = 0; bsizes[i] != 0; i++) {
writetest(tsize, bsizes[i]);
}

View File

@@ -1,109 +0,0 @@
var fs = require('fs');
var util = require('util');
var Buffer = require('buffer').Buffer;
var path = "/tmp/wt.dat";
var tsize = 1000 * 1048576;
var bsizes = [1024, 4096, 8192, 16384, 32768, 65536];
function bufit(size) {
var buf = new Buffer(size);
for (var i = 0; i <buf.length ; i += 1) {
buf[i] = 33;
}
return buf;
}
function once(emitter, name, cb) {
function incb() {
cb.apply(undefined, arguments);
emitter.removeListener(name, incb);
}
emitter.addListener(name, incb);
}
c = 0
function writetest(size, bsize) {
var s = fs.createWriteStream(path, {'flags': 'w', 'mode': 0644});
var remaining = size;
var buf = bufit(bsize);
function dowrite() {
var rv = s.write(buf);
remaining -= buf.length;
if (remaining > 0) {
//if (remaining % 90000 == 0) console.error("remaining: %d", remaining);
//process.nextTick(dowrite);
} else {
s.emit('done')
s.end();
}
}
s.on('drain', function () {
dowrite();
if (c++ % 2000 == 0) util.print(".");
});
dowrite();
return s;
}
function readtest(size, bsize) {
var s = fs.createReadStream(path, {'flags': 'r', 'encoding': 'binary', 'mode': 0644, 'bufferSize': bsize});
s.addListener("data", function (chunk) {
// got a chunk...
});
return s;
}
function wt(tsize, bsize, done) {
var start = Date.now();
s = writetest(tsize, bsizes[0]);
s.addListener('close', function() {
var end = Date.now();
var diff = end - start;
console.log('Wrote '+ tsize +' bytes in '+ diff/1000 +'s using '+ bsize +' byte buffers: '+ ((tsize/(diff/1000)) / 1048576) +' mB/s');
done();
});
}
function rt(tsize, bsize, done) {
var start = Date.now();
s = readtest(tsize, bsizes[0]);
s.addListener('close', function() {
var end = Date.now();
var diff = end - start;
console.log('Read '+ tsize +' bytes in '+ diff/1000 +'s using '+ bsize +' byte buffers: '+ ((tsize/(diff/1000)) / 1048576) +' mB/s');
done();
});
}
var bs= 0;
function nextwt() {
if (bsizes.length <= bs) {
bs = 0;
nextrt();
return;
}
wt(tsize, bsizes[bs], nextwt);
bs += 1;
}
function nextrt() {
if (bsizes.length <= bs) {
fs.unlink(path, function (err) {
if (err) throw err;
console.log('All done!');
});
return;
}
rt(tsize, bsizes[bs], nextrt);
bs += 1;
}
nextwt();

View File

@@ -0,0 +1,28 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
len: [64, 256, 1024, 4096, 32768],
dur: [5]
});
var spawn = require('child_process').spawn;
function main(conf) {
bench.start();
var dur = +conf.dur;
var len = +conf.len;
var msg = '"' + Array(len).join('.') + '"';
var options = { 'stdio': ['ignore', 'ipc', 'ignore'] };
var child = spawn('yes', [msg], options);
var bytes = 0;
child.on('message', function(msg) {
bytes += msg.length;
});
setTimeout(function() {
child.kill();
var gbits = (bytes * 8) / (1024 * 1024 * 1024);
bench.end(gbits);
}, dur * 1000);
}

View File

@@ -0,0 +1 @@
build/

View File

@@ -0,0 +1,2 @@
binding:
node-gyp rebuild --nodedir=../../..

View File

@@ -0,0 +1,18 @@
#include <v8.h>
#include <node.h>
using namespace v8;
static int c = 0;
static Handle<Value> Hello(const Arguments& args) {
HandleScope scope;
return scope.Close(Integer::New(c++));
}
extern "C" void init (Handle<Object> target) {
HandleScope scope;
NODE_SET_METHOD(target, "hello", Hello);
}
NODE_MODULE(binding, init);

View File

@@ -0,0 +1,8 @@
{
'targets': [
{
'target_name': 'binding',
'sources': [ 'binding.cc' ]
}
]
}

View File

@@ -0,0 +1,42 @@
// show the difference between calling a short js function
// relative to a comparable C++ function.
// Reports millions of calls per second.
// Note that JS speed goes up, while cxx speed stays about the same.
var assert = require('assert');
var common = require('../../common.js');
// this fails when we try to open with a different version of node,
// which is quite common for benchmarks. so in that case, just
// abort quietly.
try {
var binding = require('./build/Release/binding');
} catch (er) {
console.error('misc/function_call.js Binding failed to load');
process.exit(0);
}
var cxx = binding.hello;
var c = 0;
function js() {
return c++;
}
assert(js() === cxx());
var bench = common.createBenchmark(main, {
type: ['js', 'cxx'],
millions: [1,10,50]
});
function main(conf) {
var n = +conf.millions * 1e6;
var fn = conf.type === 'cxx' ? cxx : js;
bench.start();
for (var i = 0; i < n; i++) {
fn();
}
bench.end(+conf.millions);
}

View File

@@ -0,0 +1,21 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
millions: [2]
});
function main(conf) {
var N = +conf.millions * 1e6;
var n = 0;
function cb() {
n++;
if (n === N)
bench.end(n / 1e6);
}
bench.start();
for (var i = 0; i < N; i++) {
process.nextTick(cb);
}
}

View File

@@ -0,0 +1,40 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var common = require('../common.js');
var bench = common.createBenchmark(main, {
millions: [2]
});
process.maxTickDepth = Infinity;
function main(conf) {
var n = +conf.millions * 1e6;
bench.start();
process.nextTick(onNextTick);
function onNextTick() {
if (--n)
process.nextTick(onNextTick);
else
bench.end(+conf.millions);
}
}

View File

@@ -0,0 +1,25 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
thousands: [1]
});
var spawn = require('child_process').spawn;
function main(conf) {
var len = +conf.thousands * 1000;
bench.start();
go(len, len);
}
function go(n, left) {
if (--left === 0)
return bench.end(n);
var child = spawn('echo', ['hello']);
child.on('exit', function(code) {
if (code)
process.exit(code);
else
go(n, left);
});
}

40
benchmark/misc/startup.js Normal file
View File

@@ -0,0 +1,40 @@
var common = require('../common.js');
var spawn = require('child_process').spawn;
var path = require('path');
var emptyJsFile = path.resolve(__dirname, '../../test/fixtures/semicolon.js');
var starts = 100;
var i = 0;
var start;
var bench = common.createBenchmark(startNode, {
dur: [1]
});
function startNode(conf) {
var dur = +conf.dur;
var go = true;
var starts = 0;
var open = 0;
setTimeout(function() {
go = false;
}, dur * 1000);
bench.start();
start();
function start() {
var node = spawn(process.execPath || process.argv[0], [emptyJsFile]);
node.on('exit', function(exitCode) {
if (exitCode !== 0) {
throw new Error('Error during node startup');
}
starts++;
if (go)
start();
else
bench.end(starts);
});
}
}

View File

@@ -0,0 +1,16 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
millions: [100]
})
function main(conf) {
var n = +conf.millions * 1e6;
bench.start();
var s;
for (var i = 0; i < n; i++) {
s = '01234567890';
s[1] = "a";
}
bench.end(n / 1e6);
}

40
benchmark/misc/timers.js Normal file
View File

@@ -0,0 +1,40 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
thousands: [500],
type: ['depth', 'breadth']
});
function main(conf) {
var n = +conf.thousands * 1e3;
if (conf.type === 'breadth')
breadth(n);
else
depth(n);
}
function depth(N) {
var n = 0;
bench.start();
setTimeout(cb);
function cb() {
n++;
if (n === N)
bench.end(N / 1e3);
else
setTimeout(cb);
}
}
function breadth(N) {
var n = 0;
bench.start();
function cb() {
n++;
if (n === N)
bench.end(N / 1e3);
}
for (var i = 0; i < N; i++) {
setTimeout(cb);
}
}

40
benchmark/misc/url.js Normal file
View File

@@ -0,0 +1,40 @@
var url = require('url')
var n = 25 * 100;
var urls = [
'http://nodejs.org/docs/latest/api/url.html#url_url_format_urlobj',
'http://blog.nodejs.org/',
'https://encrypted.google.com/search?q=url&q=site:npmjs.org&hl=en',
'javascript:alert("node is awesome");',
'some.ran/dom/url.thing?oh=yes#whoo'
];
var paths = [
'../foo/bar?baz=boom',
'foo/bar',
'http://nodejs.org',
'./foo/bar?baz'
];
benchmark('parse()', url.parse);
benchmark('format()', url.format);
paths.forEach(function(p) {
benchmark('resolve("' + p + '")', function(u) {
url.resolve(u, p)
});
});
function benchmark(name, fun) {
var timestamp = process.hrtime();
for (var i = 0; i < n; ++i) {
for (var j = 0, k = urls.length; j < k; ++j) fun(urls[j]);
}
timestamp = process.hrtime(timestamp);
var seconds = timestamp[0];
var nanos = timestamp[1];
var time = seconds + nanos / 1e9;
var rate = n / time;
console.log('misc/url.js %s: %s', name, rate.toPrecision(5));
}

View File

@@ -0,0 +1,18 @@
// compare with "google-chrome deps/v8/benchmarks/run.html"
var fs = require('fs');
var path = require('path');
var vm = require('vm');
var dir = path.join(__dirname, '..', '..', 'deps', 'v8', 'benchmarks');
global.print = function(s) {
if (s === '----') return;
console.log('misc/v8_bench.js %s', s);
};
global.load = function (x) {
var source = fs.readFileSync(path.join(dir, x), 'utf8');
vm.runInThisContext(source, x);
}
load('run.js');

61
benchmark/net/dgram.js Normal file
View File

@@ -0,0 +1,61 @@
// test UDP send/recv throughput
var common = require('../common.js');
var PORT = common.PORT;
// `num` is the number of send requests to queue up each time.
// Keep it reasonably high (>10) otherwise you're benchmarking the speed of
// event loop cycles more than anything else.
var bench = common.createBenchmark(main, {
len: [1, 64, 256, 1024],
num: [100],
type: ['send', 'recv'],
dur: [5]
});
var dur;
var len;
var num;
var type;
var chunk;
var encoding;
function main(conf) {
dur = +conf.dur;
len = +conf.len;
num = +conf.num;
type = conf.type;
chunk = new Buffer(len);
server();
}
var dgram = require('dgram');
function server() {
var sent = 0;
var received = 0;
var socket = dgram.createSocket('udp4');
function onsend() {
if (sent++ % num == 0)
for (var i = 0; i < num; i++)
socket.send(chunk, 0, chunk.length, PORT, '127.0.0.1', onsend);
}
socket.on('listening', function() {
bench.start();
onsend();
setTimeout(function() {
var bytes = (type === 'send' ? sent : received) * chunk.length;
var gbits = (bytes * 8) / (1024 * 1024 * 1024);
bench.end(gbits);
}, dur * 1000);
});
socket.on('message', function(buf, rinfo) {
received++;
});
socket.bind(PORT);
}

112
benchmark/net/net-c2s.js Normal file
View File

@@ -0,0 +1,112 @@
// test the speed of .pipe() with sockets
var common = require('../common.js');
var PORT = common.PORT;
var bench = common.createBenchmark(main, {
len: [102400, 1024 * 1024 * 16],
type: ['utf', 'asc', 'buf'],
dur: [5],
});
var dur;
var len;
var type;
var chunk;
var encoding;
function main(conf) {
dur = +conf.dur;
len = +conf.len;
type = conf.type;
switch (type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
encoding = 'ascii';
chunk = new Array(len + 1).join('x');
break;
default:
throw new Error('invalid type: ' + type);
break;
}
server();
}
var net = require('net');
function Writer() {
this.received = 0;
this.writable = true;
}
Writer.prototype.write = function(chunk, encoding, cb) {
this.received += chunk.length;
if (typeof encoding === 'function')
encoding();
else if (typeof cb === 'function')
cb();
return true;
};
// doesn't matter, never emits anything.
Writer.prototype.on = function() {};
Writer.prototype.once = function() {};
Writer.prototype.emit = function() {};
function Reader() {
this.flow = this.flow.bind(this);
this.readable = true;
}
Reader.prototype.pipe = function(dest) {
this.dest = dest;
this.flow();
return dest;
};
Reader.prototype.flow = function() {
var dest = this.dest;
var res = dest.write(chunk, encoding);
if (!res)
dest.once('drain', this.flow);
else
process.nextTick(this.flow);
};
function server() {
var reader = new Reader();
var writer = new Writer();
// the actual benchmark.
var server = net.createServer(function(socket) {
socket.pipe(writer);
});
server.listen(PORT, function() {
var socket = net.connect(PORT);
socket.on('connect', function() {
bench.start();
reader.pipe(socket);
setTimeout(function() {
var bytes = writer.received;
var gbits = (bytes * 8) / (1024 * 1024 * 1024);
bench.end(gbits);
}, dur * 1000);
});
});
}

115
benchmark/net/net-pipe.js Normal file
View File

@@ -0,0 +1,115 @@
// test the speed of .pipe() with sockets
var common = require('../common.js');
var PORT = common.PORT;
var bench = common.createBenchmark(main, {
len: [102400, 1024 * 1024 * 16],
type: ['utf', 'asc', 'buf'],
dur: [5],
});
var dur;
var len;
var type;
var chunk;
var encoding;
function main(conf) {
dur = +conf.dur;
len = +conf.len;
type = conf.type;
switch (type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
encoding = 'ascii';
chunk = new Array(len + 1).join('x');
break;
default:
throw new Error('invalid type: ' + type);
break;
}
server();
}
var net = require('net');
function Writer() {
this.received = 0;
this.writable = true;
}
Writer.prototype.write = function(chunk, encoding, cb) {
this.received += chunk.length;
if (typeof encoding === 'function')
encoding();
else if (typeof cb === 'function')
cb();
return true;
};
// doesn't matter, never emits anything.
Writer.prototype.on = function() {};
Writer.prototype.once = function() {};
Writer.prototype.emit = function() {};
function Reader() {
this.flow = this.flow.bind(this);
this.readable = true;
}
Reader.prototype.pipe = function(dest) {
this.dest = dest;
this.flow();
return dest;
};
Reader.prototype.flow = function() {
var dest = this.dest;
var res = dest.write(chunk, encoding);
if (!res)
dest.once('drain', this.flow);
else
process.nextTick(this.flow);
};
function server() {
var reader = new Reader();
var writer = new Writer();
// the actual benchmark.
var server = net.createServer(function(socket) {
socket.pipe(socket);
});
server.listen(PORT, function() {
var socket = net.connect(PORT);
socket.on('connect', function() {
bench.start();
reader.pipe(socket);
socket.pipe(writer);
setTimeout(function() {
// multiply by 2 since we're sending it first one way
// then then back again.
var bytes = writer.received * 2;
var gbits = (bytes * 8) / (1024 * 1024 * 1024);
bench.end(gbits);
}, dur * 1000);
});
});
}

112
benchmark/net/net-s2c.js Normal file
View File

@@ -0,0 +1,112 @@
// test the speed of .pipe() with sockets
var common = require('../common.js');
var PORT = common.PORT;
var bench = common.createBenchmark(main, {
len: [102400, 1024 * 1024 * 16],
type: ['utf', 'asc', 'buf'],
dur: [5]
});
var dur;
var len;
var type;
var chunk;
var encoding;
function main(conf) {
dur = +conf.dur;
len = +conf.len;
type = conf.type;
switch (type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
encoding = 'ascii';
chunk = new Array(len + 1).join('x');
break;
default:
throw new Error('invalid type: ' + type);
break;
}
server();
}
var net = require('net');
function Writer() {
this.received = 0;
this.writable = true;
}
Writer.prototype.write = function(chunk, encoding, cb) {
this.received += chunk.length;
if (typeof encoding === 'function')
encoding();
else if (typeof cb === 'function')
cb();
return true;
};
// doesn't matter, never emits anything.
Writer.prototype.on = function() {};
Writer.prototype.once = function() {};
Writer.prototype.emit = function() {};
function Reader() {
this.flow = this.flow.bind(this);
this.readable = true;
}
Reader.prototype.pipe = function(dest) {
this.dest = dest;
this.flow();
return dest;
};
Reader.prototype.flow = function() {
var dest = this.dest;
var res = dest.write(chunk, encoding);
if (!res)
dest.once('drain', this.flow);
else
process.nextTick(this.flow);
};
function server() {
var reader = new Reader();
var writer = new Writer();
// the actual benchmark.
var server = net.createServer(function(socket) {
reader.pipe(socket);
});
server.listen(PORT, function() {
var socket = net.connect(PORT);
socket.on('connect', function() {
bench.start();
socket.pipe(writer);
setTimeout(function() {
var bytes = writer.received;
var gbits = (bytes * 8) / (1024 * 1024 * 1024);
bench.end(gbits);
}, dur * 1000);
});
});
}

View File

@@ -0,0 +1,136 @@
// In this benchmark, we connect a client to the server, and write
// as many bytes as we can in the specified time (default = 10s)
var common = require('../common.js');
// if there are --dur=N and --len=N args, then
// run the function with those settings.
// if not, then queue up a bunch of child processes.
var bench = common.createBenchmark(main, {
len: [102400, 1024 * 1024 * 16],
type: ['utf', 'asc', 'buf'],
dur: [5]
});
var TCP = process.binding('tcp_wrap').TCP;
var PORT = common.PORT;
var dur;
var len;
var type;
function main(conf) {
dur = +conf.dur;
len = +conf.len;
type = conf.type;
server();
}
function fail(syscall) {
var e = new Error(syscall + ' ' + errno);
e.errno = e.code = errno;
e.syscall = syscall;
throw e;
}
function server() {
var serverHandle = new TCP();
var r = serverHandle.bind('127.0.0.1', PORT);
if (r)
fail('bind');
var r = serverHandle.listen(511);
if (r)
fail('listen');
serverHandle.onconnection = function(clientHandle) {
if (!clientHandle)
fail('connect');
// the meat of the benchmark is right here:
bench.start();
var bytes = 0;
setTimeout(function() {
// report in Gb/sec
bench.end((bytes * 8) / (1024 * 1024 * 1024));
}, dur * 1000);
clientHandle.onread = function(buffer, offset, length) {
// we're not expecting to ever get an EOF from the client.
// just lots of data forever.
if (!buffer)
fail('read');
// don't slice the buffer. the point of this is to isolate, not
// simulate real traffic.
// var chunk = buffer.slice(offset, offset + length);
bytes += length;
};
clientHandle.readStart();
};
client();
}
function client() {
var chunk;
switch (type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
chunk = new Array(len + 1).join('x');
break;
default:
throw new Error('invalid type: ' + type);
break;
}
var clientHandle = new TCP();
var connectReq = clientHandle.connect('127.0.0.1', PORT);
if (!connectReq)
fail('connect');
clientHandle.readStart();
connectReq.oncomplete = function() {
while (clientHandle.writeQueueSize === 0)
write();
};
function write() {
var writeReq
switch (type) {
case 'buf':
writeReq = clientHandle.writeBuffer(chunk);
break;
case 'utf':
writeReq = clientHandle.writeUtf8String(chunk);
break;
case 'asc':
writeReq = clientHandle.writeAsciiString(chunk);
break;
}
if (!writeReq)
fail('write');
writeReq.oncomplete = afterWrite;
}
function afterWrite(status, handle, req) {
if (status)
fail('write');
while (clientHandle.writeQueueSize === 0)
write();
}
}

View File

@@ -0,0 +1,149 @@
// In this benchmark, we connect a client to the server, and write
// as many bytes as we can in the specified time (default = 10s)
var common = require('../common.js');
// if there are --dur=N and --len=N args, then
// run the function with those settings.
// if not, then queue up a bunch of child processes.
var bench = common.createBenchmark(main, {
len: [102400, 1024 * 1024 * 16],
type: ['utf', 'asc', 'buf'],
dur: [5]
});
var TCP = process.binding('tcp_wrap').TCP;
var PORT = common.PORT;
var dur;
var len;
var type;
function main(conf) {
dur = +conf.dur;
len = +conf.len;
type = conf.type;
server();
}
function fail(syscall) {
var e = new Error(syscall + ' ' + errno);
e.errno = e.code = errno;
e.syscall = syscall;
throw e;
}
function server() {
var serverHandle = new TCP();
var r = serverHandle.bind('127.0.0.1', PORT);
if (r)
fail('bind');
var r = serverHandle.listen(511);
if (r)
fail('listen');
serverHandle.onconnection = function(clientHandle) {
if (!clientHandle)
fail('connect');
clientHandle.onread = function(buffer, offset, length) {
// we're not expecting to ever get an EOF from the client.
// just lots of data forever.
if (!buffer)
fail('read');
var chunk = buffer.slice(offset, offset + length);
var writeReq = clientHandle.writeBuffer(chunk);
if (!writeReq)
fail('write');
writeReq.oncomplete = function(status, handle, req) {
if (status)
fail('write');
};
};
clientHandle.readStart();
};
client();
}
function client() {
var chunk;
switch (type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
chunk = new Array(len + 1).join('x');
break;
default:
throw new Error('invalid type: ' + type);
break;
}
var clientHandle = new TCP();
var connectReq = clientHandle.connect('127.0.0.1', PORT);
var bytes = 0;
if (!connectReq)
fail('connect');
clientHandle.readStart();
clientHandle.onread = function(buffer, start, length) {
if (!buffer)
fail('read');
bytes += length;
};
connectReq.oncomplete = function() {
bench.start();
setTimeout(function() {
// multiply by 2 since we're sending it first one way
// then then back again.
bench.end(2 * (bytes * 8) / (1024 * 1024 * 1024));
}, dur * 1000);
while (clientHandle.writeQueueSize === 0)
write();
};
function write() {
var writeReq
switch (type) {
case 'buf':
writeReq = clientHandle.writeBuffer(chunk);
break;
case 'utf':
writeReq = clientHandle.writeUtf8String(chunk);
break;
case 'asc':
writeReq = clientHandle.writeAsciiString(chunk);
break;
}
if (!writeReq)
fail('write');
writeReq.oncomplete = afterWrite;
}
function afterWrite(status, handle, req) {
if (status)
fail('write');
while (clientHandle.writeQueueSize === 0)
write();
}
}

View File

@@ -0,0 +1,136 @@
// In this benchmark, we connect a client to the server, and write
// as many bytes as we can in the specified time (default = 10s)
var common = require('../common.js');
// if there are dur=N and len=N args, then
// run the function with those settings.
// if not, then queue up a bunch of child processes.
var bench = common.createBenchmark(main, {
len: [102400, 1024 * 1024 * 16],
type: ['utf', 'asc', 'buf'],
dur: [5]
});
var TCP = process.binding('tcp_wrap').TCP;
var PORT = common.PORT;
var dur;
var len;
var type;
function main(conf) {
dur = +conf.dur;
len = +conf.len;
type = conf.type;
server();
}
function fail(syscall) {
var e = new Error(syscall + ' ' + errno);
e.errno = e.code = errno;
e.syscall = syscall;
throw e;
}
function server() {
var serverHandle = new TCP();
var r = serverHandle.bind('127.0.0.1', PORT);
if (r)
fail('bind');
var r = serverHandle.listen(511);
if (r)
fail('listen');
serverHandle.onconnection = function(clientHandle) {
if (!clientHandle)
fail('connect');
var chunk;
switch (type) {
case 'buf':
chunk = new Buffer(len);
chunk.fill('x');
break;
case 'utf':
chunk = new Array(len / 2 + 1).join('ü');
break;
case 'asc':
chunk = new Array(len + 1).join('x');
break;
default:
throw new Error('invalid type: ' + type);
break;
}
clientHandle.readStart();
while (clientHandle.writeQueueSize === 0)
write();
function write() {
var writeReq
switch (type) {
case 'buf':
writeReq = clientHandle.writeBuffer(chunk);
break;
case 'utf':
writeReq = clientHandle.writeUtf8String(chunk);
break;
case 'asc':
writeReq = clientHandle.writeAsciiString(chunk);
break;
}
if (!writeReq)
fail('write');
writeReq.oncomplete = afterWrite;
}
function afterWrite(status, handle, req) {
if (status)
fail('write');
while (clientHandle.writeQueueSize === 0)
write();
}
};
client();
}
function client() {
var clientHandle = new TCP();
var connectReq = clientHandle.connect('127.0.0.1', PORT);
if (!connectReq)
fail('connect');
connectReq.oncomplete = function() {
var bytes = 0;
clientHandle.onread = function(buffer, offset, length) {
// we're not expecting to ever get an EOF from the client.
// just lots of data forever.
if (!buffer)
fail('read');
// don't slice the buffer. the point of this is to isolate, not
// simulate real traffic.
// var chunk = buffer.slice(offset, offset + length);
bytes += length;
};
clientHandle.readStart();
// the meat of the benchmark is right here:
bench.start();
setTimeout(function() {
// report in Gb/sec
bench.end((bytes * 8) / (1024 * 1024 * 1024));
}, dur * 1000);
};
}

View File

@@ -1,41 +0,0 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var count = 2e6,
left = count,
start;
function onNextTick() {
if (--left) {
process.nextTick(onNextTick);
} else {
finalize();
}
}
function finalize() {
var duration = (new Date()).getTime() - start,
ticksPerSec = count / duration * 1000;
console.log("nextTick callbacks per second: " + Math.round(ticksPerSec));
}
start = (new Date()).getTime();
process.nextTick(onNextTick);

View File

@@ -1,17 +0,0 @@
// run with `time node benchmark/next-tick.js`
var assert = require('assert');
var N = 1e7;
var n = 0;
process.on('exit', function() {
assert.equal(n, N);
});
function cb() {
n++;
}
for (var i = 0; i < N; ++i) {
process.nextTick(cb);
}

View File

@@ -1,19 +0,0 @@
var util = require("util"),
childProcess = require("child_process");
function next (i) {
if (i <= 0) return;
var child = childProcess.spawn("echo", ["hello"]);
child.stdout.addListener("data", function (chunk) {
util.print(chunk);
});
child.addListener("exit", function (code) {
if (code != 0) process.exit(-1);
next(i - 1);
});
}
next(500);

View File

@@ -1,31 +0,0 @@
var path = require("path");
var util = require("util");
var childProcess = require("child_process");
var benchmarks = [ "timers.js"
, "process_loop.js"
, "static_http_server.js"
];
var benchmarkDir = path.dirname(__filename);
function exec (script, callback) {
var start = new Date();
var child = childProcess.spawn(process.argv[0], [path.join(benchmarkDir, script)]);
child.addListener("exit", function (code) {
var elapsed = new Date() - start;
callback(elapsed, code);
});
}
function runNext (i) {
if (i >= benchmarks.length) return;
util.print(benchmarks[i] + ": ");
exec(benchmarks[i], function (elapsed, code) {
if (code != 0) {
console.log("ERROR ");
}
console.log(elapsed);
runNext(i+1);
});
};
runNext(0);

View File

@@ -1,15 +0,0 @@
console.log("wait...");
var done = 0;
var N = 5000000;
var begin = new Date();
for (var i = 0; i < N; i++) {
setTimeout(function () {
if (++done == N) {
var end = new Date();
console.log("smaller is better");
console.log("startup: %d", start - begin);
console.log("done: %d", end - start);
}
}, 1000);
}
var start = new Date();

View File

@@ -1,26 +0,0 @@
var spawn = require('child_process').spawn,
path = require('path'),
emptyJsFile = path.join(__dirname, '../test/fixtures/semicolon.js'),
starts = 100,
i = 0,
start;
function startNode() {
var node = spawn(process.execPath || process.argv[0], [emptyJsFile]);
node.on('exit', function(exitCode) {
if (exitCode !== 0) {
throw new Error('Error during node startup');
}
i++;
if (i < starts) {
startNode();
} else{
var duration = +new Date - start;
console.log('Started node %d times in %s ms. %d ms / start.', starts, duration, duration / starts);
}
});
}
start = +new Date;
startNode();

View File

@@ -31,6 +31,7 @@ server.listen(port, function() {
path: '/',
agent: agent
}, function(res) {
res.resume();
res.on('end', function() {
if (++responses === n) {
server.close();

View File

@@ -1,6 +0,0 @@
for (var i = 0; i < 9e7; i++) {
s = '01234567890';
s[1] = "a";
}

View File

@@ -1,25 +0,0 @@
var net = require('net');
var received = 0;
var start = new Date();
var socket = net.connect(8000);
socket.on('data', function(d) {
received += d.length;
});
var interval = setInterval(function() {
// After 1 gigabyte shutdown.
if (received > 10 * 1024 * 1024 * 1024) {
socket.destroy();
clearInterval(interval);
process.exit(0);
} else {
// Otherwise print some stats.
var now = new Date();
var gigabytes = received / (1024 * 1024 * 1024);
var gigabits = gigabytes * 8.0;
var millisec = now - start;
var sec = millisec / 1000;
console.log((gigabits / sec) + " gbit/sec")
}
}, 1000);

View File

@@ -1,21 +0,0 @@
var fork = require('child_process').fork;
var net = require('net');
var buffer = new Buffer(1024 * 1024);
function write(socket) {
if (!socket.writable) return;
socket.write(buffer, function() {
write(socket);
});
}
var server = net.createServer(function(socket) {
server.close();
write(socket);
});
server.listen(8000, function() {
fork(__dirname + '/throughput-child.js');
});

View File

@@ -1,5 +0,0 @@
function next (i) {
if (i <= 0) return;
setTimeout(function () { next(i-1); }, 1);
}
next(700);

View File

@@ -0,0 +1,74 @@
var common = require('../common.js');
var bench = common.createBenchmark(main, {
dur: [5],
type: ['buf', 'asc', 'utf'],
size: [2, 1024, 1024 * 1024]
});
var dur, type, encoding, size;
var server;
var path = require('path');
var fs = require('fs');
var cert_dir = path.resolve(__dirname, '../../test/fixtures');
var options;
var tls = require('tls');
function main(conf) {
dur = +conf.dur;
type = conf.type;
size = +conf.size;
var chunk;
switch (type) {
case 'buf':
chunk = new Buffer(size);
chunk.fill('b');
break;
case 'asc':
chunk = new Array(size + 1).join('a');
encoding = 'ascii';
break;
case 'utf':
chunk = new Array(size/2 + 1).join('ü');
encoding = 'utf8';
break;
default:
throw new Error('invalid type');
}
options = { key: fs.readFileSync(cert_dir + '/test_key.pem'),
cert: fs.readFileSync(cert_dir + '/test_cert.pem'),
ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ] };
server = tls.createServer(options, onConnection);
setTimeout(done, dur * 1000);
server.listen(common.PORT, function() {
var opt = { port: common.PORT, rejectUnauthorized: false };
var conn = tls.connect(opt, function() {
bench.start();
conn.on('drain', write);
write();
});
function write() {
var i = 0;
while (false !== conn.write(chunk, encoding));
}
});
var received = 0;
function onConnection(conn) {
conn.on('data', function(chunk) {
received += chunk.length;
});
}
function done() {
var mbits = (received * 8) / (1024 * 1024);
bench.end(mbits);
conn.destroy();
server.close();
}
}

View File

@@ -0,0 +1,63 @@
var assert = require('assert'),
fs = require('fs'),
path = require('path'),
tls = require('tls');
var common = require('../common.js');
var bench = common.createBenchmark(main, {
concurrency: [1, 10],
dur: [5]
});
var clientConn = 0;
var serverConn = 0;
var server;
var dur;
var concurrency;
var running = true;
function main(conf) {
dur = +conf.dur;
concurrency = +conf.concurrency;
var cert_dir = path.resolve(__dirname, '../../test/fixtures'),
options = { key: fs.readFileSync(cert_dir + '/test_key.pem'),
cert: fs.readFileSync(cert_dir + '/test_cert.pem'),
ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ] };
server = tls.createServer(options, onConnection);
server.listen(common.PORT, onListening);
}
function onListening() {
setTimeout(done, dur * 1000);
bench.start();
for (var i = 0; i < concurrency; i++)
makeConnection();
}
function onConnection(conn) {
serverConn++;
}
function makeConnection() {
var conn = tls.connect({ port: common.PORT,
rejectUnauthorized: false }, function() {
clientConn++;
conn.on('error', function(er) {
console.error('client error', er);
throw er;
});
conn.end();
if (running) makeConnection();
});
}
function done() {
running = false;
// it's only an established connection if they both saw it.
// because we destroy the server somewhat abruptly, these
// don't always match. Generally, serverConn will be
// the smaller number, but take the min just to be sure.
bench.end(Math.min(serverConn, clientConn));
}

View File

@@ -1,15 +0,0 @@
// compare with "google-chrome deps/v8/benchmarks/run.html"
var fs = require('fs');
var path = require('path');
var vm = require('vm');
var dir = path.join(__dirname, '..', 'deps', 'v8', 'benchmarks');
global.print = console.log;
global.load = function (x) {
var source = fs.readFileSync(path.join(dir, x), 'utf8');
vm.runInThisContext(source, x);
}
load('run.js');

View File

@@ -1,13 +1,38 @@
{
'variables': {
'visibility%': 'hidden', # V8's visibility setting
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
'component%': 'static_library', # NB. these names match with what V8 expects
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
'werror': '', # Turn off -Werror in V8 build.
'visibility%': 'hidden', # V8's visibility setting
'target_arch%': 'ia32', # set v8's target architecture
'host_arch%': 'ia32', # set v8's host architecture
'want_separate_host_toolset%': 0, # V8 should not build target and host
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
'component%': 'static_library', # NB. these names match with what V8 expects
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
'gcc_version%': 'unknown',
'clang%': 0,
'python%': 'python',
# Turn on optimizations that may trigger compiler bugs.
# Use at your own risk. Do *NOT* report bugs if this option is enabled.
'node_unsafe_optimizations%': 0,
# Enable V8's post-mortem debugging only on unix flavors.
'conditions': [
['OS != "win"', {
'v8_postmortem_support': 'true'
}],
['GENERATOR == "ninja" or OS== "mac"', {
'OBJ_DIR': '<(PRODUCT_DIR)/obj',
'V8_BASE': '<(PRODUCT_DIR)/libv8_base.a',
}, {
'OBJ_DIR': '<(PRODUCT_DIR)/obj.target',
'V8_BASE': '<(PRODUCT_DIR)/obj.target/deps/v8/tools/gyp/libv8_base.a',
}],
],
},
'target_defaults': {
'default_configuration': 'Debug',
'default_configuration': 'Release',
'configurations': {
'Debug': {
'defines': [ 'DEBUG', '_DEBUG' ],
@@ -19,13 +44,7 @@
],
'msvs_settings': {
'VCCLCompilerTool': {
'target_conditions': [
['library=="static_library"', {
'RuntimeLibrary': 1, # static debug
}, {
'RuntimeLibrary': 3, # DLL debug
}],
],
'RuntimeLibrary': 1, # static debug
'Optimization': 0, # /Od, no optimization
'MinimalRebuild': 'false',
'OmitFramePointers': 'false',
@@ -35,24 +54,49 @@
'LinkIncremental': 2, # enable incremental linking
},
},
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '0', # stop gyp from defaulting to -Os
},
},
'Release': {
'defines': [ 'NDEBUG' ],
'cflags': [ '-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections' ],
'conditions': [
['target_arch=="x64"', {
'msvs_configuration_platform': 'x64',
}],
['node_unsafe_optimizations==1', {
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
'ldflags': [ '-Wl,--gc-sections' ],
}, {
'cflags': [ '-O2', '-fno-strict-aliasing' ],
'cflags!': [ '-O3', '-fstrict-aliasing' ],
'conditions': [
# Required by the dtrace post-processor. Unfortunately,
# some gcc/binutils combos generate bad code when
# -ffunction-sections is enabled. Let's hope for the best.
['OS=="solaris"', {
'cflags': [ '-ffunction-sections', '-fdata-sections' ],
}, {
'cflags!': [ '-ffunction-sections', '-fdata-sections' ],
}],
['clang == 0 and gcc_version >= 40', {
'cflags': [ '-fno-tree-vrp' ],
}],
['clang == 0 and gcc_version <= 44', {
'cflags': [ '-fno-tree-sink' ],
}],
],
}],
['OS=="solaris"', {
# pull in V8's postmortem metadata
'ldflags': [ '-Wl,-z,allextract' ]
}],
['OS!="mac" and OS!="win"', {
'cflags': [ '-fno-omit-frame-pointer' ],
}],
],
'msvs_settings': {
'VCCLCompilerTool': {
'target_conditions': [
['library=="static_library"', {
'RuntimeLibrary': 0, # static release
}, {
'RuntimeLibrary': 2, # debug release
}],
],
'RuntimeLibrary': 0, # static release
'Optimization': 3, # /Ox, full optimization
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
@@ -60,6 +104,8 @@
'OmitFramePointers': 'true',
'EnableFunctionLevelLinking': 'true',
'EnableIntrinsicFunctions': 'true',
'RuntimeTypeInfo': 'false',
'ExceptionHandling': '0',
'AdditionalOptions': [
'/MP', # compile across multiple CPUs
],
@@ -124,23 +170,33 @@
],
}],
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
'cflags': [ '-Wall', '-pthread', ],
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', '-pthread', ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
'ldflags': [ '-pthread', ],
'ldflags': [ '-pthread', '-rdynamic' ],
'target_conditions': [
['_type=="static_library"', {
'standalone_static_library': 1, # disable thin archive which needs binutils >= 2.19
}],
],
'conditions': [
[ 'target_arch=="ia32"', {
'cflags': [ '-m32' ],
'ldflags': [ '-m32' ],
}],
[ 'OS=="linux"', {
'cflags': [ '-ansi' ],
[ 'target_arch=="x64"', {
'cflags': [ '-m64' ],
'ldflags': [ '-m64' ],
}],
[ 'visibility=="hidden"', {
'cflags': [ '-fvisibility=hidden' ],
[ 'OS=="solaris"', {
'cflags': [ '-pthreads' ],
'ldflags': [ '-pthreads' ],
'cflags!': [ '-pthread' ],
'ldflags!': [ '-pthread' ],
}],
],
}],
['OS=="mac"', {
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
'xcode_settings': {
'ALWAYS_SEARCH_USER_PATHS': 'NO',
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
@@ -149,14 +205,9 @@
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
# GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
'GCC_VERSION': '4.2',
'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
'MACOSX_DEPLOYMENT_TARGET': '10.4', # -mmacosx-version-min=10.4
'PREBINDING': 'NO', # No -Wl,-prebind
'MACOSX_DEPLOYMENT_TARGET': '10.5', # -mmacosx-version-min=10.5
'USE_HEADERMAP': 'NO',
'OTHER_CFLAGS': [
'-fno-strict-aliasing',
@@ -173,7 +224,23 @@
'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
}],
],
'conditions': [
['target_arch=="ia32"', {
'xcode_settings': {'ARCHS': ['i386']},
}],
['target_arch=="x64"', {
'xcode_settings': {'ARCHS': ['x86_64']},
}],
],
}],
['OS=="freebsd" and node_use_dtrace=="true"', {
'libraries': [ '-lelf' ],
}],
['OS=="freebsd"', {
'ldflags': [
'-Wl,--export-dynamic',
],
}]
],
}
}

746
configure vendored
View File

@@ -1,25 +1,733 @@
#! /bin/sh
#!/usr/bin/env python
import optparse
import os
import pprint
import re
import shlex
import subprocess
import sys
# v8 doesn't like ccache
if [ ! -z "`echo $CC | grep ccache`" ]; then
echo "Error: V8 doesn't like ccache. Please set your CC env var to 'gcc'"
echo " (ba)sh: export CC=gcc"
exit 1
fi
CC = os.environ.get('CC', 'cc')
if [ -z "$PYTHON" ]; then
PYTHON=python
fi
root_dir = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root_dir, 'tools', 'gyp', 'pylib'))
from gyp.common import GetFlavor
CUR_DIR=$PWD
# parse our options
parser = optparse.OptionParser()
#possible relative path
WORKINGDIR=`dirname $0`
cd "$WORKINGDIR"
#abs path
WORKINGDIR=`pwd`
cd "$CUR_DIR"
parser.add_option("--debug",
action="store_true",
dest="debug",
help="Also build debug build")
"$PYTHON" "${WORKINGDIR}/tools/waf-light" --jobs=1 configure $*
parser.add_option("--prefix",
action="store",
dest="prefix",
help="Select the install prefix (defaults to /usr/local)")
exit $?
parser.add_option("--without-npm",
action="store_true",
dest="without_npm",
help="Don\'t install the bundled npm package manager")
parser.add_option("--without-ssl",
action="store_true",
dest="without_ssl",
help="Build without SSL")
parser.add_option("--without-snapshot",
action="store_true",
dest="without_snapshot",
help="Build without snapshotting V8 libraries. You might want to set"
" this for cross-compiling. [Default: False]")
parser.add_option("--shared-v8",
action="store_true",
dest="shared_v8",
help="Link to a shared V8 DLL instead of static linking")
parser.add_option("--shared-v8-includes",
action="store",
dest="shared_v8_includes",
help="Directory containing V8 header files")
parser.add_option("--shared-v8-libpath",
action="store",
dest="shared_v8_libpath",
help="A directory to search for the shared V8 DLL")
parser.add_option("--shared-v8-libname",
action="store",
dest="shared_v8_libname",
help="Alternative lib name to link to (default: 'v8')")
parser.add_option("--shared-openssl",
action="store_true",
dest="shared_openssl",
help="Link to a shared OpenSSl DLL instead of static linking")
parser.add_option("--shared-openssl-includes",
action="store",
dest="shared_openssl_includes",
help="Directory containing OpenSSL header files")
parser.add_option("--shared-openssl-libpath",
action="store",
dest="shared_openssl_libpath",
help="A directory to search for the shared OpenSSL DLLs")
parser.add_option("--shared-openssl-libname",
action="store",
dest="shared_openssl_libname",
help="Alternative lib name to link to (default: 'crypto,ssl')")
parser.add_option("--openssl-no-asm",
action="store_true",
dest="openssl_no_asm",
help="Do not build optimized assembly for OpenSSL")
# deprecated
parser.add_option("--openssl-use-sys",
action="store_true",
dest="shared_openssl",
help=optparse.SUPPRESS_HELP)
# deprecated
parser.add_option("--openssl-includes",
action="store",
dest="shared_openssl_includes",
help=optparse.SUPPRESS_HELP)
# deprecated
parser.add_option("--openssl-libpath",
action="store",
dest="shared_openssl_libpath",
help=optparse.SUPPRESS_HELP)
# TODO document when we've decided on what the tracing API and its options will
# look like
parser.add_option("--systemtap-includes",
action="store",
dest="systemtap_includes",
help=optparse.SUPPRESS_HELP)
parser.add_option("--without-ssl2",
action="store_true",
dest="ssl2",
help="Disable SSL v2")
parser.add_option("--without-ssl3",
action="store_true",
dest="ssl3",
help="Disable SSL v3")
parser.add_option("--shared-zlib",
action="store_true",
dest="shared_zlib",
help="Link to a shared zlib DLL instead of static linking")
parser.add_option("--shared-zlib-includes",
action="store",
dest="shared_zlib_includes",
help="Directory containing zlib header files")
parser.add_option("--shared-zlib-libpath",
action="store",
dest="shared_zlib_libpath",
help="A directory to search for the shared zlib DLL")
parser.add_option("--shared-zlib-libname",
action="store",
dest="shared_zlib_libname",
help="Alternative lib name to link to (default: 'z')")
parser.add_option("--shared-http-parser",
action="store_true",
dest="shared_http_parser",
help="Link to a shared http_parser DLL instead of static linking")
parser.add_option("--shared-http-parser-includes",
action="store",
dest="shared_http_parser_includes",
help="Directory containing http_parser header files")
parser.add_option("--shared-http-parser-libpath",
action="store",
dest="shared_http_parser_libpath",
help="A directory to search for the shared http_parser DLL")
parser.add_option("--shared-http-parser-libname",
action="store",
dest="shared_http_parser_libname",
help="Alternative lib name to link to (default: 'http_parser')")
parser.add_option("--shared-cares",
action="store_true",
dest="shared_cares",
help="Link to a shared cares DLL instead of static linking")
parser.add_option("--shared-cares-includes",
action="store",
dest="shared_cares_includes",
help="Directory containing cares header files")
parser.add_option("--shared-cares-libpath",
action="store",
dest="shared_cares_libpath",
help="A directory to search for the shared cares DLL")
parser.add_option("--shared-cares-libname",
action="store",
dest="shared_cares_libname",
help="Alternative lib name to link to (default: 'cares')")
parser.add_option("--shared-libuv",
action="store_true",
dest="shared_libuv",
help="Link to a shared libuv DLL instead of static linking")
parser.add_option("--shared-libuv-includes",
action="store",
dest="shared_libuv_includes",
help="Directory containing libuv header files")
parser.add_option("--shared-libuv-libpath",
action="store",
dest="shared_libuv_libpath",
help="A directory to search for the shared libuv DLL")
parser.add_option("--shared-libuv-libname",
action="store",
dest="shared_libuv_libname",
help="Alternative lib name to link to (default: 'uv')")
parser.add_option("--with-dtrace",
action="store_true",
dest="with_dtrace",
help="Build with DTrace (default is true on sunos)")
parser.add_option("--without-dtrace",
action="store_true",
dest="without_dtrace",
help="Build without DTrace")
parser.add_option("--with-etw",
action="store_true",
dest="with_etw",
help="Build with ETW (default is true on Windows)")
parser.add_option("--without-etw",
action="store_true",
dest="without_etw",
help="Build without ETW")
parser.add_option("--with-perfctr",
action="store_true",
dest="with_perfctr",
help="Build with performance counters (default is true on Windows)")
parser.add_option("--without-perfctr",
action="store_true",
dest="without_perfctr",
help="Build without performance counters")
# CHECKME does this still work with recent releases of V8?
parser.add_option("--gdb",
action="store_true",
dest="gdb",
help="add gdb support")
parser.add_option("--dest-cpu",
action="store",
dest="dest_cpu",
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
parser.add_option("--dest-os",
action="store",
dest="dest_os",
help="Operating system to build for. Valid values are: "
"win, mac, solaris, freebsd, openbsd, linux")
parser.add_option("--no-ifaddrs",
action="store_true",
dest="no_ifaddrs",
help="Use on deprecated SunOS systems that do not support ifaddrs.h")
parser.add_option("--with-arm-float-abi",
action="store",
dest="arm_float_abi",
help="Specifies which floating-point ABI to use. Valid values are: "
"soft, softfp, hard")
parser.add_option("--with-mips-float-abi",
action="store",
dest="mips_float_abi",
help="Specifies which floating-point ABI to use. Valid values are: "
"soft, hard")
parser.add_option("--ninja",
action="store_true",
dest="use_ninja",
help="Generate files for the ninja build system")
# Using --unsafe-optimizations voids your warranty.
parser.add_option("--unsafe-optimizations",
action="store_true",
dest="unsafe_optimizations",
help=optparse.SUPPRESS_HELP)
parser.add_option("--xcode",
action="store_true",
dest="use_xcode",
help="Generate build files for use with xcode")
parser.add_option("--tag",
action="store",
dest="tag",
help="Custom build tag")
(options, args) = parser.parse_args()
def b(value):
"""Returns the string 'true' if value is truthy, 'false' otherwise."""
if value:
return 'true'
else:
return 'false'
def pkg_config(pkg):
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
libs = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
cflags = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
return (libs, cflags)
def cc_macros():
"""Checks predefined macros using the CC command."""
try:
p = subprocess.Popen(shlex.split(CC) + ['-dM', '-E', '-'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
except OSError:
print '''Node.js configure error: No acceptable C compiler found!
Please make sure you have a C compiler installed on your system and/or
consider adjusting the CC environment variable if you installed
it in a non-standard prefix.
'''
sys.exit()
p.stdin.write('\n')
out = p.communicate()[0]
out = str(out).split('\n')
k = {}
for line in out:
lst = shlex.split(line)
if len(lst) > 2:
key = lst[1]
val = lst[2]
k[key] = val
return k
def is_arch_armv7():
"""Check for ARMv7 instructions"""
cc_macros_cache = cc_macros()
return ('__ARM_ARCH_7__' in cc_macros_cache or
'__ARM_ARCH_7A__' in cc_macros_cache or
'__ARM_ARCH_7R__' in cc_macros_cache or
'__ARM_ARCH_7M__' in cc_macros_cache)
def is_arm_neon():
"""Check for ARM NEON support"""
return '__ARM_NEON__' in cc_macros()
def arm_hard_float_abi():
"""Check for hardfloat or softfloat eabi on ARM"""
# GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
# the Floating Point ABI used (PCS stands for Procedure Call Standard).
# We use these as well as a couple of other defines to statically determine
# what FP ABI used.
# GCC versions 4.4 and below don't support hard-fp.
# GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
# __ARM_PCS_VFP.
if compiler_version() >= (4, 6, 0):
return '__ARM_PCS_VFP' in cc_macros()
elif compiler_version() < (4, 5, 0):
return False
elif '__ARM_PCS_VFP' in cc_macros():
return True
elif ('__ARM_PCS' in cc_macros() or
'__SOFTFP' in cc_macros() or
not '__VFP_FP__' in cc_macros()):
return False
else:
print '''Node.js configure error: Your version of GCC does not report
the Floating-Point ABI to compile for your hardware
Please manually specify which floating-point ABI to use with the
--with-arm-float-abi option.
'''
sys.exit()
def host_arch_cc():
"""Host architecture check using the CC command."""
k = cc_macros()
matchup = {
'__x86_64__' : 'x64',
'__i386__' : 'ia32',
'__arm__' : 'arm',
'__mips__' : 'mips',
}
rtn = 'ia32' # default
for i in matchup:
if i in k and k[i] != '0':
rtn = matchup[i]
break
return rtn
def host_arch_win():
"""Host architecture check using environ vars (better way to do this?)"""
arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
matchup = {
'AMD64' : 'x64',
'x86' : 'ia32',
'arm' : 'arm',
'mips' : 'mips',
}
return matchup.get(arch, 'ia32')
def compiler_version():
try:
proc = subprocess.Popen(shlex.split(CC) + ['--version'], stdout=subprocess.PIPE)
except WindowsError:
return (0, False)
is_clang = 'clang' in proc.communicate()[0].split('\n')[0]
proc = subprocess.Popen(shlex.split(CC) + ['-dumpversion'], stdout=subprocess.PIPE)
version = tuple(map(int, proc.communicate()[0].split('.')))
return (version, is_clang)
def configure_arm(o):
# V8 on ARM requires that armv7 is set. CPU Model detected by
# the presence of __ARM_ARCH_7__ and the like defines in compiler
if options.arm_float_abi:
hard_float = options.arm_float_abi == 'hard'
else:
hard_float = arm_hard_float_abi()
armv7 = is_arch_armv7()
# CHECKME VFPv3 implies ARMv7+ but is the reverse true as well?
fpu = 'vfpv3' if armv7 else 'vfpv2'
o['variables']['armv7'] = int(armv7)
o['variables']['arm_fpu'] = fpu
o['variables']['arm_neon'] = int(is_arm_neon())
o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)
def configure_mips(o):
if options.mips_float_abi:
if options.mips_float_abi in ('soft', 'hard'):
o['variables']['v8_use_mips_abi_hardfloat'] = b(
options.mips_float_abi == 'hard')
else:
raise Exception(
'Invalid mips-float-abi value. Valid values are: soft, hard')
def configure_node(o):
o['variables']['v8_enable_gdbjit'] = 1 if options.gdb else 0
o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
o['variables']['node_install_npm'] = b(not options.without_npm)
o['variables']['node_unsafe_optimizations'] = (
1 if options.unsafe_optimizations else 0)
o['default_configuration'] = 'Debug' if options.debug else 'Release'
host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()
target_arch = options.dest_cpu or host_arch
o['variables']['host_arch'] = host_arch
o['variables']['target_arch'] = target_arch
if target_arch != host_arch and not options.without_snapshot:
o['variables']['want_separate_host_toolset'] = 1
else:
o['variables']['want_separate_host_toolset'] = 0
if target_arch == 'arm':
configure_arm(o)
elif target_arch in ('mips', 'mipsel'):
configure_mips(o)
cc_version, is_clang = compiler_version()
o['variables']['clang'] = 1 if is_clang else 0
if not is_clang and cc_version != 0:
o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]
# clang has always supported -fvisibility=hidden, right?
if not is_clang and cc_version < (4,0,0):
o['variables']['visibility'] = ''
# By default, enable DTrace on SunOS systems. Don't allow it on other
# systems, since it won't work. (The MacOS build process is different than
# SunOS, and we haven't implemented it.)
if flavor in ('solaris', 'mac'):
o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
elif flavor == 'freebsd':
o['variables']['node_use_dtrace'] = b(options.with_dtrace)
elif flavor == 'linux':
o['variables']['node_use_dtrace'] = 'false'
o['variables']['node_use_systemtap'] = b(options.with_dtrace)
if options.systemtap_includes:
o['include_dirs'] += [options.systemtap_includes]
elif options.with_dtrace:
raise Exception(
'DTrace is currently only supported on SunOS, MacOS or Linux systems.')
else:
o['variables']['node_use_dtrace'] = 'false'
o['variables']['node_use_systemtap'] = 'false'
if options.no_ifaddrs:
o['defines'] += ['SUNOS_NO_IFADDRS']
# By default, enable ETW on Windows.
if flavor == 'win':
o['variables']['node_use_etw'] = b(not options.without_etw);
elif options.with_etw:
raise Exception('ETW is only supported on Windows.')
else:
o['variables']['node_use_etw'] = 'false'
# By default, enable Performance counters on Windows.
if flavor == 'win':
o['variables']['node_use_perfctr'] = b(not options.without_perfctr);
elif options.with_perfctr:
raise Exception('Performance counter is only supported on Windows.')
else:
o['variables']['node_use_perfctr'] = 'false'
if options.tag:
o['variables']['node_tag'] = '-' + options.tag
else:
o['variables']['node_tag'] = ''
def configure_libz(o):
o['variables']['node_shared_zlib'] = b(options.shared_zlib)
# assume shared_zlib if one of these is set?
if options.shared_zlib_libpath:
o['libraries'] += ['-L%s' % options.shared_zlib_libpath]
if options.shared_zlib_libname:
o['libraries'] += ['-l%s' % options.shared_zlib_libname]
elif options.shared_zlib:
o['libraries'] += ['-lz']
if options.shared_zlib_includes:
o['include_dirs'] += [options.shared_zlib_includes]
def configure_http_parser(o):
o['variables']['node_shared_http_parser'] = b(options.shared_http_parser)
# assume shared http_parser if one of these is set?
if options.shared_http_parser_libpath:
o['libraries'] += ['-L%s' % options.shared_http_parser_libpath]
if options.shared_http_parser_libname:
o['libraries'] += ['-l%s' % options.shared_http_parser_libname]
elif options.shared_http_parser:
o['libraries'] += ['-lhttp_parser']
if options.shared_http_parser_includes:
o['include_dirs'] += [options.shared_http_parser_includes]
def configure_cares(o):
o['variables']['node_shared_cares'] = b(options.shared_cares)
# assume shared cares if one of these is set?
if options.shared_cares_libpath:
o['libraries'] += ['-L%s' % options.shared_cares_libpath]
if options.shared_cares_libname:
o['libraries'] += ['-l%s' % options.shared_cares_libname]
elif options.shared_cares:
o['libraries'] += ['-lcares']
if options.shared_cares_includes:
o['include_dirs'] += [options.shared_cares_includes]
def configure_libuv(o):
o['variables']['node_shared_libuv'] = b(options.shared_libuv)
# assume shared libuv if one of these is set?
if options.shared_libuv_libpath:
o['libraries'] += ['-L%s' % options.shared_libuv_libpath]
if options.shared_libuv_libname:
o['libraries'] += ['-l%s' % options.shared_libuv_libname]
elif options.shared_libuv:
o['libraries'] += ['-luv']
if options.shared_libuv_includes:
o['include_dirs'] += [options.shared_libuv_includes]
def configure_v8(o):
o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
o['variables']['node_shared_v8'] = b(options.shared_v8)
# assume shared_v8 if one of these is set?
if options.shared_v8_libpath:
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
if options.shared_v8_libname:
o['libraries'] += ['-l%s' % options.shared_v8_libname]
elif options.shared_v8:
o['libraries'] += ['-lv8']
if options.shared_v8_includes:
o['include_dirs'] += [options.shared_v8_includes]
def configure_openssl(o):
o['variables']['node_use_openssl'] = b(not options.without_ssl)
o['variables']['node_shared_openssl'] = b(options.shared_openssl)
o['variables']['openssl_no_asm'] = (
1 if options.openssl_no_asm else 0)
if options.without_ssl:
return
if options.ssl2:
o['defines'] += ['OPENSSL_NO_SSL2=1']
if options.ssl3:
o['defines'] += ['OPENSSL_NO_SSL3=1']
if options.shared_openssl:
(libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')
if options.shared_openssl_libpath:
o['libraries'] += ['-L%s' % options.shared_openssl_libpath]
if options.shared_openssl_libname:
libnames = options.shared_openssl_libname.split(',')
o['libraries'] += ['-l%s' % s for s in libnames]
else:
o['libraries'] += libs.split()
if options.shared_openssl_includes:
o['include_dirs'] += [options.shared_openssl_includes]
else:
o['cflags'] += cflags.split()
def configure_winsdk(o):
if flavor != 'win':
return
winsdk_dir = os.environ.get("WindowsSdkDir")
if winsdk_dir and os.path.isfile(winsdk_dir + '\\bin\\ctrpp.exe'):
print "Found ctrpp in WinSDK--will build generated files into tools/msvs/genfiles."
o['variables']['node_has_winsdk'] = 'true'
return
print "ctrpp not found in WinSDK path--using pre-gen files from tools/msvs/genfiles."
# determine the "flavor" (operating system) we're building for,
# leveraging gyp's GetFlavor function
flavor_params = {};
if (options.dest_os):
flavor_params['flavor'] = options.dest_os;
flavor = GetFlavor(flavor_params);
output = {
'variables': { 'python': sys.executable },
'include_dirs': [],
'libraries': [],
'defines': [],
'cflags': [],
}
configure_node(output)
configure_libz(output)
configure_http_parser(output)
configure_cares(output)
configure_libuv(output)
configure_v8(output)
configure_openssl(output)
configure_winsdk(output)
# variables should be a root level element,
# move everything else to target_defaults
variables = output['variables']
del output['variables']
output = {
'variables': variables,
'target_defaults': output
}
pprint.pprint(output, indent=2)
def write(filename, data):
filename = os.path.join(root_dir, filename)
print "creating ", filename
f = open(filename, 'w+')
f.write(data)
write('config.gypi', "# Do not edit. Generated by the configure script.\n" +
pprint.pformat(output, indent=2) + "\n")
config = {
'BUILDTYPE': 'Debug' if options.debug else 'Release',
'USE_NINJA': str(int(options.use_ninja or 0)),
'USE_XCODE': str(int(options.use_xcode or 0)),
'PYTHON': sys.executable,
}
config = '\n'.join(map('='.join, config.iteritems())) + '\n'
write('config.mk',
'# Do not edit. Generated by the configure script.\n' + config)
gyp_args = [sys.executable, 'tools/gyp_node.py', '--no-parallel']
if options.use_ninja:
gyp_args += ['-f', 'ninja-' + flavor]
elif options.use_xcode:
gyp_args += ['-f', 'xcode']
elif flavor == 'win':
gyp_args += ['-f', 'msvs', '-G', 'msvs_version=auto']
else:
gyp_args += ['-f', 'make-' + flavor]
gyp_args += args
sys.exit(subprocess.call(gyp_args))

View File

@@ -1,247 +0,0 @@
#!/usr/bin/env python
import optparse
import os
import json
import sys
root_dir = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
import utils # GuessArchitecture
# parse our options
parser = optparse.OptionParser()
parser.add_option("--debug",
action="store_true",
dest="debug",
help="Also build debug build")
parser.add_option("--prefix",
action="store",
dest="prefix",
help="Select the install prefix (defaults to /usr/local)")
parser.add_option("--without-ssl",
action="store_true",
dest="without_ssl",
help="Build without SSL")
parser.add_option("--without-snapshot",
action="store_true",
dest="without_snapshot",
help="Build without snapshotting V8 libraries. You might want to set"
" this for cross-compiling. [Default: False]")
parser.add_option("--shared-v8",
action="store_true",
dest="shared_v8",
help="Link to a shared V8 DLL instead of static linking")
parser.add_option("--shared-v8-includes",
action="store",
dest="shared_v8_includes",
help="Directory containing V8 header files")
parser.add_option("--shared-v8-libpath",
action="store",
dest="shared_v8_libpath",
help="A directory to search for the shared V8 DLL")
parser.add_option("--shared-v8-libname",
action="store",
dest="shared_v8_libname",
help="Alternative lib name to link to (default: 'v8')")
parser.add_option("--openssl-includes",
action="store",
dest="openssl_includes",
help="A directory to search for the OpenSSL includes")
parser.add_option("--openssl-libpath",
action="store",
dest="openssl_libpath",
help="A directory to search for the OpenSSL libraries")
parser.add_option("--no-ssl2",
action="store_true",
dest="no_ssl2",
help="Disable OpenSSL v2")
parser.add_option("--shared-cares",
action="store_true",
dest="shared_cares",
help="Link to a shared C-Ares DLL instead of static linking")
parser.add_option("--shared-cares-includes",
action="store",
dest="shared_cares_includes",
help="Directory containing C-Ares header files")
parser.add_option("--shared-cares-libpath",
action="store",
dest="shared_cares_libpath",
help="A directory to search for the shared C-Ares DLL")
parser.add_option("--with-dtrace",
action="store_true",
dest="with_dtrace",
help="Build with DTrace (experimental)")
# CHECKME does this still work with recent releases of V8?
parser.add_option("--gdb",
action="store_true",
dest="gdb",
help="add gdb support")
parser.add_option("--dest-cpu",
action="store",
dest="dest_cpu",
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
(options, args) = parser.parse_args()
def pkg_config(pkg):
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
libs = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
cflags = cmd.readline().strip()
ret = cmd.close()
if (ret): return None
return (libs, cflags)
def uname(switch):
f = os.popen('uname %s' % switch)
s = f.read().strip()
f.close()
return s
def host_arch():
"""Host architecture. One of arm, ia32 or x64."""
arch = uname('-p')
if arch == 'unknown':
arch = uname('-m')
return {
'arm': 'arm',
'x86': 'ia32',
'i386': 'ia32',
'x86_64': 'x64',
}.get(arch, 'ia32')
def target_arch():
# TODO act on options.dest_cpu
return host_arch()
def configure_node(o):
# TODO add gdb and dest_cpu
o['variables']['node_debug'] = 'true' if options.debug else 'false'
o['variables']['node_prefix'] = options.prefix if options.prefix else ''
o['variables']['node_use_dtrace'] = 'true' if options.with_dtrace else 'false'
o['variables']['host_arch'] = host_arch()
o['variables']['target_arch'] = target_arch()
# TODO move to node.gyp
if sys.platform == 'sunos5':
o['variables']['visibility'] = '' # FIXME -fvisibility=hidden, should be a gcc check
def configure_libz(o):
o['libraries'] += ['-lz']
def configure_v8(o):
o['variables']['v8_use_snapshot'] = 'true' if not options.without_snapshot else 'false'
o['variables']['node_shared_v8'] = 'true' if options.shared_v8 else 'false'
# assume shared_v8 if one of these is set?
if options.shared_v8_libpath:
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
if options.shared_v8_libname:
o['libraries'] += ['-l%s' % options.shared_v8_libname]
if options.shared_v8_includes:
o['include_dirs'] += [options.shared_v8_includes]
def configure_cares(o):
o['variables']['node_shared_cares'] = 'true' if options.shared_cares else 'false'
# assume shared_cares if one of these is set?
if options.shared_cares_libpath:
o['libraries'] += ['-L%s' % options.shared_cares_libpath]
if options.shared_cares_includes:
o['include_dirs'] += [options.shared_cares_includes]
def configure_openssl(o):
o['variables']['node_use_openssl'] = 'false' if options.without_ssl else 'true'
if options.without_ssl:
return
if options.no_ssl2:
o['defines'] += ['OPENSSL_NO_SSL2=1']
out = pkg_config('openssl')
(libs, cflags) = out if out else ('', '')
if options.openssl_libpath:
o['libraries'] += ['-L%s' % options.openssl_libpath, '-lssl', '-lcrypto']
else:
o['libraries'] += libs.split()
if options.openssl_includes:
o['include_dirs'] += [options.openssl_includes]
else:
o['cflags'] += cflags.split()
if libs or cflags or options.openssl_libpath or options.openssl_includes:
o['variables']['node_use_system_openssl'] = 'true'
else:
o['variables']['node_use_system_openssl'] = 'false'
print "configure options:", options
output = {
'variables': {},
'include_dirs': [],
'libraries': [],
'defines': [],
'cflags': [],
}
configure_node(output)
configure_libz(output)
configure_v8(output)
configure_cares(output)
configure_openssl(output)
# variables should be a root level element,
# move everything else to target_defaults
variables = output['variables']
del output['variables']
output = {
'variables': variables,
'target_defaults': output
}
fn = os.path.join(root_dir, 'options.gypi')
print "creating ", fn
f = open(fn, 'w+')
f.write("# Do not edit. Generated by the configure script.\n")
json.dump(output, f, indent=2, skipkeys=True)
f.write("\n")
f.close()

15
deps/cares/.gitignore vendored Normal file
View File

@@ -0,0 +1,15 @@
/Debug/
/out/
/Release/
/cares.Makefile
/cares.target.mk
/Makefile
/*.opensdf
/*.sdf
/*.sln
/*.suo
/*.vcxproj
/*.vcxproj.filters
/*.vcxproj.user

160
deps/cares/cares.gyp vendored Normal file
View File

@@ -0,0 +1,160 @@
{
'target_defaults': {
'conditions': [
['OS!="win"', {
'defines': [
'_DARWIN_USE_64_BIT_INODE=1',
'_LARGEFILE_SOURCE',
'_FILE_OFFSET_BITS=64',
'_GNU_SOURCE'
]
}],
['OS=="solaris"', {
'defines': [
'__EXTENSIONS__',
'_XOPEN_SOURCE=500'
]
}]
]
},
'targets': [
{
'target_name': 'cares',
'type': '<(library)',
'include_dirs': [ 'include', 'src' ],
'direct_dependent_settings': {
'include_dirs': [ 'include' ]
},
'defines': [ 'HAVE_CONFIG_H' ],
'sources': [
'common.gypi',
'include/ares.h',
'include/ares_version.h',
'include/nameser.h',
'src/ares_cancel.c',
'src/ares__close_sockets.c',
'src/ares_data.c',
'src/ares_data.h',
'src/ares_destroy.c',
'src/ares_dns.h',
'src/ares_expand_name.c',
'src/ares_expand_string.c',
'src/ares_fds.c',
'src/ares_free_hostent.c',
'src/ares_free_string.c',
'src/ares_getenv.h',
'src/ares_gethostbyaddr.c',
'src/ares_gethostbyname.c',
'src/ares__get_hostent.c',
'src/ares_getnameinfo.c',
'src/ares_getopt.c',
'src/ares_getopt.h',
'src/ares_getsock.c',
'src/ares_init.c',
'src/ares_ipv6.h',
'src/ares_library_init.c',
'src/ares_library_init.h',
'src/ares_llist.c',
'src/ares_llist.h',
'src/ares_mkquery.c',
'src/ares_nowarn.c',
'src/ares_nowarn.h',
'src/ares_options.c',
'src/ares_parse_aaaa_reply.c',
'src/ares_parse_a_reply.c',
'src/ares_parse_mx_reply.c',
'src/ares_parse_naptr_reply.c',
'src/ares_parse_ns_reply.c',
'src/ares_parse_ptr_reply.c',
'src/ares_parse_soa_reply.c',
'src/ares_parse_srv_reply.c',
'src/ares_parse_txt_reply.c',
'src/ares_platform.h',
'src/ares_private.h',
'src/ares_process.c',
'src/ares_query.c',
'src/ares__read_line.c',
'src/ares_rules.h',
'src/ares_search.c',
'src/ares_send.c',
'src/ares_setup.h',
'src/ares_strcasecmp.c',
'src/ares_strcasecmp.h',
'src/ares_strdup.c',
'src/ares_strdup.h',
'src/ares_strerror.c',
'src/ares_timeout.c',
'src/ares__timeval.c',
'src/ares_version.c',
'src/ares_writev.c',
'src/ares_writev.h',
'src/bitncmp.c',
'src/bitncmp.h',
'src/inet_net_pton.c',
'src/inet_net_pton.h',
'src/inet_ntop.c',
'src/inet_ntop.h',
'src/setup_once.h',
'src/windows_port.c'
],
'conditions': [
[ 'library=="static_library"', {
'defines': [ 'CARES_STATICLIB' ]
}, {
'defines': [ 'CARES_BUILDING_LIBRARY' ]
}],
[ 'OS=="win"', {
'include_dirs': [ 'config/win32' ],
'sources': [
'config/win32/ares_config.h',
'src/windows_port.c',
'src/ares_getenv.c',
'src/ares_iphlpapi.h',
'src/ares_platform.c'
],
'libraries': [
'-lws2_32.lib',
'-liphlpapi.lib'
],
}, {
# Not Windows i.e. POSIX
'cflags': [
'-g',
'--std=gnu89',
'-pedantic',
'-Wall',
'-Wextra',
'-Wno-unused-parameter'
],
}],
[ 'OS=="linux"', {
'include_dirs': [ 'config/linux' ],
'sources': [ 'config/linux/ares_config.h' ]
}],
[ 'OS=="mac"', {
'include_dirs': [ 'config/darwin' ],
'sources': [ 'config/darwin/ares_config.h' ]
}],
[ 'OS=="freebsd" or OS=="dragonflybsd"', {
'include_dirs': [ 'config/freebsd' ],
'sources': [ 'config/freebsd/ares_config.h' ]
}],
[ 'OS=="openbsd"', {
'include_dirs': [ 'config/openbsd' ],
'sources': [ 'config/openbsd/ares_config.h' ]
}],
[ 'OS=="solaris"', {
'include_dirs': [ 'config/sunos' ],
'sources': [ 'config/sunos/ares_config.h' ],
'direct_dependent_settings': {
'libraries': [
'-lsocket',
'-lnsl'
]
}
}]
]
}
]
}

172
deps/cares/common.gypi vendored Normal file
View File

@@ -0,0 +1,172 @@
{
'variables': {
'visibility%': 'hidden',
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
'component%': 'static_library',
'host_arch%': '',
'target_arch%': ''
},
'target_defaults': {
'default_configuration': 'Debug',
'configurations': {
'Debug': {
'defines': [ 'DEBUG', '_DEBUG' ],
'cflags': [ '-g', '-O0' ],
'msvs_settings': {
'VCCLCompilerTool': {
'target_conditions': [
['library=="static_library"', {
'RuntimeLibrary': 1 # static debug
}, {
'RuntimeLibrary': 3 # DLL debug
}]
],
'Optimization': 0, # /Od, no optimization
'MinimalRebuild': 'false',
'OmitFramePointers': 'false',
'BasicRuntimeChecks': 3 # /RTC1
},
'VCLinkerTool': {
'LinkIncremental': 2 # enable incremental linking
}
},
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '0'
}
},
'Release': {
'defines': [ 'NDEBUG' ],
'cflags': [
'-O3',
'-fomit-frame-pointer',
'-fdata-sections',
'-ffunction-sections'
],
'msvs_settings': {
'VCCLCompilerTool': {
'target_conditions': [
['library=="static_library"', {
'RuntimeLibrary': 0, # static release
}, {
'RuntimeLibrary': 2, # debug release
}],
],
'Optimization': 3, # /Ox, full optimization
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG
'OmitFramePointers': 'true',
'EnableFunctionLevelLinking': 'true',
'EnableIntrinsicFunctions': 'true'
},
'VCLibrarianTool': {
'AdditionalOptions': [
'/LTCG' # link time code generation
]
},
'VCLinkerTool': {
'LinkTimeCodeGeneration': 1, # link-time code generation
'OptimizeReferences': 2, # /OPT:REF
'EnableCOMDATFolding': 2, # /OPT:ICF
'LinkIncremental': 1 # disable incremental linking
},
},
}
},
'msvs_settings': {
'VCCLCompilerTool': {
'StringPooling': 'true', # pool string literals
'DebugInformationFormat': 3, # Generate a PDB
'WarningLevel': 3,
'BufferSecurityCheck': 'true',
'ExceptionHandling': 1, # /EHsc
'SuppressStartupBanner': 'true',
'WarnAsError': 'false',
'AdditionalOptions': [
'/MP', # compile across multiple CPUs
],
},
'VCLinkerTool': {
'GenerateDebugInformation': 'true',
'RandomizedBaseAddress': 2, # enable ASLR
'DataExecutionPrevention': 2, # enable DEP
'AllowIsolation': 'true',
'SuppressStartupBanner': 'true',
'target_conditions': [
['_type=="executable"', {
'SubSystem': 1, # console executable
}],
],
},
},
'xcode_settings': {
'ALWAYS_SEARCH_USER_PATHS': 'NO',
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
# GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
'PREBINDING': 'NO', # No -Wl,-prebind
'USE_HEADERMAP': 'NO',
'WARNING_CFLAGS': [
'-Wall',
'-Wendif-labels',
'-W',
'-Wno-unused-parameter'
]
},
'conditions': [
['OS == "win"', {
'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
'defines': [
'WIN32',
# we don't want VC++ warning us about how dangerous C functions are.
'_CRT_SECURE_NO_DEPRECATE',
# ... or that C implementations shouldn't use POSIX names
'_CRT_NONSTDC_NO_DEPRECATE'
],
}],
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
'variables': {
'gcc_version%': '<!(python build/gcc_version.py)>)'
},
'cflags': [ '-Wall' ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
'conditions': [
[ 'host_arch != target_arch and target_arch=="ia32"', {
'cflags': [ '-m32' ],
'ldflags': [ '-m32' ]
}],
[ 'OS=="linux"', {
'cflags': [ '-ansi' ]
}],
[ 'visibility=="hidden" and gcc_version >= "4.0.0"', {
'cflags': [ '-fvisibility=hidden' ]
}],
]
}]
],
'target_conditions': [
['_type!="static_library"', {
'cflags': [ '-fPIC' ],
'xcode_settings': {
'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
# (Equivalent to -fPIC)
'OTHER_LDFLAGS': [ '-Wl,-search_paths_first' ]
}
}]
]
}
}

Some files were not shown because too many files have changed in this diff Show More