$trxProfiler = Profiler::instance()->getTransactionProfiler();
if ( $request->wasPosted() && !$action->doesWrites() ) {
$trxProfiler->setExpectations( $trxLimits['POST-nonwrite'], __METHOD__ );
+ $request->markAsSafeRequest();
}
# Let CDN cache things if we can purge them.
$trxLimits = $this->config->get( 'TrxProfilerLimits' );
$trxProfiler = Profiler::instance()->getTransactionProfiler();
$trxProfiler->setLogger( LoggerFactory::getInstance( 'DBPerformance' ) );
- if ( $request->wasPosted() ) {
- $trxProfiler->setExpectations( $trxLimits['POST'], __METHOD__ );
- } else {
+ if ( $request->hasSafeMethod() ) {
$trxProfiler->setExpectations( $trxLimits['GET'], __METHOD__ );
+ } else {
+ $trxProfiler->setExpectations( $trxLimits['POST'], __METHOD__ );
}
// If the user has forceHTTPS set to true, or if the user
// isLoggedIn() will do all sorts of weird stuff.
if (
$request->getProtocol() == 'http' &&
+ // switch to HTTPS only when supported by the server
+ preg_match( '#^https://#', wfExpandUrl( $request->getRequestURL(), PROTO_HTTPS ) ) &&
(
$request->getSession()->shouldForceHTTPS() ||
// Check the cookie manually, for paranoia
// Assure deferred updates are not in the main transaction
wfGetLBFactory()->commitMasterChanges( __METHOD__ );
- // Ignore things like master queries/connections on GET requests
- // as long as they are in deferred updates (which catch errors).
- Profiler::instance()->getTransactionProfiler()->resetExpectations();
+ // Loosen DB query expectations since the HTTP client is unblocked
+ $trxProfiler = Profiler::instance()->getTransactionProfiler();
+ $trxProfiler->resetExpectations();
+ $trxProfiler->setExpectations(
+ $this->config->get( 'TrxProfilerLimits' )['PostSend'],
+ __METHOD__
+ );
// Do any deferred jobs
DeferredUpdates::doUpdates( 'enqueue' );