diff --git a/http/http_connection.h b/http/http_connection.h
index 4ef3bc6..5155779 100644
--- a/http/http_connection.h
+++ b/http/http_connection.h
@@ -833,16 +833,30 @@
     {
         cancelDeadlineTimer();
 
-        timerCancelKey = timerQueue.add([this, self(shared_from_this())] {
-            // Mark timer as not active to avoid canceling it during
-            // Connection destructor which leads to double free issue
-            timerCancelKey.reset();
-            if (!isAlive())
-            {
-                return;
-            }
-            close();
-        });
+        timerCancelKey =
+            timerQueue.add([this, self(shared_from_this()),
+                            readCount{parser->get().body().size()}] {
+                // Mark timer as not active to avoid canceling it during
+                // Connection destructor which leads to double free issue
+                timerCancelKey.reset();
+                if (!isAlive())
+                {
+                    return;
+                }
+
+                // Restart timer if read is in progress.
+                // With threshold can be used to drop slow connections
+                // to protect against slow-rate DoS attack
+                if (parser->get().body().size() > readCount)
+                {
+                    BMCWEB_LOG_DEBUG << this
+                                     << " restart timer - read in progress";
+                    startDeadline();
+                    return;
+                }
+
+                close();
+            });
         BMCWEB_LOG_DEBUG << this << " timer added: " << &timerQueue << ' '
                          << *timerCancelKey;
     }
diff --git a/http/timer_queue.h b/http/timer_queue.h
index 26eea13..7339d66 100644
--- a/http/timer_queue.h
+++ b/http/timer_queue.h
@@ -45,12 +45,15 @@
         while (!dq.empty())
         {
             auto& x = dq.front();
-            if (now - x.first < std::chrono::seconds(5))
-            {
-                break;
-            }
+            // Check expiration time only for active handlers,
+            // remove canceled ones immediately
             if (x.second)
             {
+                if (now - x.first < std::chrono::seconds(5))
+                {
+                    break;
+                }
+
                 BMCWEB_LOG_DEBUG << "timer call: " << this << ' ' << step;
                 // we know that timer handlers are very simple currenty; call
                 // here
