You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.2 KiB
51 lines
1.2 KiB
'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;
|
|
|