@@ -15,6 +15,7 @@ function Connection(options) {
15
15
16
16
this . config = options . config ;
17
17
18
+ this . _buffer = [ ] ;
18
19
this . _socket = options . socket ;
19
20
this . _protocol = new Protocol ( { config : this . config , connection : this } ) ;
20
21
this . _connectCalled = false ;
@@ -81,8 +82,16 @@ Connection.prototype.connect = function connect(options, callback) {
81
82
}
82
83
83
84
var connection = this ;
84
- this . _protocol . on ( 'data' , function ( data ) {
85
- connection . _socket . write ( data ) ;
85
+ var onWrite = function onWrite ( ) {
86
+ if ( connection . _buffer . shift ( ) && connection . _buffer . length > 0 ) {
87
+ connection . _socket . write ( connection . _buffer [ 0 ] , onWrite ) ;
88
+ }
89
+ } ;
90
+
91
+ this . _protocol . on ( 'data' , function ( data ) {
92
+ if ( connection . _buffer . push ( data ) === 1 ) {
93
+ connection . _socket . write ( data , onWrite ) ;
94
+ }
86
95
} ) ;
87
96
this . _socket . on ( 'data' , wrapToDomain ( connection , function ( data ) {
88
97
connection . _protocol . write ( data ) ;
@@ -415,11 +424,7 @@ Connection.prototype._handleConnectTimeout = function() {
415
424
} ;
416
425
417
426
Connection . prototype . _handleNetworkError = function ( err ) {
418
- if ( err . code === 'EPIPE' && err . syscall === 'write' ) {
419
- setTimeout ( this . _protocol . handleNetworkError . bind ( this . _protocol , err ) , 10 ) ;
420
- } else {
421
- this . _protocol . handleNetworkError ( err ) ;
422
- }
427
+ this . _protocol . handleNetworkError ( err ) ;
423
428
} ;
424
429
425
430
Connection . prototype . _handleProtocolError = function ( err ) {
0 commit comments