Skip to content

Commit 9abaa0d

Browse files
committed
[CONJS-310] enable the permitRedirect option by default only when SSL is enabled
1 parent 903934e commit 9abaa0d

File tree

4 files changed

+28
-8
lines changed

4 files changed

+28
-8
lines changed

lib/config/connection-options.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ class ConnectionOptions {
8989
}
9090

9191
// connection options
92-
this.permitRedirect = opts.permitRedirect === undefined ? true : Boolean(opts.permitRedirect);
9392
this.initSql = opts.initSql;
9493
this.connectTimeout = opts.connectTimeout === undefined ? 1000 : Number(opts.connectTimeout);
9594
this.connectAttributes = opts.connectAttributes || false;
@@ -111,6 +110,10 @@ class ConnectionOptions {
111110
this.ssl.rejectUnauthorized = opts.ssl.rejectUnauthorized !== false;
112111
}
113112
}
113+
this.permitRedirect =
114+
opts.permitRedirect === undefined
115+
? !!this.ssl && this.ssl.rejectUnauthorized !== false
116+
: Boolean(opts.permitRedirect);
114117

115118
// socket
116119
this.queryTimeout = isNaN(opts.queryTimeout) || Number(opts.queryTimeout) < 0 ? 0 : Number(opts.queryTimeout);

test/integration/test-redirection.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ describe('redirection', () => {
1919
await proxy.start();
2020
let conn = null;
2121
try {
22-
conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
22+
conn = await base.createConnection({ host: 'localhost', port: proxy.port(), permitRedirect: true });
2323
assert.equal(proxy.port(), conn.info.port);
2424
let permitRedirection = true;
2525
try {
@@ -58,7 +58,7 @@ describe('redirection', () => {
5858
this.skip();
5959
return;
6060
}
61-
let conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
61+
let conn = await base.createConnection({ host: 'localhost', port: proxy.port(), permitRedirect: true });
6262
try {
6363
assert.equal(Conf.baseConfig.host, conn.info.host);
6464
assert.equal(Conf.baseConfig.port, conn.info.port);
@@ -85,7 +85,7 @@ describe('redirection', () => {
8585
resetAfterUse: false
8686
});
8787
await proxy.start();
88-
let conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
88+
let conn = await base.createConnection({ host: 'localhost', port: proxy.port(), permitRedirect: true });
8989
try {
9090
assert.equal(proxy.port(), conn.info.port);
9191
let permitRedirection = true;
@@ -114,7 +114,7 @@ describe('redirection', () => {
114114
resetAfterUse: false
115115
});
116116
await proxy.start();
117-
let conn = await base.createConnection({ host: 'localhost', port: proxy.port() });
117+
let conn = await base.createConnection({ host: 'localhost', port: proxy.port(), permitRedirect: true });
118118
try {
119119
assert.equal(proxy.port(), conn.info.port);
120120
let permitRedirection = true;

test/unit/config/test-connection-options.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,4 +271,21 @@ describe('test connection options', () => {
271271
assert.equal(result.jsonStrings, true);
272272
});
273273
});
274+
275+
it('redirection default value', () => {
276+
let result = new ConnOptions({});
277+
assert.equal(result.permitRedirect, false);
278+
279+
result = new ConnOptions({ ssl: true });
280+
assert.equal(result.permitRedirect, true);
281+
282+
result = new ConnOptions({ ssl: { rejectUnauthorized: false } });
283+
assert.equal(result.permitRedirect, false);
284+
285+
result = new ConnOptions({ ssl: { rejectUnauthorized: true } });
286+
assert.equal(result.permitRedirect, true);
287+
288+
result = new ConnOptions({ ssl: { rejectUnauthorized: true, permitRedirect: true } });
289+
assert.equal(result.permitRedirect, true);
290+
});
274291
});

test/unit/config/test-options.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ const Collations = require('../../../lib/const/collations.js');
1010

1111
describe('test options', () => {
1212
it('default options', function () {
13-
const defaultOpts = basePromise.defaultOptions({ timezone: '+00:00' });
14-
const defaultOptsCall = baseCallback.defaultOptions({ timezone: '+00:00' });
13+
const defaultOpts = basePromise.defaultOptions({ timezone: '+00:00', ssl: true });
14+
const defaultOptsCall = baseCallback.defaultOptions({ timezone: '+00:00', ssl: true });
1515
const expected = {
1616
host: 'localhost',
1717
port: 3306,
@@ -37,7 +37,7 @@ describe('test options', () => {
3737
bitOneIsBoolean: true,
3838
socketPath: undefined,
3939
sessionVariables: undefined,
40-
ssl: undefined,
40+
ssl: true,
4141
infileStreamFactory: undefined,
4242
queryTimeout: 0,
4343
socketTimeout: 0,

0 commit comments

Comments
 (0)