1
1
var Net = require ( 'net' ) ;
2
2
var util = require ( 'util' ) ;
3
3
var Tls = require ( 'tls' ) ;
4
+ var Timers = require ( 'timers' ) ;
4
5
var EventEmitter = require ( 'events' ) . EventEmitter ;
5
6
var Queue = require ( 'double-ended-queue' ) ;
6
7
@@ -83,8 +84,13 @@ function Connection (opts)
83
84
this . packetParser = new PacketParser ( function ( p ) { connection . handlePacket ( p ) ; } ) ;
84
85
85
86
this . stream . on ( 'data' , function ( data ) {
87
+ if ( connection . connectTimeout ) {
88
+ Timers . clearTimeout ( connection . connectTimeout ) ;
89
+ connection . connectTimeout = null ;
90
+ }
86
91
connection . packetParser . execute ( data ) ;
87
92
} ) ;
93
+
88
94
this . stream . on ( 'end' , function ( ) {
89
95
// we need to set this flag everywhere where we want connection to close
90
96
if ( connection . _closing ) {
@@ -120,10 +126,7 @@ function Connection (opts)
120
126
121
127
if ( this . config . connectTimeout ) {
122
128
var timeoutHandler = this . _handleTimeoutError . bind ( this ) ;
123
- this . stream . setTimeout ( this . config . connectTimeout , timeoutHandler ) ;
124
- this . stream . once ( 'connect' , function ( ) {
125
- connection . stream . setTimeout ( 0 , timeoutHandler ) ;
126
- } ) ;
129
+ this . connectTimeout = Timers . setTimeout ( timeoutHandler , this . config . connectTimeout ) ;
127
130
}
128
131
}
129
132
util . inherits ( Connection , EventEmitter ) ;
@@ -147,7 +150,8 @@ Connection.prototype._handleNetworkError = function (err) {
147
150
148
151
Connection . prototype . _handleTimeoutError = function ( ) {
149
152
if ( this . stream ) {
150
- this . stream . setTimeout ( 0 ) ;
153
+ Timers . clearTimeout ( this . connectTimeout ) ;
154
+ this . connectTimeout = null ;
151
155
this . stream . destroy ( ) ;
152
156
}
153
157
0 commit comments