platform/upstream/nodejs.git
9 years agodoc: add silverwind as collaborator
Roman Reiss [Tue, 17 Mar 2015 18:24:31 +0000 (19:24 +0100)]
doc: add silverwind as collaborator

PR-URL: https://github.com/iojs/io.js/pull/1176
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
9 years agodoc: add jbergstroem as collaborator
Johan Bergström [Tue, 17 Mar 2015 17:52:48 +0000 (04:52 +1100)]
doc: add jbergstroem as collaborator

PR-URL: https://github.com/iojs/io.js/pull/1175
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agoconfigure: use gcc and g++ as CC and CXX defaults
Ben Noordhuis [Tue, 17 Mar 2015 15:36:36 +0000 (16:36 +0100)]
configure: use gcc and g++ as CC and CXX defaults

It matches what GYP's Makefile generator does and it should improve
compiler detection because cc and c++ are not always gcc and g++.

Fixes: https://github.com/iojs/io.js/issues/1173
PR-URL: https://github.com/iojs/io.js/pull/1174
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
9 years agodoc: fix typo in buffer module documentation
Alex Yursha [Tue, 17 Mar 2015 10:28:36 +0000 (13:28 +0300)]
doc: fix typo in buffer module documentation

PR-URL: https://github.com/iojs/io.js/pull/1169
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agobenchmark: add output format option [csv]
Brendan Ashworth [Tue, 10 Feb 2015 03:36:52 +0000 (19:36 -0800)]
benchmark: add output format option [csv]

This commit adds an `OUTPUT_FORMAT` environment variable option for
all benchmark tests that allow either 'csv' or 'default' output. Default
output has been left unchanged, and csv output prints out the csv
headers along with the csv formatted per-test output, each test also
seperated by a newline.

It can be used like the following:
$ OUTPUT_FORMAT=csv iojs benchmark/common.js http

Not specifying the OUTPUT_FORMAT env var will default to 'default'.
Specifying a bad value will throw an error.

PR-URL: https://github.com/iojs/io.js/pull/777
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agobenchmark: add plot_csv R graphing script
Brendan Ashworth [Tue, 10 Feb 2015 04:25:47 +0000 (20:25 -0800)]
benchmark: add plot_csv R graphing script

This commit adds a graphing script (in R) for graphing the CSV output
of a benchmark. It can be run like this:

```
$ OUTPUT_FORMAT=csv iojs benchmark/http/client-request-body.js >
data.csv
$ ./benchmark/plot_csv.R data.csv graph.png bytes type
```

This will graph the output to `graph.png`, using the output's `bytes`
value as X and the result value for each as Y. Output will be grouped
by `type`.

Running as the example yields a beautiful graph like this:
http://pbrd.co/1vBhUfy.

PR-URL: https://github.com/iojs/io.js/pull/777
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agov8: fix --max_old_space_size=4096 integer overflow
Ben Noordhuis [Mon, 9 Feb 2015 07:00:32 +0000 (23:00 -0800)]
v8: fix --max_old_space_size=4096 integer overflow

See https://code.google.com/p/v8/issues/detail?id=3857 for the bug
report and https://codereview.chromium.org/897543002 for the CL.

PR-URL: https://github.com/iojs/io.js/pull/1166
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agohttp: add flushHeaders and deprecate flush
Yosuke Furukawa [Sat, 14 Mar 2015 07:24:07 +0000 (16:24 +0900)]
http: add flushHeaders and deprecate flush

PR-URL: https://github.com/iojs/io.js/pull/1156
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Christian Tellnes <christian@tellnes.no>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
9 years agomake: remove node_dtrace from cpplint excludes
Julien Gilli [Mon, 17 Nov 2014 20:00:11 +0000 (12:00 -0800)]
make: remove node_dtrace from cpplint excludes

PR-URL: https://github.com/joyent/node/pull/8741
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agonet: use cached peername to resolve remote fields
James Hartig [Tue, 10 Mar 2015 20:48:19 +0000 (16:48 -0400)]
net: use cached peername to resolve remote fields

Allows socket.remote* properties to still be accessed even after the
socket is closed.

Fixes: https://github.com/joyent/node/issues/9287
PR-URL: https://github.com/joyent/node/pull/9366
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agodoc: fix '\\' typos on Windows
Steven Vercruysse [Sun, 15 Mar 2015 11:29:18 +0000 (12:29 +0100)]
doc: fix '\\' typos on Windows

This commit changes the Windows examples in path.markdown to
correctly display '\\'.

PR-URL: https://github.com/joyent/node/pull/9412
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agobuild: allow custom PackageMaker path
Julien Gilli [Wed, 11 Mar 2015 18:45:57 +0000 (11:45 -0700)]
build: allow custom PackageMaker path

Make PACKAGEMAKER customizable because PackageMaker is not necessarily
installed in /Developer on OSX anymore.

PR-URL: https://github.com/joyent/node/pull/9377
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
9 years agolib: remove broken NODE_MODULE_CONTEXTS feature
Ben Noordhuis [Mon, 16 Mar 2015 11:34:39 +0000 (12:34 +0100)]
lib: remove broken NODE_MODULE_CONTEXTS feature

This feature has no tests and has been broken for ages, see for example
https://github.com/iojs/io.js/pull/1160.  Don't bother fixing it, it's
pretty much broken by design and there can't be too many users because
it's almost undocumented.  A quick Google search suggests that it causes
more grief than joy to the few that do use it.  Remove it.

