From 0abfed3e06c62b1156073bdf068a1b0ac23d2505 Mon Sep 17 00:00:00 2001 From: Guy Marriott Date: Tue, 30 Jul 2019 08:25:03 +1200 Subject: [PATCH] FIX Skip md5-ing the whole contents of a stream for etags --- src/Control/Middleware/ChangeDetectionMiddleware.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Control/Middleware/ChangeDetectionMiddleware.php b/src/Control/Middleware/ChangeDetectionMiddleware.php index 8a990d81a..1767a0161 100644 --- a/src/Control/Middleware/ChangeDetectionMiddleware.php +++ b/src/Control/Middleware/ChangeDetectionMiddleware.php @@ -4,6 +4,7 @@ namespace SilverStripe\Control\Middleware; use SilverStripe\Control\HTTPRequest; use SilverStripe\Control\HTTPResponse; +use SilverStripe\Control\HTTPStreamResponse; use SilverStripe\Core\Injector\Injectable; /** @@ -69,6 +70,11 @@ class ChangeDetectionMiddleware implements HTTPMiddleware return $etag; } + // Skip parsing the whole body of a stream + if ($response instanceof HTTPStreamResponse) { + return false; + } + // Generate etag from body return sprintf('"%s"', md5($response->getBody())); }