1
1
'use strict' ;
2
2
3
+ // Regression test for https://github.com/nodejs/node/issues/13435
4
+ // Tests that `socket.server` is correctly set when a socket is sent to a worker
5
+ // and the `'connection'` event is emitted manually on an HTTP server.
6
+
3
7
const common = require ( '../common' ) ;
4
8
const assert = require ( 'assert' ) ;
5
9
const cluster = require ( 'cluster' ) ;
@@ -8,13 +12,11 @@ const net = require('net');
8
12
9
13
if ( cluster . isMaster ) {
10
14
const worker = cluster . fork ( ) ;
11
- const server = net . createServer ( {
12
- pauseOnConnect : true
13
- } , common . mustCall ( ( socket ) => {
15
+ const server = net . createServer ( common . mustCall ( ( socket ) => {
14
16
worker . send ( 'socket' , socket ) ;
15
17
} ) ) ;
16
18
17
- worker . on ( 'exit' , common . mustCall ( ( code , signal ) => {
19
+ worker . on ( 'exit' , common . mustCall ( ( code ) => {
18
20
assert . strictEqual ( code , 0 ) ;
19
21
server . close ( ) ;
20
22
} ) ) ;
@@ -25,13 +27,13 @@ if (cluster.isMaster) {
25
27
} else {
26
28
const server = http . createServer ( ) ;
27
29
28
- server . setTimeout ( 100 , common . mustCall ( ( socket ) => {
30
+ server . on ( 'connection' , common . mustCall ( ( socket ) => {
31
+ assert . strictEqual ( socket . server , server ) ;
29
32
socket . destroy ( ) ;
30
- cluster . worker . kill ( ) ;
33
+ cluster . worker . disconnect ( ) ;
31
34
} ) ) ;
32
35
33
36
process . on ( 'message' , common . mustCall ( ( message , socket ) => {
34
37
server . emit ( 'connection' , socket ) ;
35
- socket . resume ( ) ;
36
38
} ) ) ;
37
39
}
0 commit comments