File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -200,6 +200,9 @@ export async function createComboServer(options: ComboServerOptions): Promise<De
200200 ALPNProtocols : serverProtocolPreferences
201201 }
202202
203+ // Cache secure contexts by domain to avoid expensive re-creation on every connection
204+ const secureContextCache = new Map < string , tls . SecureContext > ( ) ;
205+
203206 tlsServer = tls . createServer ( {
204207 key : defaultCert . key ,
205208 cert : defaultCert . cert ,
@@ -210,12 +213,17 @@ export async function createComboServer(options: ComboServerOptions): Promise<De
210213 if ( options . debug ) console . log ( `Generating certificate for ${ domain } ` ) ;
211214
212215 try {
213- const generatedCert = await ca . generateCertificate ( domain ) ;
214- cb ( null , tls . createSecureContext ( {
215- key : generatedCert . key ,
216- cert : generatedCert . cert ,
217- ca : generatedCert . ca
218- } ) ) ;
216+ let secureContext = secureContextCache . get ( domain ) ;
217+ if ( ! secureContext ) {
218+ const generatedCert = await ca . generateCertificate ( domain ) ;
219+ secureContext = tls . createSecureContext ( {
220+ key : generatedCert . key ,
221+ cert : generatedCert . cert ,
222+ ca : generatedCert . ca
223+ } ) ;
224+ secureContextCache . set ( domain , secureContext ) ;
225+ }
226+ cb ( null , secureContext ) ;
219227 } catch ( e ) {
220228 console . error ( 'Cert generation error' , e ) ;
221229 cb ( e ) ;
You can’t perform that action at this time.
0 commit comments