51 lines
1.2 KiB
JavaScript
Executable file
51 lines
1.2 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
const OriginalHttpsAgent = require('https').Agent;
|
|
const HttpAgent = require('./agent');
|
|
const {
|
|
INIT_SOCKET,
|
|
CREATE_HTTPS_CONNECTION,
|
|
} = require('./constants');
|
|
|
|
class HttpsAgent extends HttpAgent {
|
|
constructor(options) {
|
|
super(options);
|
|
|
|
this.defaultPort = 443;
|
|
this.protocol = 'https:';
|
|
this.maxCachedSessions = this.options.maxCachedSessions;
|
|
/* istanbul ignore next */
|
|
if (this.maxCachedSessions === undefined) {
|
|
this.maxCachedSessions = 100;
|
|
}
|
|
|
|
this._sessionCache = {
|
|
map: {},
|
|
list: [],
|
|
};
|
|
}
|
|
|
|
createConnection(options) {
|
|
const socket = this[CREATE_HTTPS_CONNECTION](options);
|
|
this[INIT_SOCKET](socket, options);
|
|
return socket;
|
|
}
|
|
}
|
|
|
|
// https://github.com/nodejs/node/blob/master/lib/https.js#L89
|
|
HttpsAgent.prototype[CREATE_HTTPS_CONNECTION] = OriginalHttpsAgent.prototype.createConnection;
|
|
|
|
[
|
|
'getName',
|
|
'_getSession',
|
|
'_cacheSession',
|
|
// https://github.com/nodejs/node/pull/4982
|
|
'_evictSession',
|
|
].forEach(function(method) {
|
|
/* istanbul ignore next */
|
|
if (typeof OriginalHttpsAgent.prototype[method] === 'function') {
|
|
HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];
|
|
}
|
|
});
|
|
|
|
module.exports = HttpsAgent;
|