[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor-browser] 17/73: Bug 1779005 - Avoid setting |mLoader| to null if we already start a new PAC load, r=necko-reviewers, valentin a=RyanVM



This is an automated email from the git hooks/post-receive script.

richard pushed a commit to branch geckoview-102.3.0esr-12.0-1
in repository tor-browser.

commit a8420e6d329c80d03df68edf03fb20947953baad
Author: Kershaw Chang <kershaw@xxxxxxxxxxx>
AuthorDate: Thu Aug 11 13:51:52 2022 +0000

    Bug 1779005 - Avoid setting |mLoader| to null if we already start a new PAC load, r=necko-reviewers,valentin a=RyanVM
    
    Differential Revision: https://phabricator.services.mozilla.com/D154368
---
 netwerk/base/nsPACMan.cpp | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/netwerk/base/nsPACMan.cpp b/netwerk/base/nsPACMan.cpp
index f36940eab3f8e..63908e1cf0773 100644
--- a/netwerk/base/nsPACMan.cpp
+++ b/netwerk/base/nsPACMan.cpp
@@ -712,13 +712,6 @@ void nsPACMan::ContinueLoadingAfterPACUriKnown() {
 }
 
 void nsPACMan::OnLoadFailure() {
-  // We have to clear the loader to indicate that we are not loading PAC
-  // currently.
-  {
-    auto loader = mLoader.Lock();
-    loader.ref() = nullptr;
-  }
-
   int32_t minInterval = 5;    // 5 seconds
   int32_t maxInterval = 300;  // 5 minutes
 
@@ -875,6 +868,7 @@ nsPACMan::OnStreamComplete(nsIStreamLoader* loader, nsISupports* context,
                            const uint8_t* data) {
   MOZ_ASSERT(NS_IsMainThread(), "wrong thread");
 
+  bool loadSucceeded = NS_SUCCEEDED(status) && HttpRequestSucceeded(loader);
   {
     auto locked = mLoader.Lock();
     if (locked.ref() != loader) {
@@ -883,13 +877,21 @@ nsPACMan::OnStreamComplete(nsIStreamLoader* loader, nsISupports* context,
       // should be NS_ERROR_ABORT, and if so, then we know that we can and
       // should delay any processing.
       LOG(("OnStreamComplete: called more than once\n"));
-      if (status == NS_ERROR_ABORT) return NS_OK;
+      if (status == NS_ERROR_ABORT) {
+        return NS_OK;
+      }
+    } else if (!loadSucceeded) {
+      // We have to clear the loader to indicate that we are not loading PAC
+      // currently.
+      // Note that we can only clear the loader when |loader| and |mLoader| are
+      // the same one.
+      locked.ref() = nullptr;
     }
   }
 
   LOG(("OnStreamComplete: entry\n"));
 
-  if (NS_SUCCEEDED(status) && HttpRequestSucceeded(loader)) {
+  if (loadSucceeded) {
     // Get the URI spec used to load this PAC script.
     nsAutoCString pacURI;
     {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits