From d402325a163844bd5b8db2e3b31986a554d63f25 Mon Sep 17 00:00:00 2001 From: john30 Date: Sat, 7 Nov 2015 15:22:12 +0100 Subject: [PATCH] notify starting request when receiving back own master address timed out --- src/ebusd/bushandler.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ebusd/bushandler.cpp b/src/ebusd/bushandler.cpp index 0501dea2..77031f7d 100644 --- a/src/ebusd/bushandler.cpp +++ b/src/ebusd/bushandler.cpp @@ -338,7 +338,8 @@ result_t BusHandler::handleSymbol() unsigned char recvSymbol; result = m_device->recv(timeout, recvSymbol); - if (!sending && result == RESULT_ERR_TIMEOUT && m_generateSynInterval > 0 && timeout >= m_generateSynInterval && (m_state == bs_noSignal || m_state == bs_skip)) { + if (!sending && result == RESULT_ERR_TIMEOUT && m_generateSynInterval > 0 + && timeout >= m_generateSynInterval && (m_state == bs_noSignal || m_state == bs_skip)) { // check if acting as AUTO-SYN generator is required result = m_device->send(SYN); if (result == RESULT_OK) { @@ -362,6 +363,9 @@ result_t BusHandler::handleSymbol() time_t now; time(&now); if (result != RESULT_OK) { + if (sending && startRequest != NULL && m_nextRequests.remove(startRequest)) { + m_currentRequest = startRequest; // force the failed request to be notified + } if ((m_generateSynInterval != SYN_TIMEOUT && difftime(now, m_lastReceive) > 1) // at least one full second has passed since last received symbol || m_state == bs_noSignal) return setState(bs_noSignal, result);