diff --git a/netwerk/base/src/nsPACMan.cpp b/netwerk/base/src/nsPACMan.cpp index 93a1865a236..f3313d03c85 100644 --- a/netwerk/base/src/nsPACMan.cpp +++ b/netwerk/base/src/nsPACMan.cpp @@ -369,6 +369,7 @@ nsPACMan::LoadPACFromURI(const nsCString &spec) if (!spec.IsEmpty()) { mPACURISpec = spec; mPACURIRedirectSpec.Truncate(); + mNormalPACURISpec.Truncate(); // set at load time mLoadFailureCount = 0; // reset } @@ -399,6 +400,7 @@ nsPACMan::StartLoading() // NOTE: This results in GetProxyForURI being called if (pacURI) { + pacURI->GetSpec(mNormalPACURISpec); ios->NewChannelFromURI(pacURI, getter_AddRefs(channel)); } else { diff --git a/netwerk/base/src/nsPACMan.h b/netwerk/base/src/nsPACMan.h index 55d02501f7b..7d092829308 100644 --- a/netwerk/base/src/nsPACMan.h +++ b/netwerk/base/src/nsPACMan.h @@ -136,7 +136,8 @@ public: */ bool IsPACURI(const nsACString &spec) { - return mPACURISpec.Equals(spec) || mPACURIRedirectSpec.Equals(spec); + return mPACURISpec.Equals(spec) || mPACURIRedirectSpec.Equals(spec) || + mNormalPACURISpec.Equals(spec); } bool IsPACURI(nsIURI *uri) { @@ -206,8 +207,13 @@ private: mozilla::LinkedList mPendingQ; /* pac thread only */ - nsCString mPACURISpec; // Not an nsIURI for use off main thread + // These specs are not nsIURI so that they can be used off the main thread. + // The non-normalized versions are directly from the configuration, the + // normalized version has been extracted from an nsIURI + nsCString mPACURISpec; nsCString mPACURIRedirectSpec; + nsCString mNormalPACURISpec; + nsCOMPtr mLoader; bool mLoadPending; bool mShutdown;