From db8fc965dfa83c8a270e1be34ccb28393ac24f63 Mon Sep 17 00:00:00 2001 From: John-Michael Baier Date: Sun, 1 Nov 2020 16:10:48 +0100 Subject: [PATCH] cancel running request on arbitration error --- src/ebusd/bushandler.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ebusd/bushandler.cpp b/src/ebusd/bushandler.cpp index 8e130b3a..6f885b65 100644 --- a/src/ebusd/bushandler.cpp +++ b/src/ebusd/bushandler.cpp @@ -647,7 +647,17 @@ result_t BusHandler::handleSymbol() { case as_running: break; case as_error: - logError(lf_bus, "arbitration start error"); // TODO cancel all requests? + logError(lf_bus, "arbitration start error"); + // cancel request + if (!m_currentRequest) { + BusRequest *startRequest = m_nextRequests.peek(); + if (startRequest && m_nextRequests.remove(startRequest)) { + m_currentRequest = startRequest; + } + } + if (m_currentRequest) { + setState(m_state, RESULT_ERR_BUS_LOST); + } break; default: // only as_none break;