diff -r aa28c4f2962a -r 974b8a3e2d55 mozilla-revert_621446.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mozilla-revert_621446.patch Tue Mar 20 08:18:12 2012 +0100 @@ -0,0 +1,148 @@ +# HG changeset patch +# Parent a4b050d8677d437a205e1cb88079ecd359cbd08d +Revert investigation patch for bmo#621446; as it is useless on desktop and breaks the build for certain compilers + +diff --git a/netwerk/protocol/http/HttpChannelParent.cpp b/netwerk/protocol/http/HttpChannelParent.cpp +--- a/netwerk/protocol/http/HttpChannelParent.cpp ++++ b/netwerk/protocol/http/HttpChannelParent.cpp +@@ -52,29 +52,25 @@ + #include "nsIBadCertListener2.h" + #include "nsICacheEntryDescriptor.h" + #include "nsSerializationHelper.h" + #include "nsISerializable.h" + #include "nsIAssociatedContentSecurity.h" + #include "nsIApplicationCacheService.h" + #include "nsIOfflineCacheUpdate.h" + #include "nsIRedirectChannelRegistrar.h" +-#include "prinit.h" + + namespace mozilla { + namespace net { + + HttpChannelParent::HttpChannelParent(PBrowserParent* iframeEmbedding) + : mIPCClosed(false) + , mStoredStatus(0) + , mStoredProgress(0) + , mStoredProgressMax(0) +- , mSentRedirect1Begin(false) +- , mSentRedirect1BeginFailed(false) +- , mReceivedRedirect2Verify(false) + { + // Ensure gHttpHandler is initialized: we need the atom table up and running. + nsIHttpProtocolHandler* handler; + CallGetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "http", &handler); + NS_ASSERTION(handler, "no http handler"); + + mTabParent = do_QueryObject(static_cast(iframeEmbedding)); + } +@@ -326,21 +322,16 @@ HttpChannelParent::RecvUpdateAssociatedC + mAssociatedContentSecurity->SetCountSubRequestsHighSecurity(high); + mAssociatedContentSecurity->SetCountSubRequestsLowSecurity(low); + mAssociatedContentSecurity->SetCountSubRequestsBrokenSecurity(broken); + mAssociatedContentSecurity->SetCountSubRequestsNoSecurity(no); + } + return true; + } + +-// Bug 621446 investigation, we don't want conditional PR_Aborts bellow to be +-// merged to a single address. +-#pragma warning(disable : 4068) +-#pragma GCC optimize ("O0") +- + bool + HttpChannelParent::RecvRedirect2Verify(const nsresult& result, + const RequestHeaderTuples& changedHeaders) + { + if (NS_SUCCEEDED(result)) { + nsCOMPtr newHttpChannel = + do_QueryInterface(mRedirectChannel); + +@@ -348,40 +339,23 @@ HttpChannelParent::RecvRedirect2Verify(c + for (PRUint32 i = 0; i < changedHeaders.Length(); i++) { + newHttpChannel->SetRequestHeader(changedHeaders[i].mHeader, + changedHeaders[i].mValue, + changedHeaders[i].mMerge); + } + } + } + +- if (!mRedirectCallback) { +- // Bug 621446 investigation (optimization turned off above) +- if (mReceivedRedirect2Verify) +- NS_RUNTIMEABORT("Duplicate fire"); +- if (mSentRedirect1BeginFailed) +- NS_RUNTIMEABORT("Send to child failed"); +- if (mSentRedirect1Begin && NS_FAILED(result)) +- NS_RUNTIMEABORT("Redirect failed"); +- if (mSentRedirect1Begin && NS_SUCCEEDED(result)) +- NS_RUNTIMEABORT("Redirect succeeded"); +- if (!mRedirectChannel) +- NS_RUNTIMEABORT("Missing redirect channel"); +- } +- + mReceivedRedirect2Verify = true; + + mRedirectCallback->OnRedirectVerifyCallback(result); + mRedirectCallback = nsnull; + return true; + } + +-// Bug 621446 investigation +-#pragma GCC reset_options +- + bool + HttpChannelParent::RecvDocumentChannelCleanup() + { + // From now on only using mAssociatedContentSecurity. Free everything else. + mChannel = 0; // Reclaim some memory sooner. + mCacheDescriptor = 0; // Else we'll block other channels reading same URI + return true; + } +@@ -583,24 +557,18 @@ HttpChannelParent::StartRedirect(PRUint3 + + nsHttpChannel *httpChan = static_cast(mChannel.get()); + nsHttpResponseHead *responseHead = httpChan->GetResponseHead(); + bool result = SendRedirect1Begin(newChannelId, + IPC::URI(newURI), + redirectFlags, + responseHead ? *responseHead + : nsHttpResponseHead()); +- if (!result) { +- // Bug 621446 investigation +- mSentRedirect1BeginFailed = true; ++ if (!result) + return NS_BINDING_ABORTED; +- } +- +- // Bug 621446 investigation +- mSentRedirect1Begin = true; + + // Result is handled in RecvRedirect2Verify above + + mRedirectChannel = newChannel; + mRedirectCallback = callback; + return NS_OK; + } + +diff --git a/netwerk/protocol/http/HttpChannelParent.h b/netwerk/protocol/http/HttpChannelParent.h +--- a/netwerk/protocol/http/HttpChannelParent.h ++++ b/netwerk/protocol/http/HttpChannelParent.h +@@ -128,18 +128,14 @@ private: + nsCOMPtr mRedirectChannel; + nsCOMPtr mRedirectCallback; + + // state for combining OnStatus/OnProgress with OnDataAvailable + // into one IPDL call to child. + nsresult mStoredStatus; + PRUint64 mStoredProgress; + PRUint64 mStoredProgressMax; +- +- bool mSentRedirect1Begin : 1; +- bool mSentRedirect1BeginFailed : 1; +- bool mReceivedRedirect2Verify : 1; + }; + + } // namespace net + } // namespace mozilla + + #endif // mozilla_net_HttpChannelParent_h