Add test for connection timeouts
Also make socket.end() destroy connection if still trying to connect. Previously was ignoring.
This commit is contained in:
parent
72589b60ad
commit
33c33949b2
@ -783,7 +783,9 @@ Socket.prototype._shutdown = function() {
|
||||
|
||||
|
||||
Socket.prototype.end = function(data, encoding) {
|
||||
if (this.writable) {
|
||||
if (this._connecting) {
|
||||
this.destroy();
|
||||
} else if (this.writable) {
|
||||
if (this._writeQueueLast() !== END_OF_FILE) {
|
||||
if (data) this.write(data, encoding);
|
||||
this._writeQueue.push(END_OF_FILE);
|
||||
|
37
test/simple/test-net-connect-timeout.js
Normal file
37
test/simple/test-net-connect-timeout.js
Normal file
@ -0,0 +1,37 @@
|
||||
// This example attempts to time out before the connection is established
|
||||
// https://groups.google.com/forum/#!topic/nodejs/UE0ZbfLt6t8
|
||||
// https://groups.google.com/forum/#!topic/nodejs-dev/jR7-5UDqXkw
|
||||
|
||||
var common = require('../common');
|
||||
var net = require('net');
|
||||
var assert = require('assert');
|
||||
|
||||
var start = new Date();
|
||||
var gotTimeout = false;
|
||||
var gotConnect = false;
|
||||
var T = 100;
|
||||
|
||||
var socket = net.createConnection(9999, '23.23.23.23');
|
||||
|
||||
socket.setTimeout(T);
|
||||
|
||||
|
||||
socket.on('timeout', function() {
|
||||
console.error("timeout");
|
||||
gotTimeout = true;
|
||||
var now = new Date();
|
||||
assert.ok(now - start < T + 500);
|
||||
socket.end();
|
||||
});
|
||||
|
||||
socket.on('connect', function() {
|
||||
console.error("connect");
|
||||
gotConnect = true;
|
||||
socket.end();
|
||||
});
|
||||
|
||||
|
||||
process.on('exit', function() {
|
||||
assert.ok(gotTimeout);
|
||||
assert.ok(!gotConnect);
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user