From 326746458602d0bd313bc90e209e6818f7320905 Mon Sep 17 00:00:00 2001 From: isaacs Date: Tue, 19 Feb 2013 14:01:23 -0800 Subject: [PATCH 01/14] blog: v0.9.10 --- doc/blog/release/v0.9.10.md | 84 +++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 doc/blog/release/v0.9.10.md diff --git a/doc/blog/release/v0.9.10.md b/doc/blog/release/v0.9.10.md new file mode 100644 index 00000000000..d0454bf55b0 --- /dev/null +++ b/doc/blog/release/v0.9.10.md @@ -0,0 +1,84 @@ +category: release +date: Tue Feb 19 14:00:08 PST 2013 +slug: node-v0-9-10-unstable +title: Node v0.9.10 (Unstable) +version: 0.9.10 + +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) + + +Source Code: http://nodejs.org/dist/v0.9.10/node-v0.9.10.tar.gz + +Macintosh Installer (Universal): http://nodejs.org/dist/v0.9.10/node-v0.9.10.pkg + +Windows Installer: http://nodejs.org/dist/v0.9.10/node-v0.9.10-x86.msi + +Windows x64 Installer: http://nodejs.org/dist/v0.9.10/x64/node-v0.9.10-x64.msi + +Windows x64 Files: http://nodejs.org/dist/v0.9.10/x64/ + +Linux 32-bit Binary: http://nodejs.org/dist/v0.9.10/node-v0.9.10-linux-x86.tar.gz + +Linux 64-bit Binary: http://nodejs.org/dist/v0.9.10/node-v0.9.10-linux-x64.tar.gz + +Solaris 32-bit Binary: http://nodejs.org/dist/v0.9.10/node-v0.9.10-sunos-x86.tar.gz + +Solaris 64-bit Binary: http://nodejs.org/dist/v0.9.10/node-v0.9.10-sunos-x64.tar.gz + +Other release files: http://nodejs.org/dist/v0.9.10/ + +Website: http://nodejs.org/docs/v0.9.10/ + +Documentation: http://nodejs.org/docs/v0.9.10/api/ + +Shasums: +``` +813d5f42b156b7d64f00b86e13d26ada3ef352e5 node-v0.9.10-darwin-x64.tar.gz +99dbe66fd0fc176fb3459ffcf62212dcb27bef10 node-v0.9.10-darwin-x86.tar.gz +3a5a465238cbdbdac9786c204fd27be61ce7159a node-v0.9.10-linux-x64.tar.gz +3340ac206ec1a1f827c954efdfa1351dcfe9f419 node-v0.9.10-linux-x86.tar.gz +b920b2e57c6df1e080966fdeccbfd1b384b156d4 node-v0.9.10-sunos-x64.tar.gz +9c1744352bb1bc71f48f8aea1aff6aeefe35a394 node-v0.9.10-sunos-x86.tar.gz +f1daaafc330cc9993a3a6f7ca8b9cc870b49e75c node-v0.9.10-x86.msi +2b6c70f57c1513e8f5151785b1ac263565983918 node-v0.9.10.pkg +265542c15cf939b7c71a545758d835ed44d791d3 node-v0.9.10.tar.gz +653f24d53f411217d57ed18d73921ff4721f00dd node.exe +7d62da67a7b33628d7d90c9d5037cf564dfc5ce4 node.exp +cfebbcd81db602b2f051328a9924e19ca2cb6235 node.lib +a31694cb9e03d13a616f3cc634852d8dc98e69b8 node.pdb +5f94c1cc9301a8b85082fee7549aa376aedd8ec5 x64/node-v0.9.10-x64.msi +7716c01ce60f7c65100cc405726badf8476afebd x64/node.exe +121d4a721968ba4631d29de07e5d6c326d259b4b x64/node.exp +17f651000f6b0c840efe539ae5257cb894481c49 x64/node.lib +d04242a5ec3a3104931ec8de6a846a8f7746b1fd x64/node.pdb +``` From 9d45b945f7903ea7db8427fe8b9cf08fd8d42ef5 Mon Sep 17 00:00:00 2001 From: Timothy J Fontaine Date: Tue, 18 Dec 2012 23:10:17 -0500 Subject: [PATCH 02/14] test: add TAP output to the test runner This is a back-port of commit 14ed173 from the master branch. --- tools/test.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tools/test.py b/tools/test.py index d711f9ca1d9..e94ad24f830 100755 --- a/tools/test.py +++ b/tools/test.py @@ -221,6 +221,31 @@ class DotsProgressIndicator(SimpleProgressIndicator): sys.stdout.flush() +class TapProgressIndicator(SimpleProgressIndicator): + + def Starting(self): + print '1..%i' % len(self.cases) + self._done = 0 + + def AboutToRun(self, case): + pass + + def HasRun(self, output): + self._done += 1 + command = basename(output.command[1]) + if output.UnexpectedOutput(): + print 'not ok %i - %s' % (self._done, command) + for l in output.output.stderr.split(os.linesep): + print '#' + l + for l in output.output.stdout.split(os.linesep): + print '#' + l + else: + print 'ok %i - %s' % (self._done, command) + + def Done(self): + pass + + class CompactProgressIndicator(ProgressIndicator): def __init__(self, cases, templates): @@ -311,6 +336,7 @@ PROGRESS_INDICATORS = { 'verbose': VerboseProgressIndicator, 'dots': DotsProgressIndicator, 'color': ColorProgressIndicator, + 'tap': TapProgressIndicator, 'mono': MonochromeProgressIndicator } @@ -1140,7 +1166,7 @@ def BuildOptions(): result.add_option("-S", dest="scons_flags", help="Flag to pass through to scons", default=[], action="append") result.add_option("-p", "--progress", - help="The style of progress indicator (verbose, dots, color, mono)", + help="The style of progress indicator (verbose, dots, color, mono, tap)", choices=PROGRESS_INDICATORS.keys(), default="mono") result.add_option("--no-build", help="Don't build requirements", default=True, action="store_true") From ef945219090de0c04884528f4113435499cc8ec3 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Thu, 21 Feb 2013 23:58:55 +0100 Subject: [PATCH 03/14] 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. --- src/node_zlib.cc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/node_zlib.cc b/src/node_zlib.cc index 4a60c875d7f..7c7f966cd67 100644 --- a/src/node_zlib.cc +++ b/src/node_zlib.cc @@ -59,7 +59,22 @@ void InitZlib(v8::Handle target); class ZCtx : public ObjectWrap { public: - ZCtx(node_zlib_mode mode) : ObjectWrap(), dictionary_(NULL), mode_(mode) {} + ZCtx(node_zlib_mode mode) + : ObjectWrap() + , init_done_(false) + , level_(0) + , windowBits_(0) + , memLevel_(0) + , strategy_(0) + , err_(0) + , dictionary_(NULL) + , dictionary_len_(0) + , flush_(0) + , chunk_size_(0) + , write_in_progress_(false) + , mode_(mode) + { + } ~ZCtx() { @@ -108,6 +123,7 @@ class ZCtx : public ObjectWrap { assert(!ctx->write_in_progress_ && "write already in progress"); ctx->write_in_progress_ = true; + ctx->Ref(); unsigned int flush = args[0]->Uint32Value(); Bytef *in; @@ -155,8 +171,6 @@ class ZCtx : public ObjectWrap { ZCtx::Process, ZCtx::After); - ctx->Ref(); - return ctx->handle_; } @@ -269,6 +283,7 @@ class ZCtx : public ObjectWrap { MakeCallback(ctx->handle_, onerror_sym, ARRAY_SIZE(args), args); // no hope of rescue. + ctx->write_in_progress_ = false; ctx->Unref(); } From 22d3eff8f46d336337aa5d9625f6d5be9104bcff Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 22 Feb 2013 01:19:39 +0100 Subject: [PATCH 04/14] doc: add note about child process line buffering Fixes #4808. --- doc/api/child_process.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/api/child_process.markdown b/doc/api/child_process.markdown index 7c084245313..913a376363d 100644 --- a/doc/api/child_process.markdown +++ b/doc/api/child_process.markdown @@ -6,7 +6,9 @@ Node provides a tri-directional `popen(3)` facility through the `child_process` module. It is possible to stream data through a child's `stdin`, `stdout`, and -`stderr` in a fully non-blocking way. +`stderr` in a fully non-blocking way. (Note that some programs use +line-buffered I/O internally. That doesn't affect node.js but it means +data you send to the child process is not immediately consumed.) To create a child process use `require('child_process').spawn()` or `require('child_process').fork()`. The semantics of each are slightly From f9a0140ef140d89fed1a194c410cd69ed9990305 Mon Sep 17 00:00:00 2001 From: isaacs Date: Fri, 22 Feb 2013 10:35:07 -0800 Subject: [PATCH 05/14] http: Handle hangup writes more gently --- lib/http.js | 23 +++++++++++++++---- .../test-http-destroyed-socket-write.js | 11 +-------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/http.js b/lib/http.js index 2446545ba94..0081432488f 100644 --- a/lib/http.js +++ b/lib/http.js @@ -447,6 +447,7 @@ function OutgoingMessage() { this._trailer = ''; this.finished = false; + this._hangupClose = false; } util.inherits(OutgoingMessage, Stream); @@ -501,12 +502,24 @@ OutgoingMessage.prototype._writeRaw = function(data, encoding) { return this.connection.write(data, encoding); } else if (this.connection && this.connection.destroyed) { // The socket was destroyed. If we're still trying to write to it, - // then something bad happened. - // If we've already raised an error on this message, then just ignore. - if (!this._hadError) { - this.emit('error', createHangUpError()); - this._hadError = true; + // then something bad happened, but it could be just that we haven't + // gotten the 'close' event yet. + // + // In v0.10 and later, this isn't a problem, since ECONNRESET isn't + // ignored in the first place. We'll probably emit 'close' on the + // next tick, but just in case it's not coming, set a timeout that + // will emit it for us. + if (!this._hangupClose) { + this._hangupClose = true; + var socket = this.socket; + var timer = setTimeout(function() { + socket.emit('close'); + }); + socket.on('close', function() { + clearTimeout(timer); + }); } + return false; } else { // buffer, as long as we're not destroyed. this._buffer(data, encoding); diff --git a/test/simple/test-http-destroyed-socket-write.js b/test/simple/test-http-destroyed-socket-write.js index c5629871018..b2498fd8aaf 100644 --- a/test/simple/test-http-destroyed-socket-write.js +++ b/test/simple/test-http-destroyed-socket-write.js @@ -75,15 +75,6 @@ server.listen(common.PORT, function() { var writes = 0; var sawFalseWrite; - var gotError = false; - sec.on('error', function(er) { - assert.equal(gotError, false); - gotError = true; - assert(er.code === 'ECONNRESET'); - clearTimeout(timer); - test(); - }); - function write() { if (++writes === 64) { clearTimeout(timer); @@ -121,7 +112,7 @@ server.listen(common.PORT, function() { console.error('bad happened', sec.output, sec.outputEncodings); assert.equal(sec.output.length, 0); assert.equal(sec.outputEncodings, 0); - assert(gotError); + assert(sawFalseWrite); assert(gotFirstResponse); assert(gotFirstData); assert(gotFirstEnd); From b0e7dbf2c0bab37018e64d14d176d0236c11cd87 Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 25 Feb 2013 09:06:44 -0800 Subject: [PATCH 06/14] 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 --- lib/http.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/http.js b/lib/http.js index 0081432488f..212b8becb92 100644 --- a/lib/http.js +++ b/lib/http.js @@ -1788,7 +1788,8 @@ function connectionListener(socket) { function serverSocketCloseListener() { debug('server socket close'); // mark this parser as reusable - freeParser(parser); + if (this.parser) + freeParser(this.parser); abortIncoming(); } From ff540e19a4d5437477d25586fe1dd01d66f8f69a Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 25 Feb 2013 13:07:08 -0800 Subject: [PATCH 07/14] uv: Upgrade to 86ae8b3c --- deps/uv/gyp_uv | 4 +++- deps/uv/src/unix/pipe.c | 11 +++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/deps/uv/gyp_uv b/deps/uv/gyp_uv index d861cbc7865..9c719fde569 100755 --- a/deps/uv/gyp_uv +++ b/deps/uv/gyp_uv @@ -22,7 +22,9 @@ def compiler_version(): proc = subprocess.Popen(CC.split() + ['--version'], stdout=subprocess.PIPE) is_clang = 'clang' in proc.communicate()[0].split('\n')[0] proc = subprocess.Popen(CC.split() + ['-dumpversion'], stdout=subprocess.PIPE) - version = tuple(map(int, proc.communicate()[0].split('.'))) + version = proc.communicate()[0].split('.') + version = map(int, version[:2]) + version = tuple(version) return (version, is_clang) diff --git a/deps/uv/src/unix/pipe.c b/deps/uv/src/unix/pipe.c index 957e96f8a65..e0502b03d21 100644 --- a/deps/uv/src/unix/pipe.c +++ b/deps/uv/src/unix/pipe.c @@ -186,16 +186,14 @@ void uv_pipe_connect(uv_connect_t* req, uv_strlcpy(saddr.sun_path, name, sizeof(saddr.sun_path)); saddr.sun_family = AF_UNIX; - /* We don't check for EINPROGRESS. Think about it: the socket - * is either there or not. - */ do { r = connect(handle->fd, (struct sockaddr*)&saddr, sizeof saddr); } while (r == -1 && errno == EINTR); if (r == -1) - goto out; + if (errno != EINPROGRESS) + goto out; if (new_sock) if (uv__stream_open((uv_stream_t*)handle, @@ -216,8 +214,9 @@ out: req->cb = cb; ngx_queue_init(&req->queue); - /* Run callback on next tick. */ - uv__io_feed(handle->loop, &handle->write_watcher, UV__IO_WRITE); + /* Force callback to run on next tick in case of error. */ + if (err != 0) + uv__io_feed(handle->loop, &handle->write_watcher, UV__IO_WRITE); /* Mimic the Windows pipe implementation, always * return 0 and let the callback handle errors. From 530d8c05d4c546146f18e5ba811d7eb3b7b7c0c5 Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 25 Feb 2013 10:58:10 -0800 Subject: [PATCH 08/14] 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) --- AUTHORS | 1 + ChangeLog | 13 ++++++++++++- src/node_version.h | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index 8181644e1a4..bf784aa766c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -380,3 +380,4 @@ Dan Milon Jacob Gable Rick Yakubowski Dan Kohn +Timothy J Fontaine diff --git a/ChangeLog b/ChangeLog index 016acdc1af5..9aa9f7ec213 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,15 @@ -2013.02.15, Version 0.8.20 (Stable) +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) + + +2013.02.15, Version 0.8.20 (Stable), e10c75579b536581ddd7ae4e2c3bf8a9d550d343 * npm: Upgrade to v1.2.11 diff --git a/src/node_version.h b/src/node_version.h index e553a51d4fc..81511843a64 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -30,7 +30,7 @@ # define NODE_TAG "" #endif -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) From 33e8e694e875b56422045fc60485283a1523a71f Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 25 Feb 2013 13:52:13 -0800 Subject: [PATCH 09/14] Now working on 0.8.22 --- src/node_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/node_version.h b/src/node_version.h index 81511843a64..bc689339d53 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -24,13 +24,13 @@ #define NODE_MAJOR_VERSION 0 #define NODE_MINOR_VERSION 8 -#define NODE_PATCH_VERSION 21 +#define NODE_PATCH_VERSION 22 #ifndef NODE_TAG # define NODE_TAG "" #endif -#define NODE_VERSION_IS_RELEASE 1 +#define NODE_VERSION_IS_RELEASE 0 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) From f8ae4446ee7593b21882d566724796bcc74bf1b4 Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 25 Feb 2013 13:56:46 -0800 Subject: [PATCH 10/14] blog: Post for v0.8.21 --- doc/blog/release/v0.8.21.md | 84 +++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 doc/blog/release/v0.8.21.md diff --git a/doc/blog/release/v0.8.21.md b/doc/blog/release/v0.8.21.md new file mode 100644 index 00000000000..1f70de1607f --- /dev/null +++ b/doc/blog/release/v0.8.21.md @@ -0,0 +1,84 @@ +date: Mon Feb 25 13:48:51 PST 2013 +version: 0.8.21 +category: release +title: Node v0.8.21 (Stable) +slug: node-v0-8-21-stable + +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) + + +Source Code: http://nodejs.org/dist/v0.8.21/node-v0.8.21.tar.gz + +Macintosh Installer (Universal): http://nodejs.org/dist/v0.8.21/node-v0.8.21.pkg + +Windows Installer: http://nodejs.org/dist/v0.8.21/node-v0.8.21-x86.msi + +Windows x64 Installer: http://nodejs.org/dist/v0.8.21/x64/node-v0.8.21-x64.msi + +Windows x64 Files: http://nodejs.org/dist/v0.8.21/x64/ + +Linux 32-bit Binary: http://nodejs.org/dist/v0.8.21/node-v0.8.21-linux-x86.tar.gz + +Linux 64-bit Binary: http://nodejs.org/dist/v0.8.21/node-v0.8.21-linux-x64.tar.gz + +Solaris 32-bit Binary: http://nodejs.org/dist/v0.8.21/node-v0.8.21-sunos-x86.tar.gz + +Solaris 64-bit Binary: http://nodejs.org/dist/v0.8.21/node-v0.8.21-sunos-x64.tar.gz + +Other release files: http://nodejs.org/dist/v0.8.21/ + +Website: http://nodejs.org/docs/v0.8.21/ + +Documentation: http://nodejs.org/docs/v0.8.21/api/ + +Shasums: +``` +383b9009a587b7390a5a00cef4ece441fb16dd82 node-v0.8.21-darwin-x64.tar.gz +47654ca8ecc93c846e6f7493a19931b99d5e4b87 node-v0.8.21-darwin-x86.tar.gz +46d66f3b95f447811e9253d66050859b4bb81ea0 node-v0.8.21-linux-x64.tar.gz +1f16e50dacd5e942970c28be1e578e6260a116c4 node-v0.8.21-linux-x86.tar.gz +b24b5e0acc53f004122c0cb2df775c4493b1e048 node-v0.8.21-sunos-x64.tar.gz +54ca0c94dff35e941fe90d10755427a15d6519ae node-v0.8.21-sunos-x86.tar.gz +38c5855c1ebd70fde111d50343a163a03cff9765 node-v0.8.21-x86.msi +60cd1fb8f43943bd3ed7c07745df1b3e81bafc13 node-v0.8.21.pkg +8b75377eafb5e77d6dff141c9533202d5a589ce4 node-v0.8.21.tar.gz +c310779c80d21be7556ec0921d5afca8f64792eb node.exe +61b98f9dfbe70184788b6f010ce7667c9cba0fdc node.exp +78c37ac837bbb8fefd691e351b3c20f136b212ee node.lib +40cc197db5c9fc4ded4509b5ae21bc53d178998e node.pdb +ec29a824e51308349f7895c010469f8e59939094 x64/node-v0.8.21-x64.msi +e4c5563c38a01dac1a97f6366175d1fef86da262 x64/node.exe +8e51783d5e03148f01db8386102e4ffc4e30deda x64/node.exp +a6017052052bb469a50327b4f40c990c25da0932 x64/node.lib +fb8d24e5208b14d35997bc3b46e325316e6ad94d x64/node.pdb +``` + +Shasums: +``` +62cd69928ce2da9e8512b3efb96aba353ee54a91 node-v0.8.21-darwin-x64.tar.gz +62cf9b990f8e424e7fdb1d50a46d779e4d508b23 node-v0.8.21-darwin-x86.tar.gz +83e92aec4f4a0167e7c5b3ef04388fc33712d97b node-v0.8.21-linux-x64.tar.gz +83a8aa10dafa196b372958d1052f61fe1c16c2a4 node-v0.8.21-linux-x86.tar.gz +588830b0d095c0ef3583d9f7f574426f5b456e2e node-v0.8.21-sunos-x64.tar.gz +e4eff5914432da3cf12a833aaa0444693671cca1 node-v0.8.21-sunos-x86.tar.gz +8146b2254caa814157aa511075dcf7b42d0ecb59 node-v0.8.21-x86.msi +60cd1fb8f43943bd3ed7c07745df1b3e81bafc13 node-v0.8.21.pkg +65ab7307f1aee12be4c88e396e2510967a52b1c6 node-v0.8.21.tar.gz +5d770ad554ee4a73278b2d90029e758e0a676074 node.exe +17514f32c57c64bd0d367c71ed0e6dc399fc9e12 node.exp +9404eff8562dfb0a6e0e72167278ac6131be5d3a node.lib +94908174f715d2707d48e6d53a1f96f33059f56c node.pdb +36750abf56120a63d9fa9b2b75bdc98dfac051f7 x64/node-v0.8.21-x64.msi +b61b9620e936bc9c19043a02625aed9922aeb653 x64/node.exe +21a0e855e652e7fbe84e7efc1f7a3542fa870372 x64/node.exp +f9d017c07030599e3442a958020381a37402dc81 x64/node.lib +3b35fbac0962aaff46bdd2f06412dcb1f80b9895 x64/node.pdb +``` From fafb67c65bb5d2bd98cb298ae7f5e17d367428ce Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 25 Feb 2013 13:57:02 -0800 Subject: [PATCH 11/14] ChangeLog: Missed item about EINPROGRESS --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9aa9f7ec213..769f62fb60a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,8 @@ * test: add TAP output to the test runner (Timothy J Fontaine) +* unix: Handle EINPROGRESS from domain sockets (Ben Noordhuis) + 2013.02.15, Version 0.8.20 (Stable), e10c75579b536581ddd7ae4e2c3bf8a9d550d343 From 82357b87eb112ca21c8abbb1ea41aaebf1f351a3 Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 25 Feb 2013 14:17:11 -0800 Subject: [PATCH 12/14] blog: Update with EINPROGRESS changelog item --- doc/blog/release/v0.8.21.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/blog/release/v0.8.21.md b/doc/blog/release/v0.8.21.md index 1f70de1607f..7e9539c2d46 100644 --- a/doc/blog/release/v0.8.21.md +++ b/doc/blog/release/v0.8.21.md @@ -14,6 +14,8 @@ slug: node-v0-8-21-stable * test: add TAP output to the test runner (Timothy J Fontaine) +* unix: Handle EINPROGRESS from domain sockets (Ben Noordhuis) + Source Code: http://nodejs.org/dist/v0.8.21/node-v0.8.21.tar.gz From 522668b5d93b46d7beb7f4d4c5db2078cf08560b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Thu, 28 Feb 2013 16:30:45 +0100 Subject: [PATCH 13/14] 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. --- doc/index.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/index.html b/doc/index.html index a9a8546bd64..9368d5f5a52 100644 --- a/doc/index.html +++ b/doc/index.html @@ -89,7 +89,9 @@ http.createServer(function (req, res) { }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); -

To run the server, put the code into a file example.js and execute it with the node program:

+

To run the server, put the code into a file + example.js and execute it with the + node program from the command line:

 % node example.js
 Server running at http://127.0.0.1:1337/
From d87904286024f5ceb6a2d0d5f17e919c775830a0 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Thu, 28 Feb 2013 16:35:17 +0100 Subject: [PATCH 14/14] 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. --- common.gypi | 1 + 1 file changed, 1 insertion(+) diff --git a/common.gypi b/common.gypi index b26d2f3f1cb..26a276cdcdd 100644 --- a/common.gypi +++ b/common.gypi @@ -117,6 +117,7 @@ 'WarningLevel': 3, 'BufferSecurityCheck': 'true', 'ExceptionHandling': 1, # /EHsc + 'ImageHasSafeExceptionHandlers': 0, # /SAFESEH:NO 'SuppressStartupBanner': 'true', 'WarnAsError': 'false', },