PR-URL: https://github.com/iojs/io.js/pull/1162
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agosrc: use Number::New() for heapTotal/heapUsed
Ben Noordhuis [Fri, 13 Mar 2015 20:54:40 +0000 (21:54 +0100)]
src: use Number::New() for heapTotal/heapUsed

With --max_old_space_size=12345 it's possible to create a JS heap that
is larger than what fits in an unsigned int so use Number::New() rather
than Integer::NewFromUnsigned().

Performance-wise, it doesn't matter much.  If V8 can fit the double in
a SMI, it will.

PR-URL: https://github.com/iojs/io.js/pull/1148
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: don't create js string twice on error
Ben Noordhuis [Fri, 13 Mar 2015 18:15:18 +0000 (19:15 +0100)]
src: don't create js string twice on error

Rewrite ErrnoException() so that it doesn't turn the file path into a
string twice.

PR-URL: https://github.com/iojs/io.js/pull/1148
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agopath: add type checking for path inputs
cjihrig [Sat, 14 Mar 2015 02:21:47 +0000 (22:21 -0400)]
path: add type checking for path inputs

This commit adds type checking of path inputs to exported methods
in the path module. The exception is _makeLong(), which seems to
explicitly support any data type.

Fixes: https://github.com/iojs/io.js/issues/1139
PR-URL: https://github.com/iojs/io.js/pull/1153
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com>
9 years agodoc: reflect new require('events') behaviour
Alex Yursha [Thu, 26 Feb 2015 21:47:35 +0000 (00:47 +0300)]
doc: reflect new require('events') behaviour

We don't need to do `require('events').EventEmitter` any longer.

PR-URL: https://github.com/iojs/io.js/pull/975
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com>
9 years agoquerystring: optimize parse and stringify
Brian White [Thu, 19 Feb 2015 14:53:04 +0000 (09:53 -0500)]
querystring: optimize parse and stringify

parse optimizations:

* Move try-catch to separate function to keep entire function from
being deoptimized.
* Use key array lookup instead of using hasOwnProperty.
* Avoid decoding known empty strings.
* Avoid possibly unnecessary switch to slower decoder for values if
key decoding throws.

stringify optimizations:

* Use manual loop for default encoder instead of encodeURIComponent.
* Use string concatenation instead of joining an array of strings.
* Avoid caching result of typeof.

PR-URL: https://github.com/iojs/io.js/pull/847
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agodeps: make node-gyp work with io.js
cjihrig [Fri, 27 Feb 2015 18:40:58 +0000 (13:40 -0500)]
deps: make node-gyp work with io.js

Every npm version bump requires a few patches to be floated on
node-gyp for io.js compatibility. These patches are found in
03d199276e21c1fa08d8df14eeb654c90cc5aa20,
5de334c23096492014a097ff487f07ad8eaee6d2, and
da730c76e98fb9fd18dac445dafbbec74d79f802. This commit squashes
them into a single commit.

PR-URL: https://github.com/iojs/io.js/pull/990
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agodeps: upgrade npm to 2.7.1
Forrest L Norvell [Fri, 13 Mar 2015 09:07:27 +0000 (02:07 -0700)]
deps: upgrade npm to 2.7.1

PR-URL: https://github.com/iojs/io.js/pull/1142
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
9 years agotls: re-enable `.writev()` on TLSWrap
Fedor Indutny [Sat, 14 Mar 2015 05:41:26 +0000 (22:41 -0700)]
tls: re-enable `.writev()` on TLSWrap

Fix the `parallel/test-tls-over-http-tunnel.js` on Windows by
re-enabling the accidentally disabled `.writev()` method on TLSWrap.

It appears that there is some subtle issue with shutdown timing and it
manifests itself when the chunks are written in separate packets. This
leads to concurrent `shutdown`/`destroy`, which breaks the test.

PR-URL: https://github.com/iojs/io.js/pull/1155
Reviewed-By: Bert Belder <bertbelder@gmail.com>
9 years agotls: fix leak on `DoWrite()` errors
Fedor Indutny [Sat, 14 Mar 2015 04:40:48 +0000 (21:40 -0700)]
tls: fix leak on `DoWrite()` errors

It is very unlikely to happen, but still the write request should be
disposed in case of immediate failure.

PR-URL: https://github.com/iojs/io.js/pull/1154
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agosrc: revert -r/--require flags
Chris Dickinson [Fri, 13 Mar 2015 21:57:11 +0000 (14:57 -0700)]
src: revert -r/--require flags

This reverts commit 7bde3f1a8f53d82992a8fed73e5f93159bb400b3.

The added test (test/parallel/test-preload.js) fails on Windows.

PR-URL: https://github.com/iojs/io.js/pull/1150
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
9 years agodoc: fix vm module examples
FangDun Cai [Fri, 13 Mar 2015 21:07:31 +0000 (05:07 +0800)]
doc: fix vm module examples

PR-URL: https://github.com/iojs/io.js/pull/1147
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agosrc: add -r/--require flags for preloading modules
Ali Ijaz Sheikh [Tue, 17 Feb 2015 22:37:37 +0000 (14:37 -0800)]
src: add -r/--require flags for preloading modules

-r/--require can be used to preload modules on node startup. The option
takes a single module name. The option can be repeated as necessary to
preload multiple modules.

This patch allows 'vendors' (such a cloud host) to inject functionality
that gets executed at application startup without requiring an explicit
require from the user's application. This can be useful to load vendor
specific application monitoring APIs transparently.

