From 9a16f1c7d0ab6847bb8826e7e08eb7853a5a5f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Wn=C4=99trzak?= Date: Thu, 14 Jul 2011 13:17:40 +0200 Subject: [PATCH 1/7] added information about relative paths in File System module --- doc/api/fs.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/api/fs.markdown b/doc/api/fs.markdown index faf1b47ece..6cfb43c431 100644 --- a/doc/api/fs.markdown +++ b/doc/api/fs.markdown @@ -52,6 +52,9 @@ In busy processes, the programmer is _strongly encouraged_ to use the asynchronous versions of these calls. The synchronous versions will block the entire process until they complete--halting all connections. +Relative path to filename can be used, remember however that this path will be relative +to `process.cwd()`. + ### fs.rename(path1, path2, [callback]) Asynchronous rename(2). No arguments other than a possible exception are given From e8bc80cf152973037519f37da4d356a05cc704e1 Mon Sep 17 00:00:00 2001 From: koichik Date: Sat, 16 Jul 2011 09:45:43 +0900 Subject: [PATCH 2/7] Doc improvements Fixes #1334. --- doc/api/http.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/api/http.markdown b/doc/api/http.markdown index 7fe52403a5..d789ce7bef 100644 --- a/doc/api/http.markdown +++ b/doc/api/http.markdown @@ -38,10 +38,10 @@ per connection (in the case of keep-alive connections). ### Event: 'connection' -`function (stream) { }` +`function (socket) { }` - When a new TCP stream is established. `stream` is an object of type - `net.Stream`. Usually users will not want to access this event. The + When a new TCP stream is established. `socket` is an object of type + `net.Socket`. Usually users will not want to access this event. The `stream` can also be accessed at `request.connection`. ### Event: 'close' @@ -239,7 +239,7 @@ Resumes a paused request. ### request.connection -The `net.Stream` object associated with the connection. +The `net.Socket` object associated with the connection. With HTTPS support, use request.connection.verifyPeer() and From 9f9a4cb9284794cea04098735f0dcc4c771db153 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sat, 16 Jul 2011 16:00:06 +0200 Subject: [PATCH 3/7] Fix Math.pow crashes on machines without SSE2. This is a back-port of r8577 from V8's upstream 3.1 branch. Fixes #829. --- deps/v8/src/ia32/full-codegen-ia32.cc | 8 ++++++-- deps/v8/src/version.cc | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/deps/v8/src/ia32/full-codegen-ia32.cc b/deps/v8/src/ia32/full-codegen-ia32.cc index 67e0e8fac9..375ff2e1ec 100644 --- a/deps/v8/src/ia32/full-codegen-ia32.cc +++ b/deps/v8/src/ia32/full-codegen-ia32.cc @@ -2772,8 +2772,12 @@ void FullCodeGenerator::EmitMathPow(ZoneList* args) { VisitForStackValue(args->at(0)); VisitForStackValue(args->at(1)); - MathPowStub stub; - __ CallStub(&stub); + if (CpuFeatures::IsSupported(SSE2)) { + MathPowStub stub; + __ CallStub(&stub); + } else { + __ CallRuntime(Runtime::kMath_pow, 2); + } context()->Plug(eax); } diff --git a/deps/v8/src/version.cc b/deps/v8/src/version.cc index f70e405915..b7c59dcde4 100644 --- a/deps/v8/src/version.cc +++ b/deps/v8/src/version.cc @@ -35,7 +35,7 @@ #define MAJOR_VERSION 3 #define MINOR_VERSION 1 #define BUILD_NUMBER 8 -#define PATCH_LEVEL 25 +#define PATCH_LEVEL 26 #define CANDIDATE_VERSION false // Define SONAME to have the SCons build the put a specific SONAME into the From 973153d1ccdbb06f9067f3698578e8a5685a87c4 Mon Sep 17 00:00:00 2001 From: Reid Burke Date: Thu, 7 Jul 2011 21:04:27 -0700 Subject: [PATCH 4/7] Properly respond to HEAD during end(body) hot path During write(), _hasBody is checked to make sure a body is allowed -- this is now also checked during end(body) when write() isn't used. Concise final chunk for HEAD req's res.end(data). Instead of simply clearing data, check _hasBody earlier to avoid sending cruft when chunkedEncoding is used. Fixes #1291. --- lib/http.js | 7 +++ ...test-http-head-response-has-no-body-end.js | 55 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 test/simple/test-http-head-response-has-no-body-end.js diff --git a/lib/http.js b/lib/http.js index 14befd15df..e5291fbf9a 100644 --- a/lib/http.js +++ b/lib/http.js @@ -652,6 +652,12 @@ OutgoingMessage.prototype.end = function(data, encoding) { this._implicitHeader(); } + if (data && !this._hasBody) { + console.error('This type of response MUST NOT have a body. ' + + 'Ignoring data passed to end().'); + data = false; + } + var ret; var hot = this._headerSent === false && @@ -667,6 +673,7 @@ OutgoingMessage.prototype.end = function(data, encoding) { // res.writeHead(); // res.end(blah); // HACKY. + if (this.chunkedEncoding) { var l = Buffer.byteLength(data, encoding).toString(16); ret = this.connection.write(this._header + l + CRLF + diff --git a/test/simple/test-http-head-response-has-no-body-end.js b/test/simple/test-http-head-response-has-no-body-end.js new file mode 100644 index 0000000000..ed91394ce2 --- /dev/null +++ b/test/simple/test-http-head-response-has-no-body-end.js @@ -0,0 +1,55 @@ +// 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 http = require('http'); + +// This test is to make sure that when the HTTP server +// responds to a HEAD request with data to res.end, +// it does not send any body. + +var server = http.createServer(function(req, res) { + res.writeHead(200); + res.end('FAIL'); // broken: sends FAIL from hot path. +}); +server.listen(common.PORT); + +var responseComplete = false; + +server.addListener('listening', function() { + var req = http.createClient(common.PORT).request('HEAD', '/'); + common.error('req'); + req.end(); + req.addListener('response', function(res) { + common.error('response'); + res.addListener('end', function() { + common.error('response end'); + server.close(); + responseComplete = true; + }); + }); +}); + +process.addListener('exit', function() { + assert.ok(responseComplete); +}); From ddfc6b78cc15202789e58b9220c1897e9d9aa525 Mon Sep 17 00:00:00 2001 From: isaacs Date: Tue, 19 Jul 2011 11:56:44 -0700 Subject: [PATCH 5/7] Close #1360 url: Allow _ in hostnames. --- lib/url.js | 4 ++-- test/simple/test-url.js | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/url.js b/lib/url.js index 8b01c8548f..6a26ed314b 100644 --- a/lib/url.js +++ b/lib/url.js @@ -44,8 +44,8 @@ var protocolPattern = /^([a-z0-9]+:)/i, .concat(unwise).concat(autoEscape), nonAuthChars = ['/', '@', '?', '#'].concat(delims), hostnameMaxLen = 255, - hostnamePartPattern = /^[a-zA-Z0-9][a-z0-9A-Z-]{0,62}$/, - hostnamePartStart = /^([a-zA-Z0-9][a-z0-9A-Z-]{0,62})(.*)$/, + hostnamePartPattern = /^[a-zA-Z0-9][a-z0-9A-Z_-]{0,62}$/, + hostnamePartStart = /^([a-zA-Z0-9][a-z0-9A-Z_-]{0,62})(.*)$/, // protocols that can allow "unsafe" and "unwise" chars. unsafeProtocol = { 'javascript': true, diff --git a/test/simple/test-url.js b/test/simple/test-url.js index ea85bc967f..8cee8eb279 100644 --- a/test/simple/test-url.js +++ b/test/simple/test-url.js @@ -274,8 +274,17 @@ var parseTests = { 'search' : '?search=foo', 'query' : 'search=foo', 'hash' : '#bar' + }, + 'http://bucket_name.s3.amazonaws.com/image.jpg': { + protocol: 'http:', + slashes: true, + host: 'bucket_name.s3.amazonaws.com', + hostname: 'bucket_name.s3.amazonaws.com', + pathname: '/image.jpg', + href: 'http://bucket_name.s3.amazonaws.com/image.jpg' } }; + for (var u in parseTests) { var actual = url.parse(u), expected = parseTests[u]; From 1b8dd65d6e3b82b6863ef38835cc436c5d30c1d5 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 19 Jul 2011 10:46:40 -0700 Subject: [PATCH 6/7] Bump version to v0.4.10 --- AUTHORS | 18 +++++++++++++++++- ChangeLog | 27 +++++++++++++++++++++++++++ doc/index.html | 34 +++++++++++++++------------------- doc/logos/index.html | 16 ---------------- doc/pipe.css | 4 ++++ src/node_version.h | 2 +- wscript | 2 +- 7 files changed, 65 insertions(+), 38 deletions(-) diff --git a/AUTHORS b/AUTHORS index 6378303907..1eb73d6df8 100644 --- a/AUTHORS +++ b/AUTHORS @@ -172,4 +172,20 @@ Scott McWhirter Jakub Lekstan Tim Baumann Robert Mustacchi - +George Miroshnykov +Marcel Laverdet +Alexandre Marangone +Mark Cavage +Ryan Petrello +Siddharth Mahendraker +Mathias Buus +Yoshihiro KIKUCHI +Brett Kiefer +Mariano Iglesias +Jörn Horstmann +Joe Shaw +Alex Xu +Kip Gebhardt +Stefan Rusu +Wojciech Wnętrzak +Reid Burke diff --git a/ChangeLog b/ChangeLog index 47c408e602..37102d7c55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2011.07.19, Version 0.4.10 (stable) + +* #394 Fix Buffer drops last null character in UTF-8 + +* #829 Backport r8577 from V8 (Ben Noordhuis) + +* #877 Don't wait for HTTP Agent socket pool to establish connections. + +* #915 Find kqueue on FreeBSD correctly (Brett Kiefer) + +* #1085 HTTP: Fix race in abort/dispatch code (Stefan Rusu) + +* #1274 debugger improvement (Yoshihiro Kikuchi) + +* #1291 Properly respond to HEAD during end(body) hot path (Reid Burke) + +* #1304 TLS: Fix race in abort/connection code (Stefan Rusu) + +* #1360 Allow _ in url hostnames. + +* Revert 37d529f8 - unbreaks debugger command parsing. + +* Bring back global execScript + +* Doc improvements + + 2011.06.29, Version 0.4.9 (stable) * Improve documentation diff --git a/doc/index.html b/doc/index.html index ba874daf93..4e3fc5c774 100644 --- a/doc/index.html +++ b/doc/index.html @@ -26,8 +26,8 @@
  • Download
  • ChangeLog
  • About
  • -
  • v0.4.9 docs
  • -
  • v0.5.0 docs
  • +
  • v0.4.10 docs
  • +
  • v0.5.1 docs

  • Wiki
  • Blog
  • @@ -110,17 +110,18 @@ server.listen(1337, "127.0.0.1"); git repo

    -

    - 2011.06.29 (stable) - node-v0.4.9.tar.gz - (Documentation) -

    +

    2011.07.19 v0.4.10 (stable) +

    -

    - 2011.07.05 (unstable) - node-v0.5.0.tar.gz - (Documentation) -

    +

    2011.07.14 v0.5.1 (unstable) +

    Historical: versions, docs

    @@ -193,13 +194,8 @@ server.listen(1337, "127.0.0.1"); But what about multiple-processor concurrency? Aren't threads necessary to scale programs to multi-core computers? - Processes are necessary to scale to multi-core computers, not - memory-sharing threads. The fundamentals of scalable systems are - fast networking and non-blocking design—the rest is message - passing. In future versions, Node will be able to fork new - processes (using the Web - Workers API ) which fits well into the current design. + You can start new processes via child_process.fork() + these other processes will be scheduled in parallel.

    diff --git a/doc/logos/index.html b/doc/logos/index.html index 6d8e662e8b..0d9d2a3f91 100644 --- a/doc/logos/index.html +++ b/doc/logos/index.html @@ -17,22 +17,6 @@ Node.js Logos -

    -
      -
    1. Download
    2. -
    3. ChangeLog
    4. -
    5. About
    6. -
    7. v0.4.9 docs
    8. -
    9. v0.5.0 docs
    10. -
      -
    11. Wiki
    12. -
    13. Blog
    14. -
    15. Community
    16. -
    17. Demo
    18. -
    19. Logos
    20. -
    21. Jobs
    22. -
    -
    diff --git a/doc/pipe.css b/doc/pipe.css index 3cc2b88c35..4f576e7aea 100644 --- a/doc/pipe.css +++ b/doc/pipe.css @@ -97,3 +97,7 @@ a:hover { text-decoration: underline; } .desktops { font-size: 14px; } + +.release { + margin: 0 0 0 2em; +} diff --git a/src/node_version.h b/src/node_version.h index 617704bb06..fefdc051cd 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -28,7 +28,7 @@ #define NODE_MAJOR_VERSION 0 #define NODE_MINOR_VERSION 4 #define NODE_PATCH_VERSION 10 -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) diff --git a/wscript b/wscript index 302ed0f64e..eab6990c46 100644 --- a/wscript +++ b/wscript @@ -866,7 +866,7 @@ def build(bld): , 'CPPFLAGS' : " ".join(program.env["CPPFLAGS"]).replace('"', '\\"') , 'LIBFLAGS' : " ".join(program.env["LIBFLAGS"]).replace('"', '\\"') , 'PREFIX' : safe_path(program.env["PREFIX"]) - , 'VERSION' : '0.4.9' # FIXME should not be hard-coded, see NODE_VERSION_STRING in src/node_version. + , 'VERSION' : '0.4.10' # FIXME should not be hard-coded, see NODE_VERSION_STRING in src/node_version. } return x From effc4469d00f53c0ce4057d385a968093db3d645 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 20 Jul 2011 00:37:26 -0700 Subject: [PATCH 7/7] Now working on v0.4.11 --- 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 fefdc051cd..8dbd3c44ef 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -27,8 +27,8 @@ #define NODE_MAJOR_VERSION 0 #define NODE_MINOR_VERSION 4 -#define NODE_PATCH_VERSION 10 -#define NODE_VERSION_IS_RELEASE 1 +#define NODE_PATCH_VERSION 11 +#define NODE_VERSION_IS_RELEASE 0 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)