diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 955cb34..b3d803a 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -21,6 +21,7 @@
 
 #include <boost/asio/error.hpp>
 #include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/ssl/error.hpp>
 #include <boost/asio/ssl/stream.hpp>
 #include <boost/asio/ssl/stream_base.hpp>
 #include <boost/asio/ssl/verify_context.hpp>
@@ -610,7 +611,8 @@
                 doWrite();
                 return;
             }
-            if (ec == boost::beast::http::error::end_of_stream)
+            if (ec == boost::beast::http::error::end_of_stream ||
+                ec == boost::asio::ssl::error::stream_truncated)
             {
                 BMCWEB_LOG_WARNING("{} End of stream, closing {}", logPtr(this),
                                    ec);
@@ -715,6 +717,15 @@
                 return;
             }
 
+            if (ec == boost::beast::http::error::end_of_stream ||
+                ec == boost::asio::ssl::error::stream_truncated)
+            {
+                BMCWEB_LOG_WARNING("{} End of stream, closing {}", logPtr(this),
+                                   ec);
+                hardClose();
+                return;
+            }
+
             gracefulClose();
             return;
         }
@@ -783,6 +794,16 @@
             doWrite();
             return;
         }
+
+        if (ec == boost::beast::http::error::end_of_stream ||
+            ec == boost::asio::ssl::error::stream_truncated)
+        {
+            BMCWEB_LOG_WARNING("{} End of stream, closing {}", logPtr(this),
+                               ec);
+            hardClose();
+            return;
+        }
+
         if (ec)
         {
             BMCWEB_LOG_DEBUG("{} from write(2)", logPtr(this));