PR-URL: https://github.com/iojs/io.js/pull/881
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agotest: fix test-http-content-length
Jeremiah Senkpiel [Fri, 13 Mar 2015 19:26:27 +0000 (15:26 -0400)]
test: fix test-http-content-length

Previously the test did not allow the last request to complete.

Fixes: https://github.com/iojs/io.js/pull/1137
PR-URL: https://github.com/iojs/io.js/pull/1145
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Bert Belder <bertbelder@gmail.com>
9 years agocrypto: add deprecated ValiCert CA for cross cert
Shigeki Ohtsu [Fri, 13 Mar 2015 00:55:29 +0000 (09:55 +0900)]
crypto: add deprecated ValiCert CA for cross cert

The host of melissadata.net has a cross root certification between
Starfield Class 2 and ValiCert Class 2. OpenSSL-1.0.1 only looks up
a cert chain to the deprecated ValiCert Class 2 CA and causes
untrusted error. We add it for a short-term remedy and it is to be
removed after upgrading OpenSSSL-1.0.2 and applying private patches
to support alternative cert chains.
See #402 and #589.

Fixes: https://github.com/iojs/io.js/issues/923
PR-URL: https://github.com/iojs/io.js/pull/1135
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agotest: fix ext commands to be double quoted
Shigeki Ohtsu [Thu, 12 Mar 2015 01:16:26 +0000 (10:16 +0900)]
test: fix ext commands to be double quoted

Paths used on the Windows command line need to be enclosed in double
quotes, or they'll be parsed incorrectly when there are spaces in the
path.

PR-URL: https://github.com/iojs/io.js/pull/1122
Reviewed-by: Bert Belder <bertbelder@gmail.com>
9 years agotest: add test for reading a large file through a pipe
Santiago Gimeno [Fri, 6 Mar 2015 13:08:29 +0000 (14:08 +0100)]
test: add test for reading a large file through a pipe

PR-URL: https://github.com/iojs/io.js/pull/1074
Reviewed-By: Bert Belder <bertbelder@gmail.com>
9 years agofs: use stat.st_size only to read regular files
Santiago Gimeno [Thu, 5 Mar 2015 17:33:38 +0000 (18:33 +0100)]
fs: use stat.st_size only to read regular files

Using st_size to read non-regular files can lead to not reading all the
data.

PR-URL: https://github.com/iojs/io.js/pull/1074
Reviewed-By: Bert Belder <bertbelder@gmail.com>
9 years agotest: fix readfile-zero-byte-liar test
Santiago Gimeno [Thu, 12 Mar 2015 09:46:15 +0000 (10:46 +0100)]
test: fix readfile-zero-byte-liar test

PR-URL: https://github.com/iojs/io.js/pull/1074
Reviewed-By: Bert Belder <bertbelder@gmail.com>
9 years agosrc: do not leak handles on debug and exit
Fedor Indutny [Thu, 12 Mar 2015 21:19:16 +0000 (14:19 -0700)]
src: do not leak handles on debug and exit

Ensure HandleScope is created before creating any new handles (which
`Context::Scope` and `Environment::GetCurrent` does).

PR-URL: https://github.com/iojs/io.js/pull/1133
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Brian White <mscdex@mscdex.net>
9 years agov8: fix build on solaris platforms
Johan Bergström [Fri, 6 Mar 2015 03:50:32 +0000 (14:50 +1100)]
v8: fix build on solaris platforms

`v8/3c7e4403` introduced a different cast which broke building on
Illumos. Revert to previous behavior for V8_OS_SOLARIS. Found on
SmartOS while building with gcc 4.9.0.

V8-Issue: https://code.google.com/p/v8/issues/detail?id=3935
V8-Patch: https://codereview.chromium.org/990063002
PR-URL: https://github.com/iojs/io.js/pull/1079
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agobuild: fix incorrect set in vcbuild.bat
Bert Belder [Wed, 11 Mar 2015 19:01:31 +0000 (12:01 -0700)]
build: fix incorrect set in vcbuild.bat

Thanks Shigeki Ohtsu for catching this.

9 years agobuffer: align chunks on 8-byte boundary
Fedor Indutny [Wed, 11 Mar 2015 14:17:53 +0000 (07:17 -0700)]
buffer: align chunks on 8-byte boundary

When slicing global pool - ensure that the underlying buffer's data ptr
is 8-byte alignment to do not ruin expectations of 3rd party C++ addons.

NOTE: 0.10 node.js always returned aligned pointers and io.js should do
this too for compatibility.

PR-URL: https://github.com/iojs/io.js/pull/1126
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Bert Belder <bertbelder@gmail.com>
9 years agodoc: make tools/update-authors.sh cross-platform
Ben Noordhuis [Wed, 11 Mar 2015 01:50:45 +0000 (02:50 +0100)]
doc: make tools/update-authors.sh cross-platform

And by cross-platform I mean Linux and OS X.  The awk script is not
compatible with BSD awk, that's why this commit changes it to perl.

Update the .mailmap to remove some duplicates and regenerate the
AUTHORS file.

Fixes: https://github.com/iojs/io.js/issues/1120
PR-URL: https://github.com/iojs/io.js/pull/1121
Reviewed-By: Rod Vagg <rod@vagg.org>
9 years agohttps: don't overwrite servername option
skenqbx [Mon, 9 Mar 2015 20:00:24 +0000 (21:00 +0100)]
https: don't overwrite servername option

PR-URL: https://github.com/iojs/io.js/pull/1110
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
9 years agodoc: add Malte-Thorben Bruns to .mailmap
Ben Noordhuis [Tue, 10 Mar 2015 15:18:24 +0000 (16:18 +0100)]
doc: add Malte-Thorben Bruns to .mailmap

