@@ -212,7 +212,6 @@ const kBind = Symbol('kBind');
212
212
const kClose = Symbol ( 'kClose' ) ;
213
213
const kCert = Symbol ( 'kCert' ) ;
214
214
const kClientHello = Symbol ( 'kClientHello' ) ;
215
- const kContinueConnect = Symbol ( 'kContinueConnect' ) ;
216
215
const kCompleteListen = Symbol ( 'kCompleteListen' ) ;
217
216
const kDestroy = Symbol ( 'kDestroy' ) ;
218
217
const kEndpointBound = Symbol ( 'kEndpointBound' ) ;
@@ -226,11 +225,9 @@ const kInternalServerState = Symbol('kInternalServerState');
226
225
const kListen = Symbol ( 'kListen' ) ;
227
226
const kMakeStream = Symbol ( 'kMakeStream' ) ;
228
227
const kMaybeBind = Symbol ( 'kMaybeBind' ) ;
229
- const kMaybeReady = Symbol ( 'kMaybeReady' ) ;
230
228
const kOnFileOpened = Symbol ( 'kOnFileOpened' ) ;
231
229
const kOnFileUnpipe = Symbol ( 'kOnFileUnpipe' ) ;
232
230
const kOnPipedFileHandleRead = Symbol ( 'kOnPipedFileHandleRead' ) ;
233
- const kSocketReady = Symbol ( 'kSocketReady' ) ;
234
231
const kRemoveSession = Symbol ( 'kRemove' ) ;
235
232
const kRemoveStream = Symbol ( 'kRemoveStream' ) ;
236
233
const kServerBusy = Symbol ( 'kServerBusy' ) ;
@@ -1148,9 +1145,6 @@ class QuicSocket extends EventEmitter {
1148
1145
1149
1146
state . state = kSocketBound ;
1150
1147
1151
- for ( const session of state . sessions )
1152
- session [ kSocketReady ] ( ) ;
1153
-
1154
1148
process . nextTick ( ( ) => {
1155
1149
// User code may have run before this so we need to check the
1156
1150
// destroyed state. If it has been destroyed, do nothing.
@@ -1175,13 +1169,6 @@ class QuicSocket extends EventEmitter {
1175
1169
return ;
1176
1170
state . state = kSocketBound ;
1177
1171
1178
- // Once the QuicSocket has been bound, we notify all currently
1179
- // existing QuicSessions. QuicSessions created after this
1180
- // point will automatically be notified that the QuicSocket
1181
- // is ready.
1182
- for ( const session of state . sessions )
1183
- session [ kSocketReady ] ( ) ;
1184
-
1185
1172
// The ready event indicates that the QuicSocket is ready to be
1186
1173
// used to either listen or connect. No QuicServerSession should
1187
1174
// exist before this event, and all QuicClientSession will remain
@@ -1380,16 +1367,7 @@ class QuicSocket extends EventEmitter {
1380
1367
if ( this . closing )
1381
1368
throw new ERR_INVALID_STATE ( 'QuicSocket is closing' ) ;
1382
1369
1383
- const session = new QuicClientSession ( this , options ) ;
1384
-
1385
- try {
1386
- session [ kContinueConnect ] ( type , ip ) ;
1387
- } catch ( err ) {
1388
- session . destroy ( ) ;
1389
- throw err ;
1390
- }
1391
-
1392
- return session ;
1370
+ return new QuicClientSession ( this , options , type , ip ) ;
1393
1371
}
1394
1372
1395
1373
[ kEndpointClose ] ( endpoint , error ) {
@@ -2207,10 +2185,7 @@ class QuicSession extends EventEmitter {
2207
2185
// signaling the completion of the TLS handshake.
2208
2186
const makeStream = QuicSession [ kMakeStream ] . bind ( this , stream , halfOpen ) ;
2209
2187
let deferred = false ;
2210
- if ( this . allowEarlyData && ! this . ready ) {
2211
- deferred = true ;
2212
- this . once ( 'ready' , makeStream ) ;
2213
- } else if ( ! this . handshakeComplete ) {
2188
+ if ( ! this . handshakeComplete ) {
2214
2189
deferred = true ;
2215
2190
this . once ( 'secure' , makeStream ) ;
2216
2191
}
@@ -2348,10 +2323,6 @@ class QuicServerSession extends QuicSession {
2348
2323
} = options ;
2349
2324
super ( socket , { highWaterMark, defaultEncoding } ) ;
2350
2325
this [ kSetHandle ] ( handle ) ;
2351
-
2352
- // Both the handle and socket are immediately usable
2353
- // at this point so trigger the ready event.
2354
- this [ kSocketReady ] ( ) ;
2355
2326
}
2356
2327
2357
2328
// Called only when a clientHello event handler is registered.
@@ -2388,12 +2359,6 @@ class QuicServerSession extends QuicSession {
2388
2359
callback . bind ( this [ kHandle ] ) ) ;
2389
2360
}
2390
2361
2391
- [ kSocketReady ] ( ) {
2392
- process . nextTick ( emit . bind ( this , 'ready' ) ) ;
2393
- }
2394
-
2395
- get ready ( ) { return true ; }
2396
-
2397
2362
get allowEarlyData ( ) { return false ; }
2398
2363
2399
2364
addContext ( servername , context = { } ) {
@@ -2418,7 +2383,6 @@ class QuicClientSession extends QuicSession {
2418
2383
handshakeStarted : false ,
2419
2384
minDHSize : undefined ,
2420
2385
port : undefined ,
2421
- ready : 0 ,
2422
2386
remoteTransportParams : undefined ,
2423
2387
requestOCSP : undefined ,
2424
2388
secureContext : undefined ,
@@ -2429,7 +2393,7 @@ class QuicClientSession extends QuicSession {
2429
2393
qlogEnabled : false ,
2430
2394
} ;
2431
2395
2432
- constructor ( socket , options ) {
2396
+ constructor ( socket , options , type , ip ) {
2433
2397
const sc_options = {
2434
2398
...options ,
2435
2399
minVersion : 'TLSv1.3' ,
@@ -2486,33 +2450,8 @@ class QuicClientSession extends QuicSession {
2486
2450
remoteTransportParams !== undefined &&
2487
2451
sessionTicket !== undefined ;
2488
2452
2489
- if ( socket . bound )
2490
- this [ kSocketReady ] ( ) ;
2491
- }
2492
-
2493
- [ kHandshakePost ] ( ) {
2494
- const { type, size } = this . ephemeralKeyInfo ;
2495
- if ( type === 'DH' && size < this [ kInternalClientState ] . minDHSize ) {
2496
- this . destroy ( new ERR_TLS_DH_PARAM_SIZE ( size ) ) ;
2497
- return false ;
2498
- }
2499
- return true ;
2500
- }
2501
-
2502
- [ kCert ] ( response ) {
2503
- this . emit ( 'OCSPResponse' , response ) ;
2504
- }
2505
-
2506
- [ kContinueConnect ] ( type , ip ) {
2507
- const state = this [ kInternalClientState ] ;
2508
2453
setTransportParams ( state . transportParams ) ;
2509
2454
2510
- const options =
2511
- ( state . verifyHostnameIdentity ?
2512
- QUICCLIENTSESSION_OPTION_VERIFY_HOSTNAME_IDENTITY : 0 ) |
2513
- ( state . requestOCSP ?
2514
- QUICCLIENTSESSION_OPTION_REQUEST_OCSP : 0 ) ;
2515
-
2516
2455
const handle =
2517
2456
_createClientSession (
2518
2457
this . socket [ kHandle ] ,
@@ -2526,7 +2465,10 @@ class QuicClientSession extends QuicSession {
2526
2465
state . dcid ,
2527
2466
state . preferredAddressPolicy ,
2528
2467
this . alpnProtocol ,
2529
- options ,
2468
+ ( state . verifyHostnameIdentity ?
2469
+ QUICCLIENTSESSION_OPTION_VERIFY_HOSTNAME_IDENTITY : 0 ) |
2470
+ ( state . requestOCSP ?
2471
+ QUICCLIENTSESSION_OPTION_REQUEST_OCSP : 0 ) ,
2530
2472
state . qlogEnabled ,
2531
2473
state . autoStart ) ;
2532
2474
@@ -2556,45 +2498,25 @@ class QuicClientSession extends QuicSession {
2556
2498
}
2557
2499
2558
2500
this [ kSetHandle ] ( handle ) ;
2559
-
2560
- // Listeners may have been added before the handle was created.
2561
- // Ensure that we toggle those listeners in the handle state.
2562
-
2563
- const internalState = this [ kInternalState ] ;
2564
- if ( this . listenerCount ( 'keylog' ) > 0 ) {
2565
- toggleListeners ( internalState . state , 'keylog' , true ) ;
2566
- }
2567
-
2568
- if ( this . listenerCount ( 'pathValidation' ) > 0 )
2569
- toggleListeners ( internalState . state , 'pathValidation' , true ) ;
2570
-
2571
- if ( this . listenerCount ( 'usePreferredAddress' ) > 0 )
2572
- toggleListeners ( internalState . state , 'usePreferredAddress' , true ) ;
2573
-
2574
- this [ kMaybeReady ] ( 0x2 ) ;
2575
2501
}
2576
2502
2577
- [ kSocketReady ] ( ) {
2578
- this [ kMaybeReady ] ( 0x1 ) ;
2503
+ [ kHandshakePost ] ( ) {
2504
+ const { type, size } = this . ephemeralKeyInfo ;
2505
+ if ( type === 'DH' && size < this [ kInternalClientState ] . minDHSize ) {
2506
+ this . destroy ( new ERR_TLS_DH_PARAM_SIZE ( size ) ) ;
2507
+ return false ;
2508
+ }
2509
+ return true ;
2579
2510
}
2580
2511
2581
- // The QuicClientSession is ready for use only after
2582
- // (a) The QuicSocket has been bound and
2583
- // (b) The internal handle has been created
2584
- [ kMaybeReady ] ( flag ) {
2585
- this [ kInternalClientState ] . ready |= flag ;
2586
- if ( this . ready )
2587
- process . nextTick ( emit . bind ( this , 'ready' ) ) ;
2512
+ [ kCert ] ( response ) {
2513
+ this . emit ( 'OCSPResponse' , response ) ;
2588
2514
}
2589
2515
2590
2516
get allowEarlyData ( ) {
2591
2517
return this [ kInternalClientState ] . allowEarlyData ;
2592
2518
}
2593
2519
2594
- get ready ( ) {
2595
- return this [ kInternalClientState ] . ready === 0x3 ;
2596
- }
2597
-
2598
2520
get handshakeStarted ( ) {
2599
2521
return this [ kInternalClientState ] . handshakeStarted ;
2600
2522
}
@@ -2608,11 +2530,7 @@ class QuicClientSession extends QuicSession {
2608
2530
if ( state . handshakeStarted )
2609
2531
return ;
2610
2532
state . handshakeStarted = true ;
2611
- if ( ! this . ready ) {
2612
- this . once ( 'ready' , ( ) => this [ kHandle ] . startHandshake ( ) ) ;
2613
- } else {
2614
- this [ kHandle ] . startHandshake ( ) ;
2615
- }
2533
+ this [ kHandle ] . startHandshake ( ) ;
2616
2534
}
2617
2535
2618
2536
get ephemeralKeyInfo ( ) {
0 commit comments