Legoktm has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/94685


Change subject: Clean up global state when job finishes
......................................................................

Clean up global state when job finishes

Change-Id: Iff001ac95c0d7236c58434fddb843a52f32aa202
---
M MassMessageJob.php
1 file changed, 16 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MassMessage 
refs/changes/85/94685/1

diff --git a/MassMessageJob.php b/MassMessageJob.php
index 0ed30c2..84a8e33 100644
--- a/MassMessageJob.php
+++ b/MassMessageJob.php
@@ -193,20 +193,26 @@
        function makeAPIRequest( array $params ) {
                global $wgUser, $wgRequest;
 
+               $oldRequest = $wgRequest;
+               $oldUser = $wgUser;
+
                $wgRequest = new DerivativeRequest(
                        $wgRequest,
                        $params,
                        true // was posted?
                );
-               $wgUser = MassMessage::getMessengerUser();
                // New user objects will use $wgRequest, so we set that
                // to our DerivativeRequest, so we don't run into any issues
+               $wgUser = MassMessage::getMessengerUser();
 
-               RequestContext::getMain()->setUser( $wgUser );
-               RequestContext::getMain()->setRequest( $wgRequest );
+               $context = RequestContext::getMain();
                // All further internal API requests will use the main
                // RequestContext, so setting it here will fix it for
                // all other internal uses, like how LQT does
+               $oldCUser = $context->getUser();
+               $oldCRequest = $context->getRequest();
+               $context->setUser( $wgUser );
+               $context->setRequest( $wgRequest );
 
                $api = new ApiMain(
                        $wgRequest,
@@ -218,5 +224,12 @@
                } catch ( UsageException $e ) {
                        $this->logLocalFailure( $e->getCodeString() );
                }
+
+               // Cleanup all the stuff we polluted
+               $context->setUser( $oldCUser );
+               $context->setRequest( $oldCRequest );
+               $wgUser = $oldUser;
+               $wgRequest = $oldRequest;
+
        }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/94685
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iff001ac95c0d7236c58434fddb843a52f32aa202
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MassMessage
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to