PR-URL: https://github.com/iojs/io.js/pull/1118
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agolib: allow server.listen({ port: "1234" })
Ben Noordhuis [Tue, 10 Mar 2015 11:33:38 +0000 (12:33 +0100)]
lib: allow server.listen({ port: "1234" })

net.connect() accepts `{ port: "1234" }` (i.e. a string) as of commit
9d2b89d06 ("net: allow port 0 in connect()") but net.Server#listen()
did not, creating a minor inconsistency.  This commit rectifies that.

Fixes: https://github.com/iojs/io.js/issues/1111
PR-URL: https://github.com/iojs/io.js/pull/1116
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agodoc: move checkServerIdentity option to tls.connect()
skenqbx [Mon, 9 Mar 2015 13:46:22 +0000 (14:46 +0100)]
doc: move checkServerIdentity option to tls.connect()

PR-URL: https://github.com/iojs/io.js/pull/1107
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
9 years agodoc: fix missing periods in url.markdown
Ryuichi Okumura [Tue, 10 Mar 2015 11:46:59 +0000 (20:46 +0900)]
doc: fix missing periods in url.markdown

PR-URL: https://github.com/iojs/io.js/pull/1115
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
9 years agotls_wrap: proxy handle methods in prototype
Fedor Indutny [Mon, 9 Mar 2015 14:50:29 +0000 (10:50 -0400)]
tls_wrap: proxy handle methods in prototype

Set proxied methods wrappers in `TLSWrap` prototype instead of doing it
on every socket allocation. Should speed up things a bit and will
certainly make heapsnapshot less verbose.

PR-URL: https://github.com/iojs/io.js/pull/1108
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agobuffer: Don't assign .parent if none exists
Trevor Norris [Mon, 9 Mar 2015 18:28:31 +0000 (12:28 -0600)]
buffer: Don't assign .parent if none exists

The .parent property of the allocated buffer should remain undefined in
the case that it's not a slice. Also included test to verify this.

PR-URL: https://github.com/iojs/io.js/pull/1109
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agoWorking on v1.5.2
Rod Vagg [Mon, 9 Mar 2015 18:03:44 +0000 (11:03 -0700)]
Working on v1.5.2

9 years ago2015-03-09 io.js v1.5.1 Release v1.5.1
Rod Vagg [Mon, 9 Mar 2015 17:58:40 +0000 (10:58 -0700)]
2015-03-09 io.js v1.5.1 Release

Notable changes:

* tls: The reported TLS memory leak has been at least partially
  resolved via various commits in this release. Current testing indicated
  that there may still be some leak problems. Progress being tracked at:
  https://github.com/iojs/io.js/issues/1075
* http: Fixed an error reported at
  https://github.com/joyent/node/issues/9348 and
  https://github.com/npm/npm/issues/7349
  Pending data was not being fully read upon an 'error' event leading to
  an assertion failure on socket.destroy().
  (Fedor Indutny) https://github.com/iojs/io.js/pull/1103

9 years agobenchmark: chunky http client benchmark variation
Rudi Cilibrasi [Tue, 30 Dec 2014 06:40:08 +0000 (22:40 -0800)]
benchmark: chunky http client benchmark variation

PR-URL: https://github.com/iojs/io.js/pull/228
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agohttp_client: ensure empty socket on error
Fedor Indutny [Mon, 9 Mar 2015 00:30:01 +0000 (20:30 -0400)]
http_client: ensure empty socket on error

Read all pending data out of the socket on `error` event and ensure that
no `data`/`end` handlers will be invoked on `socket.destroy()`.
Otherwise following assertion happens:

    AssertionError: null == true
        at TLSSocket.socketOnData (_http_client.js:308:3)
        at TLSSocket.emit (events.js:107:17)
        at TLSSocket.Readable.read (_stream_readable.js:373:10)
        at TLSSocket.socketCloseListener (_http_client.js:229:10)
        at TLSSocket.emit (events.js:129:20)
        at TCP.close (net.js:476:12)

Fix: https://github.com/joyent/node/issues/9348
PR-URL: https://github.com/iojs/io.js/pull/1103
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Nicu Micleușanu <micnic90@gmail.com>
9 years agonode_crypto_bio: adjust external memory size
Fedor Indutny [Fri, 6 Mar 2015 19:58:24 +0000 (14:58 -0500)]
node_crypto_bio: adjust external memory size

Adjust V8's external memory size when allocating buffers for TLS data to
ensure that V8 has enough information to trigger the GC at right time.

PR-URL: https://github.com/iojs/io.js/pull/1085
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agodoc: fix confusion markdown in util.markdown
Yazhong Liu [Sun, 8 Mar 2015 06:26:15 +0000 (14:26 +0800)]
doc: fix confusion markdown in util.markdown

PR-URL: https://github.com/iojs/io.js/pull/1097
Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com>
9 years agofs: fix .write() not coercing non-string values
Jeremiah Senkpiel [Sun, 8 Mar 2015 20:19:56 +0000 (16:19 -0400)]
fs: fix .write() not coercing non-string values

Fixes: https://github.com/iojs/io.js/issues/1098
PR-URL: https://github.com/iojs/io.js/pull/1102
Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com>
9 years agourl: remove redundant assignment in url.parse
Alex Kocharin [Sun, 8 Mar 2015 01:11:37 +0000 (04:11 +0300)]
url: remove redundant assignment in url.parse

