Fix URL comparison used for cacheability decision
authorRoan Kattouw <roan.kattouw@gmail.com>
Mon, 16 Feb 2015 20:20:21 +0000 (12:20 -0800)
committerOri.livneh <ori@wikimedia.org>
Mon, 16 Feb 2015 21:30:34 +0000 (21:30 +0000)
HTTPS hits were never marked as cacheable, because
getFullRequestURL() (https://...) was being compared to
getSquidURLs() (which are all http://...).

Instead, expand the request URL with PROTO_INTERNAL and
use that for the comparison.

Bug: T89673
Change-Id: I3402820613bc6839fa2e2d053ddffcbf1b17ddb5

includes/MediaWiki.php

index 669d8e9..2a0a405 100644 (file)
@@ -393,7 +393,11 @@ class MediaWiki {
                if ( $action instanceof Action ) {
                        # Let Squid cache things if we can purge them.
                        if ( $this->config->get( 'UseSquid' ) &&
-                               in_array( $request->getFullRequestURL(), $requestTitle->getSquidURLs() )
+                               in_array(
+                                       // Use PROTO_INTERNAL because that's what getSquidURLs() uses
+                                       wfExpandUrl( $request->getRequestURL(), PROTO_INTERNAL ),
+                                       $requestTitle->getSquidURLs()
+                               )
                        ) {
                                $output->setSquidMaxage( $this->config->get( 'SquidMaxage' ) );
                        }