From 6bba2d6a02217caf02d9413e78777220389e1f56 Mon Sep 17 00:00:00 2001 From: john30 Date: Sun, 17 Dec 2017 10:04:01 +0100 Subject: [PATCH] mark scan as finished only if loading failed or the request timed out --- src/ebusd/bushandler.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ebusd/bushandler.cpp b/src/ebusd/bushandler.cpp index 2f17229b..e8d82355 100755 --- a/src/ebusd/bushandler.cpp +++ b/src/ebusd/bushandler.cpp @@ -1495,6 +1495,7 @@ result_t BusHandler::scanAndWait(symbol_t dstAddress, bool loadScanConfig, bool if (result != RESULT_OK) { return result; } + bool requestExecuted = false; if (request) { if (reload) { m_scanResults.erase(dstAddress); @@ -1503,17 +1504,19 @@ result_t BusHandler::scanAndWait(symbol_t dstAddress, bool loadScanConfig, bool } m_runningScans++; m_nextRequests.push(request); - bool success = m_finishedRequests.remove(request, true); - result = success ? request->m_result : RESULT_ERR_TIMEOUT; + requestExecuted = m_finishedRequests.remove(request, true); + result = requestExecuted ? request->m_result : RESULT_ERR_TIMEOUT; delete request; request = NULL; } if (loadScanConfig) { string file; bool timedOut = result == RESULT_ERR_TIMEOUT; + bool loadFailed = false; if (timedOut || result == RESULT_OK) { result = loadScanConfigFile(m_messages, dstAddress, false, &file); // try to load even if one message timed out - if (timedOut && result != RESULT_OK) { + loadFailed = result != RESULT_OK; + if (timedOut && loadFailed) { result = RESULT_ERR_TIMEOUT; // back to previous result } } @@ -1524,7 +1527,7 @@ result_t BusHandler::scanAndWait(symbol_t dstAddress, bool loadScanConfig, bool // additional scan messages now available scanAndWait(dstAddress, false, false); } - } else if (result != RESULT_ERR_NOTFOUND) { + } else if (loadFailed || (requestExecuted && timedOut) || result == RESULT_ERR_NOTAUTHORIZED) { setScanConfigLoaded(dstAddress, ""); } }