PR-URL: https://github.com/iojs/io.js/pull/1095
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Nicu Micleușanu <micnic90@gmail.com>
9 years agostream_base: WriteWrap::New/::Dispose
Fedor Indutny [Sat, 7 Mar 2015 21:42:02 +0000 (16:42 -0500)]
stream_base: WriteWrap::New/::Dispose

Encapsulate allocation/disposal of `WriteWrap` instances into the
`WriteWrap` class itself.

PR-URL: https://github.com/iojs/io.js/pull/1090
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agotls: do not leak WriteWrap objects
Fedor Indutny [Sat, 7 Mar 2015 16:41:22 +0000 (11:41 -0500)]
tls: do not leak WriteWrap objects

Kill WriteWrap instances that are allocated in `tls_wrap.cc` internally.

Fix: https://github.com/iojs/io.js/issues/1075
PR-URL: https://github.com/iojs/io.js/pull/1090
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agodoc: update clang version prerequisite
Brendan Ashworth [Sat, 7 Mar 2015 22:41:44 +0000 (14:41 -0800)]
doc: update clang version prerequisite

See commit `4877ec0`, where it now warns on a clang++ version older than
3.4.

PR-URL: https://github.com/iojs/io.js/pull/1094
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agosrc: fix memory leak in fs.writeSync error path
Ben Noordhuis [Sat, 7 Mar 2015 18:08:41 +0000 (19:08 +0100)]
src: fix memory leak in fs.writeSync error path

The SYNC_CALL macro returns on error, bypassing the delete[] call.

Mea culpa, it looks like I introduced this memory leak back in 2013,
in commit d2b80b8a ("src: clean up FSReqWrap").

PR-URL: https://github.com/iojs/io.js/pull/1092
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: fix mismatched delete[] in src/node_file.cc
Ben Noordhuis [Sat, 7 Mar 2015 17:24:27 +0000 (18:24 +0100)]
src: fix mismatched delete[] in src/node_file.cc

Fix a bad delete of a pointer that was allocated with placement new.
Casting the pointer was not the right solution because there was at
least one non-placement new constructor call.

This commit rewrites FSReqWrap to be more explicit about ownership of
the auxiliary data and removes a number of egregious const_casts.
The ASYNC_DEST_CALL macro also gets significantly slimmed down.

PR-URL: https://github.com/iojs/io.js/pull/1092
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agodoc: replace article "an" with "a" in net docs
Evan Lucas [Sat, 7 Mar 2015 18:37:20 +0000 (12:37 -0600)]
doc: replace article "an" with "a" in net docs

PR-URL: https://github.com/iojs/io.js/pull/1093
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agocrypto: fix leak in SafeX509ExtPrint
Fedor Indutny [Sat, 7 Mar 2015 03:51:03 +0000 (22:51 -0500)]
crypto: fix leak in SafeX509ExtPrint

`ASN1_item_d2i`'s return value must be freed by the owner.

Fix: https://github.com/iojs/io.js/issues/1075
PR-URL: https://github.com/iojs/io.js/pull/1087
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agosrc: add missing Context::Scope
Ben Noordhuis [Fri, 6 Mar 2015 05:25:28 +0000 (06:25 +0100)]
src: add missing Context::Scope

Add a Context::Scope that was overlooked in commit 583a868
("stream_wrap: add HandleScope's in uv callbacks").

PR-URL: https://github.com/iojs/io.js/pull/1084
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agoWorking on v1.5.1
Rod Vagg [Fri, 6 Mar 2015 22:04:22 +0000 (14:04 -0800)]
Working on v1.5.1

9 years ago2015-03-06 io.js v1.5.0 Release v1.5.0
Rod Vagg [Fri, 6 Mar 2015 21:59:02 +0000 (13:59 -0800)]
2015-03-06 io.js v1.5.0 Release

Notable changes:

* buffer: New `Buffer#indexOf()` method, modelled off `Array#indexOf()`.
  Accepts a String, Buffer or a Number. Strings are interpreted as UTF8.
  (Trevor Norris) https://github.com/iojs/io.js/pull/561
* fs: `options` object properties in `'fs'` methods no longer perform a
  `hasOwnProperty()` check, thereby allowing options objects to have
  prototype properties that apply. (Jonathan Ong)
  https://github.com/iojs/io.js/pull/635
* tls: A likely TLS memory leak was reported by PayPal. Some of the recent
  changes in stream_wrap appear to be to blame. The initial fix is in
  https://github.com/iojs/io.js/pull/1078, you can track the progress
  toward closing the leak at
  https://github.com/iojs/io.js/issues/1075 (Fedor Indutny).
* npm: Upgrade npm to 2.7.0. See npm CHANGELOG.md:
  https://github.com/npm/npm/blob/master/CHANGELOG.md#v270-2015-02-26
  for details including why this is a semver-minor when it could have
  been semver-major.
* TC: Colin Ihrig (@cjihrig) resigned from the TC due to his desire to do
  more code and fewer meetings.

9 years agodeps: make node-gyp work with io.js
cjihrig [Fri, 27 Feb 2015 18:40:58 +0000 (13:40 -0500)]
deps: make node-gyp work with io.js

Every npm version bump requires a few patches to be floated on
node-gyp for io.js compatibility. These patches are found in
03d199276e21c1fa08d8df14eeb654c90cc5aa20,
5de334c23096492014a097ff487f07ad8eaee6d2, and
da730c76e98fb9fd18dac445dafbbec74d79f802. This commit squashes
them into a single commit.

