diff --git a/src/chargepoint/requestfifo/RequestFifoManager.cpp b/src/chargepoint/requestfifo/RequestFifoManager.cpp index 7992413b..b8a3d730 100644 --- a/src/chargepoint/requestfifo/RequestFifoManager.cpp +++ b/src/chargepoint/requestfifo/RequestFifoManager.cpp @@ -99,6 +99,8 @@ void RequestFifoManager::requestQueued() /** @brief Process a FIFO request */ void RequestFifoManager::processFifoRequest() { + std::lock_guard lock(m_process_mutex); + // Check the connection state if (m_msg_sender.isConnected()) { diff --git a/src/chargepoint/requestfifo/RequestFifoManager.h b/src/chargepoint/requestfifo/RequestFifoManager.h index 23966b5f..bcbd4c4b 100644 --- a/src/chargepoint/requestfifo/RequestFifoManager.h +++ b/src/chargepoint/requestfifo/RequestFifoManager.h @@ -19,6 +19,8 @@ along with OpenOCPP. If not, see . #ifndef OPENOCPP_REQUESTFIFOMANAGER_H #define OPENOCPP_REQUESTFIFOMANAGER_H +#include + #include "IRequestFifo.h" #include "Timer.h" @@ -99,6 +101,9 @@ class RequestFifoManager : public ocpp::messages::IRequestFifo::IListener /** @brief Retry count for the current request */ unsigned int m_request_retry_count; + /** @brief Mutex protectiing against concurrent processFifoRequest calls */ + std::mutex m_process_mutex; + /** @brief Process a FIFO request */ void processFifoRequest(); };