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();
};