diff --git a/AUTHORS b/AUTHORS index 25c6b9f656a..8e8e2038fcf 100644 --- a/AUTHORS +++ b/AUTHORS @@ -484,3 +484,4 @@ James Halliday Matthew Aynalem Vsevolod Strukchinsky Jay Beavers +Eric Schrock diff --git a/ChangeLog b/ChangeLog index 85cfa7ab448..b8aca3acce7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -310,6 +310,23 @@ * console: `console.dir()` bypasses inspect() methods (Nathan Rajlich) +2013.09.24, Version 0.10.19 (Stable), 6b5e6a5a3ec8d994c9aab3b800b9edbf1b287904 + +* uv: Upgrade to v0.10.17 + +* npm: upgrade to 1.3.11 + +* readline: handle input starting with control chars (Eric Schrock) + +* configure: add mips-float-abi (soft, hard) option (Andrei Sedoi) + +* stream: objectMode transforms allow falsey values (isaacs) + +* tls: prevent duplicate values returned from read (Nathan Rajlich) + +* tls: NPN protocols are now local to connections (Fedor Indutny) + + 2013.09.04, Version 0.10.18 (Stable), 67a1f0c52e0708e2596f3f2134b8386d6112561e * uv: Upgrade to v0.10.15 diff --git a/README.md b/README.md index 47b1a4d5b34..09857cbf1fd 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Resources for Newcomers --- - [The Wiki](https://github.com/joyent/node/wiki) - [nodejs.org](http://nodejs.org/) - - [how to install node.js and npm (node package manager)](http://joyeur.com/2010/12/10/installing-node-and-npm/) + - [how to install node.js and npm (node package manager)](http://www.joyent.com/blog/installing-node-and-npm/) - [list of modules](https://github.com/joyent/node/wiki/modules) - [searching the npm registry](http://npmjs.org/) - [list of companies and projects using node](https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node) diff --git a/doc/api/process.markdown b/doc/api/process.markdown index df88cfb1490..ddb9c523364 100644 --- a/doc/api/process.markdown +++ b/doc/api/process.markdown @@ -104,10 +104,10 @@ You have been warned. ## Signal Events - + Emitted when the processes receives a signal. See sigaction(2) for a list of -standard POSIX signal names such as SIGINT, SIGUSR1, etc. +standard POSIX signal names such as SIGINT, SIGHUP, etc. Example of listening for `SIGINT`: @@ -121,6 +121,8 @@ Example of listening for `SIGINT`: An easy way to send the `SIGINT` signal is with `Control-C` in most terminal programs. +Note: SIGUSR1 is reserved by node.js to kickstart the debugger. It's possible +to install a listener but that won't stop the debugger from starting. ## process.stdout @@ -452,7 +454,7 @@ An example of the possible output looks like: Send a signal to a process. `pid` is the process id and `signal` is the string describing the signal to send. Signal names are strings like -'SIGINT' or 'SIGUSR1'. If omitted, the signal will be 'SIGTERM'. +'SIGINT' or 'SIGHUP'. If omitted, the signal will be 'SIGTERM'. See kill(2) for more information. Note that just because the name of this function is `process.kill`, it is @@ -472,6 +474,8 @@ Example of sending a signal to yourself: process.kill(process.pid, 'SIGHUP'); +Note: SIGUSR1 is reserved by node.js. It can be used to kickstart the +debugger. ## process.pid diff --git a/doc/api/tls.markdown b/doc/api/tls.markdown index de50a7964bf..e5b16635784 100644 --- a/doc/api/tls.markdown +++ b/doc/api/tls.markdown @@ -104,9 +104,9 @@ automatically set as a listener for the [secureConnection][] event. The - `cert`: A string or `Buffer` containing the certificate key of the server in PEM format. (Required) - - `ca`: An array of strings or `Buffer`s of trusted certificates. If this is - omitted several well known "root" CAs will be used, like VeriSign. - These are used to authorize connections. + - `ca`: An array of strings or `Buffer`s of trusted certificates in PEM + format. If this is omitted several well known "root" CAs will be used, + like VeriSign. These are used to authorize connections. - `crl` : Either a string or list of strings of PEM encoded CRLs (Certificate Revocation List) @@ -258,16 +258,16 @@ Creates a new client connection to the given `port` and `host` (old API) or - `cert`: A string or `Buffer` containing the certificate key of the client in PEM format. - - `ca`: An array of strings or `Buffer`s of trusted certificates. If this is - omitted several well known "root" CAs will be used, like VeriSign. - These are used to authorize connections. + - `ca`: An array of strings or `Buffer`s of trusted certificates in PEM + format. If this is omitted several well known "root" CAs will be used, + like VeriSign. These are used to authorize connections. - `rejectUnauthorized`: If `true`, the server certificate is verified against the list of supplied CAs. An `'error'` event is emitted if verification fails. Default: `true`. - - `NPNProtocols`: An array of string or `Buffer` containing supported NPN - protocols. `Buffer` should have following format: `0x05hello0x05world`, + - `NPNProtocols`: An array of strings or `Buffer`s containing supported NPN + protocols. `Buffer`s should have following format: `0x05hello0x05world`, where first byte is next protocol name's length. (Passing array should usually be much simpler: `['hello', 'world']`.) diff --git a/doc/blog/Uncategorized/an-easy-way-to-build-scalable-network-programs.md b/doc/blog/Uncategorized/an-easy-way-to-build-scalable-network-programs.md index a555ac6bba7..dc0980b4b83 100644 --- a/doc/blog/Uncategorized/an-easy-way-to-build-scalable-network-programs.md +++ b/doc/blog/Uncategorized/an-easy-way-to-build-scalable-network-programs.md @@ -13,4 +13,4 @@ It has also been suggested that Node does not take advantage of multicore machin Node has a clear purpose: provide an easy way to build scalable network programs. It is not a tool for every problem. Do not write a ray tracer with Node. Do not write a web browser with Node. Do however reach for Node if tasked with writing a DNS server, DHCP server, or even a video encoding server. -By relying on the kernel to schedule and preempt computationally expensive tasks and to load balance incoming connections, Node appears less magical than server platforms that employ userland scheduling. So far, our focus on simplicity and transparency has paid off: the number of success stories from developers and corporations who are adopting the technology continues to grow. +By relying on the kernel to schedule and preempt computationally expensive tasks and to load balance incoming connections, Node appears less magical than server platforms that employ userland scheduling. So far, our focus on simplicity and transparency has paid off: the number of success stories from developers and corporations who are adopting the technology continues to grow. diff --git a/doc/blog/Uncategorized/the-videos-from-node-meetup.md b/doc/blog/Uncategorized/the-videos-from-node-meetup.md index 68c5effe1cb..7ca7ac758ce 100644 --- a/doc/blog/Uncategorized/the-videos-from-node-meetup.md +++ b/doc/blog/Uncategorized/the-videos-from-node-meetup.md @@ -7,4 +7,4 @@ slug: the-videos-from-node-meetup Uber, Voxer, and Joyent described how they use Node in production -http://joyeur.com/2011/08/11/node-js-meetup-distributed-web-architectures/ +http://www.joyent.com/blog/node-js-meetup-distributed-web-architectures/ diff --git a/doc/blog/release/v0.10.19.md b/doc/blog/release/v0.10.19.md new file mode 100644 index 00000000000..f725b340b9d --- /dev/null +++ b/doc/blog/release/v0.10.19.md @@ -0,0 +1,70 @@ +date: Tue Sep 24 15:09:23 PDT 2013 +version: 0.10.19 +category: release +title: Node v0.10.19 (Stable) +slug: node-v0-10-19-stable + +2013.09.24, Version 0.10.19 (Stable) + +* uv: Upgrade to v0.10.17 + +* npm: upgrade to 1.3.11 + +* readline: handle input starting with control chars (Eric Schrock) + +* configure: add mips-float-abi (soft, hard) option (Andrei Sedoi) + +* stream: objectMode transforms allow falsey values (isaacs) + +* tls: prevent duplicate values returned from read (Nathan Rajlich) + +* tls: NPN protocols are now local to connections (Fedor Indutny) + + +Source Code: http://nodejs.org/dist/v0.10.19/node-v0.10.19.tar.gz + +Macintosh Installer (Universal): http://nodejs.org/dist/v0.10.19/node-v0.10.19.pkg + +Windows Installer: http://nodejs.org/dist/v0.10.19/node-v0.10.19-x86.msi + +Windows x64 Installer: http://nodejs.org/dist/v0.10.19/x64/node-v0.10.19-x64.msi + +Windows x64 Files: http://nodejs.org/dist/v0.10.19/x64/ + +Linux 32-bit Binary: http://nodejs.org/dist/v0.10.19/node-v0.10.19-linux-x86.tar.gz + +Linux 64-bit Binary: http://nodejs.org/dist/v0.10.19/node-v0.10.19-linux-x64.tar.gz + +Solaris 32-bit Binary: http://nodejs.org/dist/v0.10.19/node-v0.10.19-sunos-x86.tar.gz + +Solaris 64-bit Binary: http://nodejs.org/dist/v0.10.19/node-v0.10.19-sunos-x64.tar.gz + +Other release files: http://nodejs.org/dist/v0.10.19/ + +Website: http://nodejs.org/docs/v0.10.19/ + +Documentation: http://nodejs.org/docs/v0.10.19/api/ + +Shasums: +``` +74f1db96742fcc0128d1c14d3cb808ef5c847749 node-v0.10.19-darwin-x64.tar.gz +71ef9bd63d3926a2b78a43a5d077838c43e7e2ea node-v0.10.19-darwin-x86.tar.gz +ebc6dc67276f7461dbd45496924b36949c75e7e0 node-v0.10.19-linux-x64.tar.gz +226b507f554fa5cc07296c30f08db76f5eaeb157 node-v0.10.19-linux-x86.tar.gz +3b324613b79d1c4ab3b9414b0644a3a559c2aec9 node-v0.10.19-sunos-x64.tar.gz +83cb3e58e9ac925ea22c8533cabc712625faa3f7 node-v0.10.19-sunos-x86.tar.gz +dcbe7db6d0c93f83f539f38807cd3c1923969721 node-v0.10.19-x86.msi +e6397e1df4e74864e3f0e5fc7bd24178828497f4 node-v0.10.19.pkg +39478caf7024af6d992007457540f8941104c5d9 node-v0.10.19.tar.gz +0fe9364b443e76f7364f8694751da15479417bdf node.exe +63555cdb67c2fd63411726dc691b08af520b27f6 node.exp +c4d33b56cff97c47b12df3ad237977a57d4c798d node.lib +19a603db8f8c30b1736124740a6a1c856f2d21d8 node.pdb +ca32da0335ecb09ab7316b6e18f23461e298768e pkgsrc/nodejs-ia32-0.10.19.tgz +b0b05a7f74d980720677a3232e82e23df211c122 pkgsrc/nodejs-x64-0.10.19.tgz +45aed04478346035e8dc7933d120ab636d56eac4 x64/node-v0.10.19-x64.msi +b81788c17fec167b77883dcbaf8c629ad7560c4d x64/node.exe +086761bf6ff4622714d24d7979548a37aaaea57e x64/node.exp +cc554a431039952207adfcb3997a7366ad7182e8 x64/node.lib +02d18f042f3d25663ea4d979dff8120435982079 x64/node.pdb +``` diff --git a/lib/readline.js b/lib/readline.js index e45fdeac794..1872e852bdb 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -981,7 +981,7 @@ function emitKey(stream, s) { key.name = 'space'; key.meta = (s.length === 2); - } else if (s <= '\x1a') { + } else if (s.length === 1 && s <= '\x1a') { // ctrl+letter key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1); key.ctrl = true; diff --git a/test/simple/test-readline-interface.js b/test/simple/test-readline-interface.js index 8b7c9a08bd5..ec4ce9d3517 100644 --- a/test/simple/test-readline-interface.js +++ b/test/simple/test-readline-interface.js @@ -155,6 +155,18 @@ FakeInput.prototype.end = function() {}; assert.equal(callCount, expectedLines.length - 1); rli.close(); + // \r at start of input should output blank line + fi = new FakeInput(); + rli = new readline.Interface({ input: fi, output: fi, terminal: true }); + expectedLines = ['', 'foo' ]; + callCount = 0; + rli.on('line', function(line) { + assert.equal(line, expectedLines[callCount]); + callCount++; + }); + fi.emit('data', '\rfoo\r'); + assert.equal(callCount, expectedLines.length); + rli.close(); // sending a multi-byte utf8 char over multiple writes var buf = Buffer('☮', 'utf8'); diff --git a/test/simple/test-tls-npn-server-client.js b/test/simple/test-tls-npn-server-client.js index 86e10bedc6a..d9e8f91806c 100644 --- a/test/simple/test-tls-npn-server-client.js +++ b/test/simple/test-tls-npn-server-client.js @@ -61,6 +61,12 @@ var clientsOptions = [{ crl: serverOptions.crl, NPNProtocols: ['c', 'b', 'e'], rejectUnauthorized: false +},{ + port: serverPort, + key: serverOptions.key, + cert: serverOptions.cert, + crl: serverOptions.crl, + rejectUnauthorized: false },{ port: serverPort, key: serverOptions.key, @@ -91,7 +97,9 @@ function startTest() { connectClient(clientsOptions[0], function() { connectClient(clientsOptions[1], function() { connectClient(clientsOptions[2], function() { - server.close(); + connectClient(clientsOptions[3], function() { + server.close(); + }); }); }); }); @@ -100,6 +108,8 @@ function startTest() { process.on('exit', function() { assert.equal(serverResults[0], clientsResults[0]); assert.equal(serverResults[1], clientsResults[1]); - assert.equal(serverResults[2], 'first-priority-unsupported'); + assert.equal(serverResults[2], 'http/1.1'); assert.equal(clientsResults[2], false); + assert.equal(serverResults[3], 'first-priority-unsupported'); + assert.equal(clientsResults[3], false); });