Browse Source

https: fix default port

https.get('https://github.com/') should use port 443, not 80.
v0.11.5-release
Koichi Kobayashi 12 years ago
committed by isaacs
parent
commit
72ad2c94df
  1. 8
      lib/_http_client.js
  2. 61
      test/disabled/test-http-default-port.js
  3. 44
      test/internet/test-http-https-default-ports.js

8
lib/_http_client.js

@ -44,12 +44,14 @@ function ClientRequest(options, cb) {
var self = this; var self = this;
OutgoingMessage.call(self); OutgoingMessage.call(self);
options = util._extend({}, options);
self.agent = util.isUndefined(options.agent) ? globalAgent : options.agent; self.agent = util.isUndefined(options.agent) ? globalAgent : options.agent;
var defaultPort = options.defaultPort || 80; var defaultPort = options.defaultPort || self.agent.defaultPort;
var port = options.port || defaultPort; var port = options.port = options.port || defaultPort;
var host = options.hostname || options.host || 'localhost'; var host = options.host = options.hostname || options.host || 'localhost';
if (util.isUndefined(options.setHost)) { if (util.isUndefined(options.setHost)) {
var setHost = true; var setHost = true;

61
test/disabled/test-http-default-port.js

@ -21,14 +21,11 @@
// This must be run as root.
var common = require('../common'); var common = require('../common');
var http = require('http'), var http = require('http'),
https = require('https'), https = require('https'),
PORT = 80, PORT = common.PORT,
SSLPORT = 443, SSLPORT = common.PORT + 1,
assert = require('assert'), assert = require('assert'),
hostExpect = 'localhost', hostExpect = 'localhost',
fs = require('fs'), fs = require('fs'),
@ -37,32 +34,52 @@ var http = require('http'),
options = { options = {
key: fs.readFileSync(fixtures + '/agent1-key.pem'), key: fs.readFileSync(fixtures + '/agent1-key.pem'),
cert: fs.readFileSync(fixtures + '/agent1-cert.pem') cert: fs.readFileSync(fixtures + '/agent1-cert.pem')
}; },
gotHttpsResp = false,
gotHttpResp = false;
process.on('exit', function() {
assert(gotHttpsResp);
assert(gotHttpResp);
console.log('ok');
});
http.globalAgent.defaultPort = PORT;
https.globalAgent.defaultPort = SSLPORT;
http.createServer(function(req, res) { http.createServer(function(req, res) {
console.error(req.headers);
assert.equal(req.headers.host, hostExpect); assert.equal(req.headers.host, hostExpect);
assert.equal(req.headers['x-port'], PORT);
res.writeHead(200); res.writeHead(200);
res.end('ok'); res.end('ok');
this.close(); this.close();
}).listen(PORT); }).listen(PORT, function() {
http.get({
host: 'localhost',
headers: {
'x-port': PORT
}
}, function(res) {
gotHttpResp = true;
res.resume();
});
});
https.createServer(options, function(req, res) { https.createServer(options, function(req, res) {
console.error(req.headers);
assert.equal(req.headers.host, hostExpect); assert.equal(req.headers.host, hostExpect);
assert.equal(req.headers['x-port'], SSLPORT);
res.writeHead(200); res.writeHead(200);
res.end('ok'); res.end('ok');
this.close(); this.close();
}).listen(SSLPORT); }).listen(SSLPORT, function() {
var req = https.get({
http host: 'localhost',
.get({ host: 'localhost', rejectUnauthorized: false,
port: PORT, headers: {
headers: { 'x-port': PORT } }) 'x-port': SSLPORT
.on('response', function(res) {}); }
}, function(res) {
https gotHttpsResp = true;
.get({ host: 'localhost', res.resume();
port: SSLPORT, });
headers: { 'x-port': SSLPORT } }) });
.on('response', function(res) {});

44
test/internet/test-http-https-default-ports.js

@ -0,0 +1,44 @@
// 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 https = require('https');
var http = require('http');
var gotHttpsResp = false;
var gotHttpResp = false;
process.on('exit', function() {
assert(gotHttpsResp);
assert(gotHttpResp);
console.log('ok');
});
https.get('https://www.google.com/', function(res) {
gotHttpsResp = true;
res.resume();
});
http.get('http://www.google.com/', function(res) {
gotHttpResp = true;
res.resume();
});
Loading…
Cancel
Save