Bug 1156771 - Part 2: Assert that the cache entry for the intercepted doesn't exist in the cache storage before we try to open it for the first time; r=michal
authorEhsan Akhgari <ehsan@mozilla.com>
Tue, 21 Apr 2015 21:25:30 -0400
changeset 241224 b0480e99fa3838dedb90eb67fe38551177528b0e
parent 241223 e0f7cbf55fdf504001b81475b9d1d38f2e9ce433
child 241225 5496344c05e9947d961d8ae939ed49ddbfc93b04
push id59053
push usereakhgari@mozilla.com
push dateMon, 27 Apr 2015 17:04:38 +0000
treeherdermozilla-inbound@5496344c05e9 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmichal
bugs1156771
milestone40.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1156771 - Part 2: Assert that the cache entry for the intercepted doesn't exist in the cache storage before we try to open it for the first time; r=michal
netwerk/protocol/http/nsHttpChannel.cpp
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -36,16 +36,17 @@
 #include "mozilla/TimeStamp.h"
 #include "nsError.h"
 #include "nsPrintfCString.h"
 #include "nsAlgorithm.h"
 #include "nsQueryObject.h"
 #include "GeckoProfiler.h"
 #include "nsIConsoleService.h"
 #include "mozilla/Attributes.h"
+#include "mozilla/DebugOnly.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/VisualEventTracer.h"
 #include "nsISSLSocketControl.h"
 #include "sslt.h"
 #include "nsContentUtils.h"
 #include "nsIClassOfService.h"
 #include "nsIPermissionManager.h"
 #include "nsIPrincipal.h"
@@ -2788,16 +2789,20 @@ nsHttpChannel::OpenCacheEntry(bool isHtt
     }
     if (PossiblyIntercepted()) {
         extension.Append(nsPrintfCString("u%lld", mInterceptionID));
     }
 
     // If this channel should be intercepted, we do not open a cache entry for this channel
     // until the interception process is complete and the consumer decides what to do with it.
     if (mInterceptCache == MAYBE_INTERCEPT) {
+        DebugOnly<bool> exists;
+        MOZ_ASSERT(NS_FAILED(cacheStorage->Exists(openURI, extension, &exists)) || !exists,
+                   "The entry must not exist in the cache before we create it here");
+
         nsCOMPtr<nsICacheEntry> entry;
         rv = cacheStorage->OpenTruncate(openURI, extension, getter_AddRefs(entry));
         NS_ENSURE_SUCCESS(rv, rv);
 
         nsCOMPtr<nsINetworkInterceptController> controller;
         GetCallback(controller);
 
         nsRefPtr<InterceptedChannelChrome> intercepted =