# build/release artifacts
/*.tar.gz
-/SHASUMS.txt*
+/SHASUMS*.txt*
/tools/wrk/wrk
Forrest L Norvell <ogd@aoaioxxysz.net>
Evan Solomon <evan@evanalyze.com>
Eran Hammer <eran@hueniverse.com>
-Matthias Bartelmeß <mba@fourplusone.de>
Daniel Chatfield <chatfielddaniel@gmail.com>
Eivind Uggedal <eivind@uggedal.com>
Edward Hutchins <eahutchins@gmail.com>
-James Halliday <mail@substack.net>
Chris Wren <cthewren@gmail.com>
Duan Yao <duanyao@ustc.edu>
+Matthias Bartelmeß <mba@fourplusone.de>
+James Halliday <mail@substack.net>
Matthew Aynalem <maynalem@gmail.com>
Vsevolod Strukchinsky <floatdrop@yandex-team.ru>
* console: `console.dir()` bypasses inspect() methods (Nathan Rajlich)
+2013.08.21, Version 0.10.17 (Stable), 469a4a5091a677df62be319675056b869c31b35c
+
+* 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.16, Version 0.10.16 (Stable), 50b4c905a4425430ae54db4906f88982309e128d
* v8: back-port fix for CVE-2013-2882
--- /dev/null
+date: Wed Aug 21 16:37:31 PDT 2013
+version: 0.10.17
+category: release
+title: Node v0.10.17 (Stable)
+slug: node-v0-10-17-stable
+
+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)
+
+
+Source Code: http://nodejs.org/dist/v0.10.17/node-v0.10.17.tar.gz
+
+Macintosh Installer (Universal): http://nodejs.org/dist/v0.10.17/node-v0.10.17.pkg
+
+Windows Installer: http://nodejs.org/dist/v0.10.17/node-v0.10.17-x86.msi
+
+Windows x64 Installer: http://nodejs.org/dist/v0.10.17/x64/node-v0.10.17-x64.msi
+
+Windows x64 Files: http://nodejs.org/dist/v0.10.17/x64/
+
+Linux 32-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-linux-x86.tar.gz
+
+Linux 64-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-linux-x64.tar.gz
+
+Solaris 32-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-sunos-x86.tar.gz
+
+Solaris 64-bit Binary: http://nodejs.org/dist/v0.10.17/node-v0.10.17-sunos-x64.tar.gz
+
+Other release files: http://nodejs.org/dist/v0.10.17/
+
+Website: http://nodejs.org/docs/v0.10.17/
+
+Documentation: http://nodejs.org/docs/v0.10.17/api/
+
+Shasums:
+```
+8502c5ec4878154b5896fca6a14ff6c83c3774a1 node-v0.10.17-darwin-x64.tar.gz
+6d785ae86ea050159dfd85841a4faac830be8a2a node-v0.10.17-darwin-x86.tar.gz
+244dc1a25dcd2cc252ae9315bb2da07b41381c5c node-v0.10.17-linux-x64.tar.gz
+109c32b514fab374b73972dda4f4d27a33e20d5d node-v0.10.17-linux-x86.tar.gz
+2e046a6e05520c7be941365830517db90b791999 node-v0.10.17-sunos-x64.tar.gz
+907d73aa0e84717c342327265f0b665d09b50154 node-v0.10.17-sunos-x86.tar.gz
+ac8f653545b58d009e19522e3ead8886d151b59d node-v0.10.17-x86.msi
+32f160364990489e1f79593e1cdcea9dfde28125 node-v0.10.17.pkg
+c9d31d5415d2cf7a09fd7abebf9f01259e9dd93b node-v0.10.17.tar.gz
+33a5e3a86c391fc30080e796c46a74cefbd9104c node.exe
+004ebfa938b3f14984b964dcaba061d10c32f12c node.exp
+3dd092b26c742f20006fc2085b329a3e32d8e3d9 node.lib
+a8d997936e240626c56df8c6c8d55b659003a644 node.pdb
+165fecaab04a09a4df6b731f0e4b264bdb281644 pkgsrc/nodejs-ia32-0.10.17.tgz
+0c813098a93090823b513147de7f41f920dd8569 pkgsrc/nodejs-x64-0.10.17.tgz
+3cf665ad6c8f7d3040c2bfea8791f77c40c8f2a0 x64/node-v0.10.17-x64.msi
+95baf773a34f85014eb67d026b7b9cd0396f96f5 x64/node.exe
+ebdbcea161d44368c224fce448bf3d85e5a54f21 x64/node.exp
+49d12cb3d5be6f6707b7f5c89952f81bddb69a68 x64/node.lib
+0c0ef15eb6705c81137187c597cb0105bd2bc352 x64/node.pdb
+```
+
+Shasums:
+```
+8502c5ec4878154b5896fca6a14ff6c83c3774a1 node-v0.10.17-darwin-x64.tar.gz
+6d785ae86ea050159dfd85841a4faac830be8a2a node-v0.10.17-darwin-x86.tar.gz
+244dc1a25dcd2cc252ae9315bb2da07b41381c5c node-v0.10.17-linux-x64.tar.gz
+109c32b514fab374b73972dda4f4d27a33e20d5d node-v0.10.17-linux-x86.tar.gz
+2e046a6e05520c7be941365830517db90b791999 node-v0.10.17-sunos-x64.tar.gz
+907d73aa0e84717c342327265f0b665d09b50154 node-v0.10.17-sunos-x86.tar.gz
+ac8f653545b58d009e19522e3ead8886d151b59d node-v0.10.17-x86.msi
+32f160364990489e1f79593e1cdcea9dfde28125 node-v0.10.17.pkg
+c9d31d5415d2cf7a09fd7abebf9f01259e9dd93b node-v0.10.17.tar.gz
+33a5e3a86c391fc30080e796c46a74cefbd9104c node.exe
+004ebfa938b3f14984b964dcaba061d10c32f12c node.exp
+3dd092b26c742f20006fc2085b329a3e32d8e3d9 node.lib
+a8d997936e240626c56df8c6c8d55b659003a644 node.pdb
+165fecaab04a09a4df6b731f0e4b264bdb281644 pkgsrc/nodejs-ia32-0.10.17.tgz
+0c813098a93090823b513147de7f41f920dd8569 pkgsrc/nodejs-x64-0.10.17.tgz
+3cf665ad6c8f7d3040c2bfea8791f77c40c8f2a0 x64/node-v0.10.17-x64.msi
+95baf773a34f85014eb67d026b7b9cd0396f96f5 x64/node.exe
+ebdbcea161d44368c224fce448bf3d85e5a54f21 x64/node.exp
+49d12cb3d5be6f6707b7f5c89952f81bddb69a68 x64/node.lib
+0c0ef15eb6705c81137187c597cb0105bd2bc352 x64/node.pdb
+```
--- /dev/null
+date: Wed Aug 21 14:11:09 PDT 2013
+version: 0.11.6
+category: release
+title: Node v0.11.6 (Unstable)
+slug: node-v0-11-6-unstable
+
+2013.08.21, Version 0.11.6 (Unstable)
+
+* uv: Upgrade to v0.11.8
+
+* v8: upgrade v8 to 3.20.14.1
+
+* build: disable SSLv2 by default (Ben Noordhuis)
+
+* build: don't auto-destroy existing configuration (Ben Noordhuis)
+
+* crypto: add TLS 1.1 and 1.2 to secureProtocol list (Matthias Bartelmeß)
+
+* crypto: fix memory leak in randomBytes() error path (Ben Noordhuis)
+
+* dgram: don't call into js when send cb is omitted (Ben Noordhuis)
+
+* dgram: fix regression in string argument handling (Ben Noordhuis)
+
+* domains: performance improvements (Trevor Norris)
+
+* events: EventEmitter = require('events') (Jake Verbaten)
+
+* http: Add write()/end() callbacks (isaacs)
+
+* http: Consistent 'finish' event semantics (isaacs)
+
+* http: Prefer 'binary' over 'ascii' (isaacs)
+
+* http: Support legacy agent.addRequest API (isaacs)
+
+* http: Write hex/base64 chunks properly (isaacs)
+
+* http: add agent.maxFreeSockets option (isaacs)
+
+* http: provide access to raw headers/trailers (isaacs)
+
+* http: removed headers stay removed (James Halliday)
+
+* http,timers: improve callback performance (Ben Noordhuis)
+
+* net: family option in net.connect (Vsevolod Strukchinsky)
+
+* readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
+
+* smalloc: allow different external array types (Trevor Norris)
+
+* smalloc: expose ExternalArraySize (Trevor Norris)
+
+* stream: Short-circuit buffer pushes when flowing (isaacs)
+
+* tls: handle errors on socket before releasing it (Fedor Indutny)
+
+* util: fix isPrimitive check (Trevor Norris)
+
+* util: isObject should always return boolean (Trevor Norris)
+
+
+Source Code: http://nodejs.org/dist/v0.11.6/node-v0.11.6.tar.gz
+
+Macintosh Installer (Universal): http://nodejs.org/dist/v0.11.6/node-v0.11.6.pkg
+
+Windows Installer: http://nodejs.org/dist/v0.11.6/node-v0.11.6-x86.msi
+
+Windows x64 Installer: http://nodejs.org/dist/v0.11.6/x64/node-v0.11.6-x64.msi
+
+Windows x64 Files: http://nodejs.org/dist/v0.11.6/x64/
+
+Linux 32-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-linux-x86.tar.gz
+
+Linux 64-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-linux-x64.tar.gz
+
+Solaris 32-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-sunos-x86.tar.gz
+
+Solaris 64-bit Binary: http://nodejs.org/dist/v0.11.6/node-v0.11.6-sunos-x64.tar.gz
+
+Other release files: http://nodejs.org/dist/v0.11.6/
+
+Website: http://nodejs.org/docs/v0.11.6/
+
+Documentation: http://nodejs.org/docs/v0.11.6/api/
+
+Shasums:
+```
+5bab906e0ec1d5d2c2a750f17253955ba8c590b1 ./node-v0.11.6-darwin-x64.tar.gz
+085a4ecf18ec3200e6e8bd140b3dc7f9fa65f8b5 ./node-v0.11.6-darwin-x86.tar.gz
+c162932132977820e06b856ba9cc84c7d4b57749 ./node-v0.11.6-linux-x64.tar.gz
+ed188f465c62da99d870bf8fa17fbd0d543d8d2e ./node-v0.11.6-linux-x86.tar.gz
+0f52a91353d2c51b4d59c07b2a3b5d2e26060c93 ./node-v0.11.6-sunos-x64.tar.gz
+eac97868a552eae2dad92d633d0b78e069d05bed ./node-v0.11.6-sunos-x86.tar.gz
+3bdcfd9305fca8bc81197c53c5aff4c4a0745966 ./node-v0.11.6-x86.msi
+92abb4a4cc83bf9d3f1ed2f86a8aecd19672e7cf ./node-v0.11.6.pkg
+4f3a643b4913ef085175aef180c3bfd9259a4357 ./node-v0.11.6.tar.gz
+8051915c27eaee334a3d89a32fe1593e2b01182b ./node.exe
+29f62a9272ae7679118f4a21c536eb2384fa3af4 ./node.exp
+dc060de643dec7f17a696c533d9443bfdf25ee61 ./node.lib
+6438410f3685c585379e44b8bf39240ff0e65175 ./node.pdb
+dddfd481d376a215f0e039143ff1d22b317ca1d3 ./pkgsrc/nodejs-ia32-0.11.6.tgz
+634c9249428fde318e9087eebc9d50401c110521 ./pkgsrc/nodejs-x64-0.11.6.tgz
+90b58cb39a655591c240388942b629ff725fb076 ./x64/node-v0.11.6-x64.msi
+faeda12db9ca90a89dbd1d131702be39a883e7a2 ./x64/node.exe
+d6ab6da893cefd30795163a4e0d5585a996f13ec ./x64/node.exp
+f8f598114199b8876ef2cf7414eee488fcf713b9 ./x64/node.lib
+e09f49b3d3b881f2c3dcdff24369176572cc7338 ./x64/node.pdb
+```
</td>
</tr>
</table>
+ <p>
+ Note: Python 2.6 or 2.7 is required to build from source tarballs.
+ </p>
<h2 style="margin-top:1em" id=other-info>Other Info</h2>
<ul>
}
// This is a brutally ugly hack to make sure that our error handler
// is attached before any userland ones. NEVER DO THIS.
- if (!dest._events.error)
+ if (!dest._events || !dest._events.error)
dest.on('error', onerror);
else if (Array.isArray(dest._events.error))
dest._events.error.unshift(onerror);
--- /dev/null
+// 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');
+var assert = require('assert');
+
+var stream = require('stream');
+var util = require('util');
+
+function MyWritable(fn, options) {
+ stream.Writable.call(this, options);
+ this.fn = fn;
+};
+
+util.inherits(MyWritable, stream.Writable);
+
+MyWritable.prototype._write = function (chunk, encoding, callback) {
+ this.fn(Buffer.isBuffer(chunk), typeof chunk, encoding);
+ callback();
+};
+
+;(function decodeStringsTrue() {
+ var m = new MyWritable(function(isBuffer, type, enc) {
+ assert(isBuffer);
+ assert.equal(type, 'object');
+ assert.equal(enc, 'buffer');
+ console.log('ok - decoded string is decoded');
+ }, { decodeStrings: true });
+ m.write('some-text', 'utf8');
+ m.end();
+})();
+
+;(function decodeStringsFalse() {
+ var m = new MyWritable(function(isBuffer, type, enc) {
+ assert(!isBuffer);
+ assert.equal(type, 'string');
+ assert.equal(enc, 'utf8');
+ console.log('ok - un-decoded string is not decoded');
+ }, { decodeStrings: false });
+ m.write('some-text', 'utf8');
+ m.end();
+})();
--- /dev/null
+import os,re
+
+node_version_h = os.path.join(os.path.dirname(__file__), '..', 'src',
+ 'node_version.h')
+
+f = open(node_version_h)
+
+for line in f:
+ if re.match('#define NODE_MAJOR_VERSION', line):
+ major = line.split()[2]
+ if re.match('#define NODE_MINOR_VERSION', line):
+ minor = line.split()[2]
+ if re.match('#define NODE_PATCH_VERSION', line):
+ patch = line.split()[2]
+
+if int(minor) % 2 == 0:
+ print 'stable'
+else:
+ print 'unstable'
--- /dev/null
+#!/bin/bash
+
+## This is to be used once jenkins has finished building the release
+
+set -e
+
+stability="$(python tools/getstability.py)"
+NODE_STABC="$(tr '[:lower:]' '[:upper:]' <<< ${stability:0:1})${stability:1}"
+NODE_STABL="$stability"
+
+echo "Building for $stability"
+
+scp tj@nodejs.org:archive/node/tmp/v$(python tools/getnodeversion.py)/SHASUM* .
+FILES="SHASUMS SHASUMS256"
+for i in $FILES ; do gpg -s $i.txt; gpg --clearsign $i.txt; done
+scp SHASUM* tj@nodejs.org:archive/node/tmp/v$(python tools/getnodeversion.py)/
+
+ssh nodejs.org mkdir -p "dist/v$(python tools/getnodeversion.py)/{x64,docs}"
+ssh nodejs.org ln -s ../dist/v$(python tools/getnodeversion.py)/docs docs/v$(python tools/getnodeversion.py)
+
+ssh root@nodejs.org mv /home/tj/archive/node/tmp/v$(python tools/getnodeversion.py)/* /home/node/dist/v$(python tools/getnodeversion.py)/
+ssh root@nodejs.org chown -R node:other /home/node/dist/v$(python tools/getnodeversion.py)
+
+# tag the release
+# should be the same key used to sign the shasums
+git tag -sm "$(bash tools/changelog-head.sh)" v$(python tools/getnodeversion.py)
+
+# push to github
+git push git@github.com:joyent/node v$(python tools/getnodeversion.py)-release --tags
+
+# blog post and email
+make email.md
+( echo ""
+ echo "Shasums:"
+ echo '```'
+ cat SHASUMS.txt
+ echo '```' ) >> email.md
+( echo -n "date: "
+ date
+ echo -n "version: "
+ python tools/getnodeversion.py
+ echo "category: release"
+ echo "title: Node v"$(python tools/getnodeversion.py)" ($NODE_STABC)"
+ echo "slug: node-v"$(python tools/getnodeversion.py | sed 's|\.|-|g')"-$NODE_STABL"
+ echo ""
+ cat email.md ) > doc/blog/release/v$(python tools/getnodeversion.py).md
+
+if [ "$stability" = "stable" ];
+then
+ ## this needs to happen here because the website depends on the current node
+ ## node version
+ make website-upload
+ make blog-upload
+ BRANCH="v$(python tools/getnodeversion.py | sed -E 's#\.[0-9]+$##')"
+else
+ BRANCH="master"
+fi
+
+echo "Merging back into $BRANCH"
+
+# merge back into mainline stable branch
+git checkout $BRANCH
+git merge --no-ff v$(python tools/getnodeversion.py)-release
+
+# change the version number, set isrelease = 0
+## TODO automagic.
+vim src/node_version.h
+git commit -am "Now working on "$(python tools/getnodeversion.py)
+
+if [ "$stability" = "stable" ];
+then
+ echo "Adding blog"
+ git add doc/blog
+ git commit -m "blog: Post for v$(python tools/getprevnodeversion.py)"
+else
+ echo "copy blog to stable branch"
+fi
+
+git push git@github.com:joyent/node $BRANCH