From e075a9bc96ed22dfbb23bd6535a4e83b77f451df Mon Sep 17 00:00:00 2001 From: Kacper Stasik Date: Mon, 16 Dec 2019 19:50:24 +0100 Subject: [PATCH] fix: race condition fixed when slave answers to quickly --- lib/transport/transport.js | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/lib/transport/transport.js b/lib/transport/transport.js index b996ab1..3620f42 100644 --- a/lib/transport/transport.js +++ b/lib/transport/transport.js @@ -77,24 +77,22 @@ BaseTransport.prototype.retrySend = function (data, retries, retry, next) { var transport = this; call_queue(this.beforerequest, function () { - transport.write(data, function () { - call_queue(transport.afterrequest, function () { - var k = data.__callback_key || "-"; - - if (retries > 0) { - transport.retryTimer[k] = setTimeout(function () { - transport.clearSend(); - transport.retrySend(data, retries - 1, retry, next); - }, retry); - } else { - transport.retryTimer[k] = setTimeout(function () { - delete transport.retryTimer[k]; + var k = data.__callback_key || "-"; - return next(pdu.Exception.error("GatewayTargetDeviceFailedToRespond")); - }, retry); - } - }); - }); + if (retries > 0) { + transport.retryTimer[k] = setTimeout(function () { + transport.clearSend(); + transport.retrySend(data, retries - 1, retry, next); + }, retry); + } else { + transport.retryTimer[k] = setTimeout(function () { + delete transport.retryTimer[k]; + + return next(pdu.Exception.error("GatewayTargetDeviceFailedToRespond")); + }, retry); + } + + transport.write(data, transport.afterrequest); }); };