|
1 | 1 | 'use strict';
|
2 |
| -var common = require('../common'); |
3 |
| -var assert = require('assert'); |
4 |
| -var net = require('net'); |
5 |
| -var msg = 'test'; |
| 2 | +const common = require('../common'); |
| 3 | +const assert = require('assert'); |
| 4 | +const net = require('net'); |
| 5 | +const msg = 'test'; |
6 | 6 | var stopped = true;
|
7 |
| -var server1 = net.createServer({pauseOnConnect: true}, function(socket) { |
| 7 | +var server1Sock; |
| 8 | + |
| 9 | + |
| 10 | +const server1ConnHandler = function(socket) { |
8 | 11 | socket.on('data', function(data) {
|
9 | 12 | if (stopped) {
|
10 |
| - assert(false, 'data event should not have happened yet'); |
| 13 | + common.fail('data event should not have happened yet'); |
11 | 14 | }
|
12 | 15 |
|
13 | 16 | assert.equal(data.toString(), msg, 'invalid data received');
|
14 | 17 | socket.end();
|
15 | 18 | server1.close();
|
16 | 19 | });
|
17 | 20 |
|
18 |
| - setTimeout(function() { |
19 |
| - // After 50(ish) ms, the other socket should have already read the data. |
20 |
| - assert.equal(read, true); |
21 |
| - assert.equal(socket.bytesRead, 0, 'no data should have been read yet'); |
| 21 | + server1Sock = socket; |
| 22 | +}; |
22 | 23 |
|
23 |
| - socket.resume(); |
24 |
| - stopped = false; |
25 |
| - }, common.platformTimeout(50)); |
26 |
| -}); |
| 24 | +const server1 = net.createServer({pauseOnConnect: true}, server1ConnHandler); |
27 | 25 |
|
28 |
| -// read is a timing check, as server1's timer should fire after server2's |
29 |
| -// connection receives the data. Note that this could be race-y. |
30 |
| -var read = false; |
31 |
| -var server2 = net.createServer({pauseOnConnect: false}, function(socket) { |
| 26 | +const server2ConnHandler = function(socket) { |
32 | 27 | socket.on('data', function(data) {
|
33 |
| - read = true; |
34 |
| - |
35 | 28 | assert.equal(data.toString(), msg, 'invalid data received');
|
36 | 29 | socket.end();
|
37 | 30 | server2.close();
|
| 31 | + |
| 32 | + assert.equal(server1Sock.bytesRead, 0, 'no data should have been read yet'); |
| 33 | + server1Sock.resume(); |
| 34 | + stopped = false; |
38 | 35 | });
|
39 |
| -}); |
| 36 | +}; |
40 | 37 |
|
41 |
| -server1.listen(common.PORT, function() { |
42 |
| - net.createConnection({port: common.PORT}).write(msg); |
43 |
| -}); |
| 38 | +const server2 = net.createServer({pauseOnConnect: false}, server2ConnHandler); |
44 | 39 |
|
45 |
| -server2.listen(common.PORT + 1, function() { |
46 |
| - net.createConnection({port: common.PORT + 1}).write(msg); |
| 40 | +server1.listen(common.PORT, function() { |
| 41 | + const clientHandler = common.mustCall(function() { |
| 42 | + server2.listen(common.PORT + 1, function() { |
| 43 | + net.createConnection({port: common.PORT + 1}).write(msg); |
| 44 | + }); |
| 45 | + }); |
| 46 | + net.createConnection({port: common.PORT}).write(msg, clientHandler); |
47 | 47 | });
|
48 | 48 |
|
49 | 49 | process.on('exit', function() {
|
50 | 50 | assert.equal(stopped, false);
|
51 |
| - assert.equal(read, true); |
52 | 51 | });
|
0 commit comments