From 037874ee145b3a4a20d952f45f7e2d52d1841d0a Mon Sep 17 00:00:00 2001
From: Habbus <44402940+Habbus@users.noreply.github.com>
Date: Thu, 1 May 2025 13:46:57 +0200
Subject: [PATCH 1/2] Add mutex to request fifo for preventing concurrent calls
to the process function
---
src/chargepoint/requestfifo/RequestFifoManager.h | 5 +++++
1 file changed, 5 insertions(+)
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();
};
From e9b229ddb58cd7c5d16302300b06dee9dce36317 Mon Sep 17 00:00:00 2001
From: Habbus <44402940+Habbus@users.noreply.github.com>
Date: Thu, 1 May 2025 13:49:18 +0200
Subject: [PATCH 2/2] Use mutex to request fifo for preventing concurrent calls
to the process function
---
src/chargepoint/requestfifo/RequestFifoManager.cpp | 2 ++
1 file changed, 2 insertions(+)
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())
{