PR-URL: https://github.com/iojs/io.js/pull/990
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agodeps: upgrade npm to 2.7.0
Forrest L Norvell [Fri, 6 Mar 2015 08:57:32 +0000 (02:57 -0600)]
deps: upgrade npm to 2.7.0

PR-URL: https://github.com/iojs/io.js/pull/1080
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agotls_wrap: do not hold persistent ref to parent
Fedor Indutny [Fri, 6 Mar 2015 01:27:58 +0000 (20:27 -0500)]
tls_wrap: do not hold persistent ref to parent

Hold non-persistent reference in JS, rather than in C++ to avoid cycles.

PR-URL: https://github.com/iojs/io.js/pull/1078
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agojs_stream: fix leak of instances
Fedor Indutny [Fri, 6 Mar 2015 01:26:12 +0000 (20:26 -0500)]
js_stream: fix leak of instances

Don't forget to call `MakeWeak` to ensure that instance objects are
garbage collectable.

PR-URL: https://github.com/iojs/io.js/pull/1078
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agostream_wrap: add HandleScope's in uv callbacks
Fedor Indutny [Thu, 5 Mar 2015 23:26:01 +0000 (18:26 -0500)]
stream_wrap: add HandleScope's in uv callbacks

Ensure that no handles will leak into global HandleScope by adding
HandleScope's in all JS-calling libuv callbacks in `stream_wrap.cc`.

Fix: https://github.com/iojs/io.js/issues/1075
PR-URL: https://github.com/iojs/io.js/pull/1078
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agobenchmark: fix `wrk` check
Brian White [Thu, 5 Mar 2015 22:12:17 +0000 (17:12 -0500)]
benchmark: fix `wrk` check

PR-URL: https://github.com/iojs/io.js/pull/1076
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agobuild: remove mdb from io.js
Johan Bergström [Mon, 2 Mar 2015 03:29:31 +0000 (14:29 +1100)]
build: remove mdb from io.js

After upgrading to a newer v8 mdb is pretty much broken - even if using
the latest updates from nodejs. If nodejs decides to update their v8 we
can give it another go, but for now it's better to remove it than have
it in our tree unsupported.

PR-URL: https://github.com/iojs/io.js/pull/1023
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Rod Vagg <rod@vagg.org>
9 years agohttp: send Content-Length when possible
Christian Tellnes [Tue, 3 Mar 2015 20:01:26 +0000 (21:01 +0100)]
http: send Content-Length when possible

This changes the behavior for http to send send a Content-Length header
instead of using chunked encoding when we know the size of the body when
sending the headers.

Fixes: https://github.com/iojs/io.js/issues/1044
PR-URL: https://github.com/iojs/io.js/pull/1062
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Brian White <mscdex@mscdex.net>
9 years agosrc: fix ucs-2 buffer encoding regression
Ben Noordhuis [Tue, 3 Mar 2015 14:44:54 +0000 (15:44 +0100)]
src: fix ucs-2 buffer encoding regression

StringBytes::Write() did a plain memcpy() when is_extern is true but
that's wrong when the source is a two-byte string and the destination
a one-byte or UTF-8 string.

The impact is limited to strings > 1,031,913 bytes because those are
normally the only strings that are externalized, although the use of
the 'externalize strings' extension (--expose_externalize_string) can
also trigger it.

This commit also cleans up the bytes versus characters confusion in
StringBytes::Write() because that was closely intertwined with the
UCS-2 encoding regression.  One wasn't fixable without the other.

Fixes: https://github.com/iojs/io.js/issues/1024
Fixes: https://github.com/joyent/node/issues/8683
PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: fix external string length calculation
Ben Noordhuis [Tue, 3 Mar 2015 13:46:16 +0000 (14:46 +0100)]
src: fix external string length calculation

Make StringBytes::GetExternalParts() return the byte length for two-byte
strings, not the character length.  Its callers operate on bytes, not
characters.

This also fixes StringBytes::Size() reporting only half of the actual
number of bytes for external two-byte strings.

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agotest: simplify parallel/test-stringbytes-external
Ben Noordhuis [Tue, 3 Mar 2015 15:07:26 +0000 (16:07 +0100)]
test: simplify parallel/test-stringbytes-external

Make the algorithm that creates the big input strings a little easier
to comprehend.  No functional changes, the string lengths are unchanged.

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: rename confusingly named local variable
Ben Noordhuis [Tue, 3 Mar 2015 14:20:54 +0000 (15:20 +0100)]
src: rename confusingly named local variable

Rename `val_` to `string`.  The underscore suffix is normally reserved
for data members, not locals, and it's not a great name in the first
place.

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: simplify node::Utf8Value()
Ben Noordhuis [Tue, 3 Mar 2015 14:16:07 +0000 (15:16 +0100)]
src: simplify node::Utf8Value()

* Remove kStorageSize constant.

* Remove superfluous local variable and reinterpret_cast.

* Reorder data members so the length field and data pointer
  (if not the data itself) fit in a single cache line.

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: remove NODE_INVALID_UTF8 environment variable
Ben Noordhuis [Tue, 3 Mar 2015 14:09:58 +0000 (15:09 +0100)]
src: remove NODE_INVALID_UTF8 environment variable

Introduced in joyent/node v0.10 as a backwards compatibility measure.
It's an ugly hack and allowing invalid UTF-8 is not a good idea in the
first place, remove it.

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: fix gc heuristic for external twobyte strings
Ben Noordhuis [Tue, 3 Mar 2015 00:42:18 +0000 (01:42 +0100)]
src: fix gc heuristic for external twobyte strings

