diff --git a/AUTHORS b/AUTHORS index a46220775054f6..cd2b3aa983003f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -744,5 +744,8 @@ Giovanny Andres Gongora Granada Jeffrey Jagoda Kelsey Breseman Peter Petrov +Andrew Crites +Marat Abdullin +Dan Varga # Generated by tools/update-authors.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dfb68c43c6d566..d2edd60a0ee245 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,13 +34,8 @@ $ git remote add upstream git://github.com/iojs/io.js.git #### Which branch? -Now decide if you want your feature or bug fix to go into the master branch -or the stable branch. As a rule of thumb, bug fixes go into the stable branch -while new features go into the master branch. - -The stable branch is effectively frozen; patches that change the io.js -API/ABI or affect the run-time behavior of applications get rejected. The -current stable branch is set as the default branch on GitHub. +For developing new features and bug fixes, the `master` branch should be pulled +and built upon. #### Respect the stability index @@ -49,7 +44,7 @@ The rules for the master branch are less strict; consult the In a nutshell, modules are at varying levels of API stability. Bug fixes are always welcome but API or behavioral changes to modules at stability level 3 -and up are off-limits. +(Locked) are off-limits. #### Dependencies @@ -71,12 +66,9 @@ does not align with the project team. Create a feature branch and start hacking: ```text -$ git checkout -b my-feature-branch -t origin/v1.x +$ git checkout -b my-feature-branch -t origin/master ``` -(Where `v1.x` is the latest stable branch as of this writing.) - - ### Step 3: Commit Make sure git knows your name and email address: @@ -123,7 +115,7 @@ Use `git rebase` (not `git merge`) to sync your work from time to time. ```text $ git fetch upstream -$ git rebase upstream/v1.x # or upstream/master +$ git rebase upstream/master ``` @@ -147,10 +139,10 @@ can use this syntax to run it exactly as the test harness would: $ python tools/test.py -v --mode=release parallel/test-stream2-transform ``` -You can run tests directly with node: +You can run tests directly with iojs: ```text -$ node ./test/parallel/test-streams2-transform.js +$ iojs ./test/parallel/test-streams2-transform.js ``` diff --git a/lib/_http_client.js b/lib/_http_client.js index daa37ef064e3fc..200a08e5d5bf85 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -21,6 +21,8 @@ function ClientRequest(options, cb) { if (typeof options === 'string') { options = url.parse(options); + } else { + options = util._extend({}, options); } var agent = options.agent; diff --git a/src/node_version.h b/src/node_version.h index ad48f98a36923f..d24973bde12427 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -1,11 +1,11 @@ #ifndef SRC_NODE_VERSION_H_ #define SRC_NODE_VERSION_H_ -#define NODE_MAJOR_VERSION 1 -#define NODE_MINOR_VERSION 8 -#define NODE_PATCH_VERSION 1 +#define NODE_MAJOR_VERSION 2 +#define NODE_MINOR_VERSION 0 +#define NODE_PATCH_VERSION 0 -#define NODE_VERSION_IS_RELEASE 1 +#define NODE_VERSION_IS_RELEASE 0 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) diff --git a/test/parallel/test-http-request-dont-override-options.js b/test/parallel/test-http-request-dont-override-options.js new file mode 100644 index 00000000000000..66d82caeac930d --- /dev/null +++ b/test/parallel/test-http-request-dont-override-options.js @@ -0,0 +1,45 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const http = require('http'); + +var requests = 0; + +http.createServer(function(req, res) { + res.writeHead(200); + res.end('ok'); + + requests++; +}).listen(common.PORT).unref(); + +var agent = new http.Agent(); +agent.defaultPort = common.PORT; + +// options marked as explicitly undefined for readability +// in this test, they should STAY undefined as options should not +// be mutable / modified +var options = { + host: undefined, + hostname: common.localhostIPv4, + port: undefined, + defaultPort: undefined, + path: undefined, + method: undefined, + agent: agent +}; + +http.request(options, function(res) { + res.resume(); +}).end(); + +process.on('exit', function() { + assert.equal(requests, 1); + + assert.strictEqual(options.host, undefined); + assert.strictEqual(options.hostname, common.localhostIPv4); + assert.strictEqual(options.port, undefined); + assert.strictEqual(options.defaultPort, undefined); + assert.strictEqual(options.path, undefined); + assert.strictEqual(options.method, undefined); +});