@@ -69,6 +69,7 @@ def __init__(self, client, **kwargs):
69
69
self .retry_on_invalid = kwargs .get ('retry_on_invalid' ,
70
70
Defaults .RetryOnInvalid )
71
71
self .retries = kwargs .get ('retries' , Defaults .Retries ) or 1
72
+ self .reset_socket = kwargs .get ('reset_socket' , True )
72
73
self ._transaction_lock = RLock ()
73
74
self ._no_response_devices = []
74
75
if client :
@@ -217,7 +218,8 @@ def execute(self, request):
217
218
"/Unable to decode response" )
218
219
response = ModbusIOException (last_exception ,
219
220
request .function_code )
220
- self .client .close ()
221
+ if self .reset_socket :
222
+ self .client .close ()
221
223
if hasattr (self .client , "state" ):
222
224
_logger .debug ("Changing transaction state from "
223
225
"'PROCESSING REPLY' to "
@@ -230,7 +232,8 @@ def execute(self, request):
230
232
# Handle decode errors in processIncomingPacket method
231
233
_logger .exception (ex )
232
234
self .client .state = ModbusTransactionState .TRANSACTION_COMPLETE
233
- self .client .close ()
235
+ if self .reset_socket :
236
+ self .client .close ()
234
237
return ex
235
238
236
239
def _retry_transaction (self , retries , reason ,
@@ -294,7 +297,8 @@ def _transact(self, packet, response_length,
294
297
295
298
except (socket .error , ModbusIOException ,
296
299
InvalidMessageReceivedException ) as msg :
297
- self .client .close ()
300
+ if self .reset_socket :
301
+ self .client .close ()
298
302
_logger .debug ("Transaction failed. (%s) " % msg )
299
303
last_exception = msg
300
304
result = b''
0 commit comments