Large external two-byte strings reported their character length instead
of their byte length, throwing off the garbage collector heuristic by
a factor of two.

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: remove unused code
Ben Noordhuis [Tue, 3 Mar 2015 00:37:59 +0000 (01:37 +0100)]
src: remove unused code

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: extract node env init out of process init
Petka Antonov [Tue, 3 Mar 2015 20:25:47 +0000 (22:25 +0200)]
src: extract node env init out of process init

PR-URL: https://github.com/iojs/io.js/pull/980
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
9 years agotest: don't spawn child processes in domain test
Ben Noordhuis [Thu, 26 Feb 2015 20:54:09 +0000 (21:54 +0100)]
test: don't spawn child processes in domain test

Make parallel/test-domain-abort-on-uncaught a little easier to debug,
make it execute the tests in the same process instead of each test in
a separate child process.

PR-URL: https://github.com/iojs/io.js/pull/974
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agosrc: fix -Wempty-body compiler warnings
Ben Noordhuis [Thu, 26 Feb 2015 20:34:03 +0000 (21:34 +0100)]
src: fix -Wempty-body compiler warnings

Turn counter macros into no-op instructions when counters are disabled.
Evaluating to nothing makes gcc complain when the macro is used in a
conditional.  Fixes the following warning:

    ../src/tls_wrap.cc:320:5: warning:
    suggest braces around empty body in an 'if' statement [-Wempty-body]
         NODE_COUNT_NET_BYTES_SENT(write_size_);
         ^

PR-URL: https://github.com/iojs/io.js/pull/974
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agobuild: add basic mips/mipsel support
Ben Noordhuis [Tue, 3 Mar 2015 20:55:59 +0000 (21:55 +0100)]
build: add basic mips/mipsel support

Extend the configure script so that it knows how to generate build files
for mips and mipsel.  Actually building io.js is pending MIPS buildbots.

PR-URL: https://github.com/iojs/io.js/pull/1045
Reviewed-By: Rod Vagg <rod@vagg.org>
9 years agolib: avoid .toLowerCase() call in Buffer#write()
Ben Noordhuis [Wed, 4 Mar 2015 00:09:33 +0000 (01:09 +0100)]
lib: avoid .toLowerCase() call in Buffer#write()

Avoid a costly String#toLowerCase() call in Buffer#write() in the
common case, i.e., that the string is already lowercase.  Reduces
the running time of the following benchmark by about 40%:

    for (var b = Buffer(1), i = 0; i < 25e6; ++i) b.write('x', 'ucs2');

PR-URL: https://github.com/iojs/io.js/pull/1048
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agolib: hand-optimize Buffer constructor
Ben Noordhuis [Tue, 3 Mar 2015 23:50:30 +0000 (00:50 +0100)]
lib: hand-optimize Buffer constructor

The Buffer constructor is used pervasively throughout io.js, yet it was
one of the most unwieldy functions in core.  This commit breaks up the
constructor into several small functions in a way that makes V8 happy.

About 8-10% CPU time was attributed to the constructor function before
in buffer-heavy benchmarks.  That pretty much drops to zero now because
V8 can now easily inline it at the call site.  It shortens the running
time of the following simple benchmark by about 15%:

    for (var i = 0; i < 25e6; ++i) new Buffer(1);

And about 8% from this benchmark:

    for (var i = 0; i < 1e7; ++i) new Buffer('x', 'ucs2');

PR-URL: https://github.com/iojs/io.js/pull/1048
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agotty: do not add `shutdown` method to handle
Fedor Indutny [Thu, 5 Mar 2015 16:04:00 +0000 (11:04 -0500)]
tty: do not add `shutdown` method to handle

UV_TTY does not support `uv_shutdown()` so adding this method in
StreamBase will cause an `abort()` in C land.

Fix: https://github.com/iojs/io.js/issues/1068
PR-URL: https://github.com/iojs/io.js/pull/1073
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
9 years agonet: allow port 0 in connect()
cjihrig [Mon, 23 Feb 2015 16:23:53 +0000 (11:23 -0500)]
net: allow port 0 in connect()

The added validation allows non-negative numbers and numeric
strings. All other values result in a thrown exception.

Fixes: https://github.com/joyent/node/issues/9194
PR-URL: https://github.com/joyent/node/pull/9268
Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: James M Snell <jasnell@users.noreply.github.com>
9 years agobuffer: reword Buffer.concat error message
Chris Dickinson [Fri, 14 Nov 2014 00:55:16 +0000 (16:55 -0800)]
buffer: reword Buffer.concat error message

this brings the error messaging in line with
other node TypeError messages.

Fixes: https://github.com/joyent/node/issues/7766
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>
9 years agowin,test: fix test-stdin-from-file
Bert Belder [Thu, 5 Mar 2015 02:11:06 +0000 (03:11 +0100)]
win,test: fix test-stdin-from-file

The test-stdin-from-from-file test runs a subprocess that verifies stdin
can be piped from a file.

The subprocess additionally attempts to verify that the file descriptor
for stdin never gets closed. It used to do this by creating a TCP server
and asserting that the associated file descriptor is greater than two.
However this strategy doesn't work on windows, because servers don't
have an associated file descriptor. With this patch an ordinary file is
opened instead of creating a server.

