Skip to content

Commit a4cbe5f

Browse files
committed
bug #21582 [HttpCache] purge both http and https from http cache (dbu)
This PR was submitted for the master branch but it was merged into the 2.7 branch instead (closes #21582). Discussion ---------- [HttpCache] purge both http and https from http cache | Q | A | ------------- | --- | Branch? | master | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | => travis | Fixed tickets | - | License | MIT | Doc PR | - The HTTP cache store of HttpCache respects the scheme for cache entries, which is the expected behaviour. however, Store::purge($url) also respects the scheme when invalidating the cache. This seems wrong to me. This PR is rather rough for now, and i did not even look at the tests. Do the maintainers agree with my assumption? Should it be a bugfix against 2.8? Any input on the code? Commits ------- 15da53c purge both http and https from http cache store
2 parents 64b2e56 + 15da53c commit a4cbe5f

File tree

1 file changed

+18
-2
lines changed
  • src/Symfony/Component/HttpKernel/HttpCache

1 file changed

+18
-2
lines changed

src/Symfony/Component/HttpKernel/HttpCache/Store.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,14 +317,30 @@ private function getMetadata($key)
317317
/**
318318
* Purges data for the given URL.
319319
*
320+
* This method purges both the HTTP and the HTTPS version of the cache entry.
321+
*
320322
* @param string $url A URL
321323
*
322-
* @return bool true if the URL exists and has been purged, false otherwise
324+
* @return bool true if the URL exists with either HTTP or HTTPS scheme and has been purged, false otherwise
323325
*/
324326
public function purge($url)
325327
{
326-
$key = $this->getCacheKey(Request::create($url));
328+
$http = preg_replace('#^https#', 'http', $url);
329+
$https = preg_replace('#^http#', 'https', $url);
327330

331+
return $this->doPurge($http) || $this->doPurge($https);
332+
}
333+
334+
/**
335+
* Purges data for the given URL.
336+
*
337+
* @param string $url A URL
338+
*
339+
* @return bool true if the URL exists and has been purged, false otherwise
340+
*/
341+
private function doPurge($url)
342+
{
343+
$key = $this->getCacheKey(Request::create($url));
328344
if (isset($this->locks[$key])) {
329345
flock($this->locks[$key], LOCK_UN);
330346
fclose($this->locks[$key]);

0 commit comments

Comments
 (0)