[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 16:10:44 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 70c29a0dc9c2c76eeb0b1036047496c6a1ff5376
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Nov 19 12:32:54 2010 +0000

    2010-11-19  Sergio Villar Senin  <svillar at igalia.com>
    
            Reviewed by Xan Lopez.
    
            [Gtk] "CRITICAL **: msg_got_headers_cb: assertion `entry' failed" when using HTTP cache
            https://bugs.webkit.org/show_bug.cgi?id=49666
    
            WebKit resource load cache does validate its own resources by
            issuing conditional requests to the server. The HTTP cache was
            making the assumption that any possible conditional request was
            always generated by itself.
    
            * platform/network/soup/cache/webkit/soup-cache.c:
            (webkit_soup_cache_entry_remove): added an assertion
            (msg_got_headers_cb):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72378 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index adba9cd..d3e5854 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-11-19  Sergio Villar Senin  <svillar at igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [Gtk] "CRITICAL **: msg_got_headers_cb: assertion `entry' failed" when using HTTP cache
+        https://bugs.webkit.org/show_bug.cgi?id=49666
+
+        WebKit resource load cache does validate its own resources by
+        issuing conditional requests to the server. The HTTP cache was
+        making the assumption that any possible conditional request was
+        always generated by itself.
+
+        * platform/network/soup/cache/webkit/soup-cache.c:
+        (webkit_soup_cache_entry_remove): added an assertion
+        (msg_got_headers_cb):
+
 2010-11-19  Dai Mikurube  <dmikurube at google.com>
 
         Reviewed by Kent Tamura.
diff --git a/WebCore/platform/network/soup/cache/webkit/soup-cache.c b/WebCore/platform/network/soup/cache/webkit/soup-cache.c
index 73b15ba..faa6114 100644
--- a/WebCore/platform/network/soup/cache/webkit/soup-cache.c
+++ b/WebCore/platform/network/soup/cache/webkit/soup-cache.c
@@ -702,6 +702,7 @@ webkit_soup_cache_entry_remove (WebKitSoupCache *cache, WebKitSoupCacheEntry *en
 		return FALSE;
 	}
 
+	g_assert (!entry->dirty);
 	g_assert (g_list_length (cache->priv->lru_start) == g_hash_table_size (cache->priv->cache));
 
 	/* Remove from cache */
@@ -965,16 +966,21 @@ msg_got_headers_cb (SoupMessage *msg, gpointer user_data)
 		entry = g_hash_table_lookup (cache->priv->cache, key);
 		g_free (key);
 
-		g_return_if_fail (entry);
-
-		entry->being_validated = FALSE;
-
-		/* We update the headers of the existing cache item,
-		   plus its age */
-		soup_message_headers_foreach (msg->response_headers,
-					      (SoupMessageHeadersForeachFunc)update_headers,
-					      entry->headers);
-		webkit_soup_cache_entry_set_freshness (entry, msg, cache);
+		/* It's possible to get a CACHE_VALIDATES with no
+		 * entry in the hash table. This could happen if for
+		 * example the soup client is the one creating the
+		 * conditional request.
+		 */
+		if (entry) {
+			entry->being_validated = FALSE;
+
+			/* We update the headers of the existing cache item,
+			   plus its age */
+			soup_message_headers_foreach (msg->response_headers,
+						      (SoupMessageHeadersForeachFunc)update_headers,
+						      entry->headers);
+			webkit_soup_cache_entry_set_freshness (entry, msg, cache);
+		}
 	}
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list