summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Gilli <julien.gilli@joyent.com>2015-03-16 14:26:55 -0700
committerJulien Gilli <julien.gilli@joyent.com>2015-03-16 14:26:55 -0700
commiteb2764a9452baa7cba2d98dc34fa00fc776b0a12 (patch)
tree0b8b36b6d72a840d89204067c69c3362dfc90e73
parent588c009781d84a523fd84bb5feb66fa074849427 (diff)
parent4332c77bf7fd5f780fcdac5cac24a876883d8840 (diff)
downloadnode-eb2764a9452baa7cba2d98dc34fa00fc776b0a12.tar.gz
Merge remote-tracking branch 'upstream/v0.10' into v0.12
Conflicts: AUTHORS ChangeLog deps/uv/ChangeLog deps/uv/build.mk deps/uv/config-unix.mk deps/uv/include/uv-private/uv-win.h deps/uv/src/unix/async.c deps/uv/src/unix/process.c deps/uv/src/version.c deps/uv/src/win/poll.c deps/uv/test/test-list.h deps/uv/uv.gyp lib/http.js src/node.js src/node_version.h
-rw-r--r--AUTHORS3
-rw-r--r--ChangeLog17
-rw-r--r--doc/api/fs.markdown53
-rw-r--r--lib/url.js4
-rw-r--r--test/simple/test-domain-top-level-error-handler-clears-stack.js41
-rw-r--r--test/simple/test-url.js8
6 files changed, 93 insertions, 33 deletions
diff --git a/AUTHORS b/AUTHORS
index e960831c4..f70c7be74 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -89,6 +89,7 @@ Brian Hammond
Brian McKenna
Brian Schroeder
Brian White
+Bruno Jouhier
Bryan Cantrill
C. Scott Ananian
CGavrila
@@ -401,6 +402,7 @@ Maxwell Krohn
Michael Axiak
Michael Bernstein
Michael Carter
+Michael Dawson
Michael Hart
Michael Jackson
Michael Kebe
@@ -652,6 +654,7 @@ Zarko Stankovic
Zoran Tomicic
ayanamist
fengmk2
+h7lin
haoxin
pflannery
pkcs
diff --git a/ChangeLog b/ChangeLog
index 33eb8dbe7..966dc330e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-2015.02.06, Version 0.12.0 (Stable)
+2015.02.06, Version 0.12.0 (Stable), 2b18916ff054309a07408719b62e2b6a4f1e056a
* npm: Upgrade to 2.5.1
@@ -948,6 +948,21 @@
* console: `console.dir()` bypasses inspect() methods (Nathan Rajlich)
+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.01.26, Version 0.10.36 (Stable), 09b482886bdd3d863c3d4e7d71264eac0daaf9e1
* openssl: update to 1.0.1l
diff --git a/doc/api/fs.markdown b/doc/api/fs.markdown
index a1727778e..4c0f9bf7e 100644
--- a/doc/api/fs.markdown
+++ b/doc/api/fs.markdown
@@ -92,7 +92,7 @@ to the completion callback.
## fs.renameSync(oldPath, newPath)
-Synchronous rename(2).
+Synchronous rename(2). Returns `undefined`.
## fs.ftruncate(fd, len, callback)
@@ -101,7 +101,7 @@ given to the completion callback.
## fs.ftruncateSync(fd, len)
-Synchronous ftruncate(2).
+Synchronous ftruncate(2). Returns `undefined`.
## fs.truncate(path, len, callback)
@@ -111,7 +111,7 @@ first argument. In this case, `fs.ftruncate()` is called.
## fs.truncateSync(path, len)
-Synchronous truncate(2).
+Synchronous truncate(2). Returns `undefined`.
## fs.chown(path, uid, gid, callback)
@@ -120,7 +120,7 @@ to the completion callback.
## fs.chownSync(path, uid, gid)
-Synchronous chown(2).
+Synchronous chown(2). Returns `undefined`.
## fs.fchown(fd, uid, gid, callback)
@@ -129,7 +129,7 @@ to the completion callback.
## fs.fchownSync(fd, uid, gid)
-Synchronous fchown(2).
+Synchronous fchown(2). Returns `undefined`.
## fs.lchown(path, uid, gid, callback)
@@ -138,7 +138,7 @@ to the completion callback.
## fs.lchownSync(path, uid, gid)
-Synchronous lchown(2).
+Synchronous lchown(2). Returns `undefined`.
## fs.chmod(path, mode, callback)
@@ -147,7 +147,7 @@ to the completion callback.
## fs.chmodSync(path, mode)
-Synchronous chmod(2).
+Synchronous chmod(2). Returns `undefined`.
## fs.fchmod(fd, mode, callback)
@@ -156,7 +156,7 @@ are given to the completion callback.
## fs.fchmodSync(fd, mode)
-Synchronous fchmod(2).
+Synchronous fchmod(2). Returns `undefined`.
## fs.lchmod(path, mode, callback)
@@ -167,7 +167,7 @@ Only available on Mac OS X.
## fs.lchmodSync(path, mode)
-Synchronous lchmod(2).
+Synchronous lchmod(2). Returns `undefined`.
## fs.stat(path, callback)
@@ -207,7 +207,7 @@ the completion callback.
## fs.linkSync(srcpath, dstpath)
-Synchronous link(2).
+Synchronous link(2). Returns `undefined`.
## fs.symlink(srcpath, dstpath[, type], callback)
@@ -220,7 +220,7 @@ Note that Windows junction points require the destination path to be absolute.
## fs.symlinkSync(srcpath, dstpath[, type])
-Synchronous symlink(2).
+Synchronous symlink(2). Returns `undefined`.
## fs.readlink(path, callback)
@@ -257,7 +257,7 @@ to the completion callback.
## fs.unlinkSync(path)
-Synchronous unlink(2).
+Synchronous unlink(2). Returns `undefined`.
## fs.rmdir(path, callback)
@@ -266,7 +266,7 @@ to the completion callback.
## fs.rmdirSync(path)
-Synchronous rmdir(2).
+Synchronous rmdir(2). Returns `undefined`.
## fs.mkdir(path[, mode], callback)
@@ -275,7 +275,7 @@ to the completion callback. `mode` defaults to `0777`.
## fs.mkdirSync(path[, mode])
-Synchronous mkdir(2).
+Synchronous mkdir(2). Returns `undefined`.
## fs.readdir(path, callback)
@@ -295,7 +295,7 @@ to the completion callback.
## fs.closeSync(fd)
-Synchronous close(2).
+Synchronous close(2). Returns `undefined`.
## fs.open(path, flags[, mode], callback)
@@ -356,19 +356,27 @@ the end of the file.
## fs.openSync(path, flags[, mode])
-Synchronous version of `fs.open()`.
+Synchronous version of `fs.open()`. Returns an integer representing the file
+descriptor.
## fs.utimes(path, atime, mtime, callback)
-## fs.utimesSync(path, atime, mtime)
Change file timestamps of the file referenced by the supplied path.
+## fs.utimesSync(path, atime, mtime)
+
+Synchronous version of `fs.utimes()`. Returns `undefined`.
+
+
## fs.futimes(fd, atime, mtime, callback)
-## fs.futimesSync(fd, atime, mtime)
Change the file timestamps of a file referenced by the supplied file
descriptor.
+## fs.futimesSync(fd, atime, mtime)
+
+Synchronous version of `fs.futimes()`. Returns `undefined`.
+
## fs.fsync(fd, callback)
Asynchronous fsync(2). No arguments other than a possible exception are given
@@ -376,7 +384,7 @@ to the completion callback.
## fs.fsyncSync(fd)
-Synchronous fsync(2).
+Synchronous fsync(2). Returns `undefined`.
## fs.write(fd, buffer, offset, length[, position], callback)
@@ -506,7 +514,7 @@ Example:
## fs.writeFileSync(filename, data[, options])
-The synchronous version of `fs.writeFile`.
+The synchronous version of `fs.writeFile`. Returns `undefined`.
## fs.appendFile(filename, data[, options], callback)
@@ -530,7 +538,7 @@ Example:
## fs.appendFileSync(filename, data[, options])
-The synchronous version of `fs.appendFile`.
+The synchronous version of `fs.appendFile`. Returns `undefined`.
## fs.watchFile(filename[, options], listener)
@@ -661,7 +669,8 @@ and handle the error when it's not there.
## fs.existsSync(path)
-Synchronous version of `fs.exists`.
+Synchronous version of `fs.exists()`. Returns `true` if the file exists,
+`false` otherwise.
`fs.existsSync()` will be deprecated.
diff --git a/lib/url.js b/lib/url.js
index 07a6c103a..ac712318b 100644
--- a/lib/url.js
+++ b/lib/url.js
@@ -639,8 +639,8 @@ Url.prototype.resolveObject = function(relative) {
// then it must NOT get a trailing slash.
var last = srcPath.slice(-1)[0];
var hasTrailingSlash = (
- (result.host || relative.host || srcPath.length > 1) &&
- (last === '.' || last === '..') || last === '');
+ (result.host || relative.host) && (last === '.' || last === '..') ||
+ last === '');
// strip single dots, resolve double dots to parent dir
// if the path tries to go above the root, `up` ends up > 0
diff --git a/test/simple/test-domain-top-level-error-handler-clears-stack.js b/test/simple/test-domain-top-level-error-handler-clears-stack.js
new file mode 100644
index 000000000..f95864da6
--- /dev/null
+++ b/test/simple/test-domain-top-level-error-handler-clears-stack.js
@@ -0,0 +1,41 @@
+// 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 assert = require('assert');
+var domain = require('domain');
+
+/*
+ * Make sure that the domains stack is cleared after a top-level domain
+ * error handler exited gracefully.
+ */
+var d = domain.create();
+
+d.on('error', function() {
+ process.nextTick(function() {
+ if (domain._stack.length !== 1) {
+ process.exit(1);
+ }
+ });
+});
+
+d.run(function() {
+ throw new Error('Error from domain');
+});
diff --git a/test/simple/test-url.js b/test/simple/test-url.js
index d0ddaf203..e81908a88 100644
--- a/test/simple/test-url.js
+++ b/test/simple/test-url.js
@@ -1178,14 +1178,6 @@ var relativeTests = [
['/foo/bar/baz/', 'quux/baz', '/foo/bar/baz/quux/baz'],
['/foo/bar/baz', '../../../../../../../../quux/baz', '/quux/baz'],
['/foo/bar/baz', '../../../../../../../quux/baz', '/quux/baz'],
- ['/foo', '.', '/'],
- ['/foo', '..', '/'],
- ['/foo/', '.', '/foo/'],
- ['/foo/', '..', '/'],
- ['/foo/bar', '.', '/foo/'],
- ['/foo/bar', '..', '/'],
- ['/foo/bar/', '.', '/foo/bar/'],
- ['/foo/bar/', '..', '/foo/'],
['foo/bar', '../../../baz', '../../baz'],
['foo/bar/', '../../../baz', '../baz'],
['http://example.com/b//c//d;p?q#blarg', 'https:#hash2', 'https:///#hash2'],