@@ -6,6 +6,7 @@ if (!common.hasCrypto)
66const assert = require ( 'assert' ) ;
77const tls = require ( 'tls' ) ;
88const net = require ( 'net' ) ;
9+ const Countdown = require ( '../common/countdown' ) ;
910const fixtures = require ( '../common/fixtures' ) ;
1011
1112const key = fixtures . readKey ( 'agent2-key.pem' ) ;
@@ -14,19 +15,28 @@ const cert = fixtures.readKey('agent2-cert.pem');
1415let serverTlsSocket ;
1516const tlsServer = tls . createServer ( { cert, key } , ( socket ) => {
1617 serverTlsSocket = socket ;
18+ socket . on ( 'close' , dec ) ;
1719} ) ;
1820
1921// A plain net server, that manually passes connections to the TLS
20- // server to be upgraded
22+ // server to be upgraded.
2123let netSocket ;
24+ let netSocketCloseEmitted = false ;
2225const netServer = net . createServer ( ( socket ) => {
23- tlsServer . emit ( 'connection' , socket ) ;
24-
2526 netSocket = socket ;
26- } ) . listen ( 0 , common . mustCall ( function ( ) {
27+ tlsServer . emit ( 'connection' , socket ) ;
28+ socket . on ( 'close' , ( ) => {
29+ netSocketCloseEmitted = true ;
30+ assert . strictEqual ( serverTlsSocket . destroyed , true ) ;
31+ } ) ;
32+ } ) . listen ( 0 , common . mustCall ( ( ) => {
2733 connectClient ( netServer ) ;
2834} ) ) ;
2935
36+ const countdown = new Countdown ( 2 , ( ) => {
37+ netServer . close ( ) ;
38+ } ) ;
39+
3040// A client that connects, sends one message, and closes the raw connection:
3141function connectClient ( server ) {
3242 const clientTlsSocket = tls . connect ( {
@@ -41,18 +51,21 @@ function connectClient(server) {
4151 assert ( serverTlsSocket ) ;
4252
4353 netSocket . destroy ( ) ;
54+ assert . strictEqual ( netSocket . destroyed , true ) ;
4455
4556 setImmediate ( ( ) => {
46- assert . strictEqual ( netSocket . destroyed , true ) ;
47-
57+ assert . strictEqual ( netSocketCloseEmitted , false ) ;
58+ assert . strictEqual ( serverTlsSocket . destroyed , false ) ;
4859 setImmediate ( ( ) => {
49- assert . strictEqual ( clientTlsSocket . destroyed , true ) ;
50- assert . strictEqual ( serverTlsSocket . destroyed , true ) ;
51-
52- tlsServer . close ( ) ;
53- netServer . close ( ) ;
60+ assert . strictEqual ( netSocketCloseEmitted , true ) ;
5461 } ) ;
5562 } ) ;
5663 } ) ) ;
5764 } ) ) ;
65+
66+ clientTlsSocket . on ( 'close' , dec ) ;
67+ }
68+
69+ function dec ( ) {
70+ countdown . dec ( ) ;
5871}
0 commit comments