File tree Expand file tree Collapse file tree 2 files changed +17
-11
lines changed
Expand file tree Collapse file tree 2 files changed +17
-11
lines changed Original file line number Diff line number Diff line change @@ -139,12 +139,14 @@ class TcpPort extends EventEmitter {
139139 } ) ;
140140
141141 this . _client . on ( "close" , function ( had_error ) {
142- self . openFlag = false ;
143- modbusSerialDebug ( "TCP port: signal close: " + had_error ) ;
144- handleCallback ( had_error ) ;
142+ if ( self . openFlag ) {
143+ self . openFlag = false ;
144+ modbusSerialDebug ( "TCP port: signal close: " + had_error ) ;
145+ handleCallback ( had_error ) ;
145146
146- self . emit ( "close" ) ;
147- self . removeAllListeners ( ) ;
147+ self . emit ( "close" ) ;
148+ self . removeAllListeners ( ) ;
149+ }
148150 } ) ;
149151
150152 this . _client . on ( "error" , function ( had_error ) {
Original file line number Diff line number Diff line change @@ -134,9 +134,14 @@ class TcpRTUBufferedPort extends EventEmitter {
134134 } ) ;
135135
136136 this . _client . on ( "close" , function ( had_error ) {
137- modbus . openFlag = false ;
138- handleCallback ( had_error ) ;
139- modbus . emit ( "close" ) ;
137+ if ( modbus . openFlag ) {
138+ modbus . openFlag = false ;
139+ modbusSerialDebug ( "TCP buffered port: signal close: " + had_error ) ;
140+ handleCallback ( had_error ) ;
141+
142+ modbus . emit ( "close" ) ;
143+ modbus . removeAllListeners ( ) ;
144+ }
140145 } ) ;
141146
142147 this . _client . on ( "error" , function ( had_error ) {
@@ -221,9 +226,8 @@ class TcpRTUBufferedPort extends EventEmitter {
221226 */
222227 close ( callback ) {
223228 this . callback = callback ;
224- this . _client . end ( callback ) ;
225-
226- this . removeAllListeners ( ) ;
229+ // DON'T pass callback to `end()` here, it will be handled by client.on('close') handler
230+ this . _client . end ( ) ;
227231 }
228232
229233 /**
You can’t perform that action at this time.
0 commit comments