diff --git a/command_table.cpp b/command_table.cpp
index 6779d55..1d9e063 100644
--- a/command_table.cpp
+++ b/command_table.cpp
@@ -61,6 +61,16 @@
                              entry("CMD=%x", command.cmd()));
             return;
         }
+        std::shared_ptr<session::Session> session =
+            std::get<session::Manager&>(singletonPool)
+                .getSession(handler->sessionID);
+
+        // Ignore messages that are not part of an active session
+        auto state = static_cast<session::State>(session->state());
+        if (state != session::State::active)
+        {
+            return;
+        }
 
         auto bus = getSdBus();
         // forward the request onto the main ipmi queue
@@ -69,9 +79,7 @@
         uint8_t lun = command.lun();
         uint8_t netFn = command.netFn();
         uint8_t cmd = command.cmd();
-        std::shared_ptr<session::Session> session =
-            std::get<session::Manager&>(singletonPool)
-                .getSession(handler->sessionID);
+
         std::map<std::string, ipmi::Value> options = {
             {"userId", ipmi::Value(static_cast<int>(
                            ipmi::ipmiUserGetUserId(session->userName)))},
@@ -110,6 +118,20 @@
     {
         auto start = std::chrono::steady_clock::now();
 
+        // Ignore messages that are not part of an active/pre-active session
+        if (handler->sessionID != session::sessionZero)
+        {
+            std::shared_ptr<session::Session> session =
+                std::get<session::Manager&>(singletonPool)
+                    .getSession(handler->sessionID);
+            auto state = static_cast<session::State>(session->state());
+            if ((state != session::State::setupInProgress) &&
+                (state != session::State::active))
+            {
+                return;
+            }
+        }
+
         handler->outPayload =
             iterator->second->executeCommand(commandData, handler);
 
