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;
							 |