PR: https://github.com/iojs/io.js/pull/1067
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Nikolai Vavilov <vvnicholas@gmail.com>
9 years agofs: remove unnecessary usage of .hasOwnProperty()
Jonathan Ong [Wed, 28 Jan 2015 04:18:08 +0000 (20:18 -0800)]
fs: remove unnecessary usage of .hasOwnProperty()

PR-URL: https://github.com/iojs/io.js/pull/635
Reviewed-By: Vladimir Kurchatkin <vladimir.kurchatkin@gmail.com>
9 years agotest: adds a test for undefined value in setHeader
Ken Perkins [Thu, 26 Feb 2015 18:36:40 +0000 (10:36 -0800)]
test: adds a test for undefined value in setHeader

As a result of 979d0ca8 there is a new check for undefined values on
OutgoingMessage.setHeader. This commit introduces a test for this case.

PR-URL: https://github.com/iojs/io.js/pull/970
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com>
9 years agobenchmark: check for wrk ahead of running benchmarks
Johan Bergström [Fri, 27 Feb 2015 02:37:46 +0000 (13:37 +1100)]
benchmark: check for wrk ahead of running benchmarks

PR-URL: https://github.com/iojs/io.js/pull/982
Reviewed-By: Rod Vagg <rod@vagg.org>
9 years agobuild: remove tools/wrk from the tree
Johan Bergström [Thu, 26 Feb 2015 23:00:07 +0000 (10:00 +1100)]
build: remove tools/wrk from the tree

wrk is an optional tool that some of the http benchmarks uses. The removal
doesn't affect any users. Developers are assumed to install it before running
the tests.

This change reduces the tarball by 5%

PR-URL: https://github.com/iojs/io.js/pull/982
Reviewed-By: Rod Vagg <rod@vagg.org>
9 years agoevents: optimize listener array cloning
Brian White [Thu, 5 Mar 2015 03:21:47 +0000 (22:21 -0500)]
events: optimize listener array cloning

This both switches to a single algorithm for array cloning and also
speeds up (by ~100% in the ee-listeners-many benchmark) the
"many elements"  case that was previously handled by
`array.slice()`.

PR-URL: https://github.com/iojs/io.js/pull/1050
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Julian Duque <julianduquej@gmail.com>
9 years agotest: split parts out of host-headers test into its own test
Johan Bergström [Wed, 4 Mar 2015 22:36:47 +0000 (09:36 +1100)]
test: split parts out of host-headers test into its own test

this makes the separation between http and https testing cleaner

PR-URL: https://github.com/iojs/io.js/pull/1049
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
9 years agotest: refactor all tests that depends on crypto
Johan Bergström [Wed, 4 Mar 2015 01:11:21 +0000 (12:11 +1100)]
test: refactor all tests that depends on crypto

we had a few ways versions of looking for support before executing a test. this
commit unifies them as well as add the check for all tests that previously
lacked them. found by running `./configure --without-ssl && make test`. also,
produce tap skip output if the test is skipped.

PR-URL: https://github.com/iojs/io.js/pull/1049
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
9 years agotest: check for openssl cli and provide path if it exists
Johan Bergström [Wed, 4 Mar 2015 01:09:07 +0000 (12:09 +1100)]
test: check for openssl cli and provide path if it exists

the previous version checked if io.js was compiled with openssl support which
isn't really relevant since we're starting a http server. we on the other hand
need an openssl-cli which may or may not exist.

PR-URL: https://github.com/iojs/io.js/pull/1049
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
9 years agotest: remove unused https imports
Johan Bergström [Wed, 4 Mar 2015 00:40:20 +0000 (11:40 +1100)]
test: remove unused https imports

PR-URL: https://github.com/iojs/io.js/pull/1049
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
9 years agotest: introduce a helper that checks if crypto is available
Johan Bergström [Wed, 4 Mar 2015 00:36:07 +0000 (11:36 +1100)]
test: introduce a helper that checks if crypto is available

since this applies to tls and https (among other things), it'll be used
for those tests as well. if we decouple the build system to somehow support
crypto but not tls, we could refine this.

PR-URL: https://github.com/iojs/io.js/pull/1049
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
9 years agotest: don't assume process.versions.openssl always is available
Johan Bergström [Wed, 4 Mar 2015 00:35:56 +0000 (11:35 +1100)]
test: don't assume process.versions.openssl always is available

PR-URL: https://github.com/iojs/io.js/pull/1049
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
9 years agobuffer: add indexOf() method
Trevor Norris [Thu, 22 Jan 2015 23:44:13 +0000 (15:44 -0800)]
buffer: add indexOf() method

Add Buffer#indexOf(). Support strings, numbers and other Buffers. Also
included docs and tests.

Special thanks to Sam Rijs <srijs@airpost.net> for first proposing this
change.

PR-URL: https://github.com/iojs/io.js/pull/561
Reviewed-by: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agourl: throw for invalid values to url.format
Christian Tellnes [Tue, 3 Mar 2015 03:41:07 +0000 (04:41 +0100)]
url: throw for invalid values to url.format

`'use strict'` changes the behavior for `Function.prototype.call` when
the context is `undefined`. In earlier versions of node the value
`undefined` would make `url.format` look for fields in the global scope.

The docs states that `url.format` takes a parsed URL object and returns
a formatted URL string. So with this change it will now throw for other
values.

The exception is if the input is a string. Then it will call `url.parse`
on the string and then format it. The reason for that is that you can
call `url.format` on strings to clean up potentially wonky urls.

Fixes: https://github.com/iojs/io.js/issues/1033
PR-URL: https://github.com/iojs/io.js/pull/1036
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Julian Duque <julianduquej@gmail.com>