@@ -6,6 +6,7 @@ if (!common.hasCrypto)
6
6
const assert = require ( 'assert' ) ;
7
7
const tls = require ( 'tls' ) ;
8
8
const net = require ( 'net' ) ;
9
+ const Countdown = require ( '../common/countdown' ) ;
9
10
const fixtures = require ( '../common/fixtures' ) ;
10
11
11
12
const key = fixtures . readKey ( 'agent2-key.pem' ) ;
@@ -14,19 +15,28 @@ const cert = fixtures.readKey('agent2-cert.pem');
14
15
let serverTlsSocket ;
15
16
const tlsServer = tls . createServer ( { cert, key } , ( socket ) => {
16
17
serverTlsSocket = socket ;
18
+ socket . on ( 'close' , dec ) ;
17
19
} ) ;
18
20
19
21
// A plain net server, that manually passes connections to the TLS
20
- // server to be upgraded
22
+ // server to be upgraded.
21
23
let netSocket ;
24
+ let netSocketCloseEmitted = false ;
22
25
const netServer = net . createServer ( ( socket ) => {
23
- tlsServer . emit ( 'connection' , socket ) ;
24
-
25
26
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 ( ( ) => {
27
33
connectClient ( netServer ) ;
28
34
} ) ) ;
29
35
36
+ const countdown = new Countdown ( 2 , ( ) => {
37
+ netServer . close ( ) ;
38
+ } ) ;
39
+
30
40
// A client that connects, sends one message, and closes the raw connection:
31
41
function connectClient ( server ) {
32
42
const clientTlsSocket = tls . connect ( {
@@ -41,18 +51,21 @@ function connectClient(server) {
41
51
assert ( serverTlsSocket ) ;
42
52
43
53
netSocket . destroy ( ) ;
54
+ assert . strictEqual ( netSocket . destroyed , true ) ;
44
55
45
56
setImmediate ( ( ) => {
46
- assert . strictEqual ( netSocket . destroyed , true ) ;
47
-
57
+ assert . strictEqual ( netSocketCloseEmitted , false ) ;
58
+ assert . strictEqual ( serverTlsSocket . destroyed , false ) ;
48
59
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 ) ;
54
61
} ) ;
55
62
} ) ;
56
63
} ) ) ;
57
64
} ) ) ;
65
+
66
+ clientTlsSocket . on ( 'close' , dec ) ;
67
+ }
68
+
69
+ function dec ( ) {
70
+ countdown . dec ( ) ;
58
71
}
0 commit comments