mark scan as finished only if loading failed or the request timed out
This commit is contained in:
@@ -1495,6 +1495,7 @@ result_t BusHandler::scanAndWait(symbol_t dstAddress, bool loadScanConfig, bool
|
|||||||
if (result != RESULT_OK) {
|
if (result != RESULT_OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
bool requestExecuted = false;
|
||||||
if (request) {
|
if (request) {
|
||||||
if (reload) {
|
if (reload) {
|
||||||
m_scanResults.erase(dstAddress);
|
m_scanResults.erase(dstAddress);
|
||||||
@@ -1503,17 +1504,19 @@ result_t BusHandler::scanAndWait(symbol_t dstAddress, bool loadScanConfig, bool
|
|||||||
}
|
}
|
||||||
m_runningScans++;
|
m_runningScans++;
|
||||||
m_nextRequests.push(request);
|
m_nextRequests.push(request);
|
||||||
bool success = m_finishedRequests.remove(request, true);
|
requestExecuted = m_finishedRequests.remove(request, true);
|
||||||
result = success ? request->m_result : RESULT_ERR_TIMEOUT;
|
result = requestExecuted ? request->m_result : RESULT_ERR_TIMEOUT;
|
||||||
delete request;
|
delete request;
|
||||||
request = NULL;
|
request = NULL;
|
||||||
}
|
}
|
||||||
if (loadScanConfig) {
|
if (loadScanConfig) {
|
||||||
string file;
|
string file;
|
||||||
bool timedOut = result == RESULT_ERR_TIMEOUT;
|
bool timedOut = result == RESULT_ERR_TIMEOUT;
|
||||||
|
bool loadFailed = false;
|
||||||
if (timedOut || result == RESULT_OK) {
|
if (timedOut || result == RESULT_OK) {
|
||||||
result = loadScanConfigFile(m_messages, dstAddress, false, &file); // try to load even if one message timed out
|
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
|
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
|
// additional scan messages now available
|
||||||
scanAndWait(dstAddress, false, false);
|
scanAndWait(dstAddress, false, false);
|
||||||
}
|
}
|
||||||
} else if (result != RESULT_ERR_NOTFOUND) {
|
} else if (loadFailed || (requestExecuted && timedOut) || result == RESULT_ERR_NOTAUTHORIZED) {
|
||||||
setScanConfigLoaded(dstAddress, "");
|
setScanConfigLoaded(dstAddress, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user