diff --git a/src/ebusd/bushandler.cpp b/src/ebusd/bushandler.cpp index 27e2b28e..ba203045 100644 --- a/src/ebusd/bushandler.cpp +++ b/src/ebusd/bushandler.cpp @@ -929,6 +929,9 @@ void BusHandler::receiveCompleted() { } result_t BusHandler::startScan(bool full) { + if (m_runningScans > 0) { + return RESULT_ERR_DUPLICATE; + } deque messages = m_messages->findAll("scan", "", true); for (deque::iterator it = messages.begin(); it < messages.end(); it++) { Message* message = *it; diff --git a/src/ebusd/mainloop.cpp b/src/ebusd/mainloop.cpp index 6761b292..9b56e1df 100644 --- a/src/ebusd/mainloop.cpp +++ b/src/ebusd/mainloop.cpp @@ -1157,6 +1157,9 @@ string MainLoop::executeGrab(vector &args) { string MainLoop::executeScan(vector &args) { if (args.size() == 1) { result_t result = m_busHandler->startScan(); + if (result == RESULT_ERR_DUPLICATE) { + return "ERR: scan already running"; + } if (result != RESULT_OK) { logError(lf_main, "scan: %s", getResultCode(result)); }