r21327 - in /desktop/experimental/libsoup2.4/debian: changelog patches/01_improve_cookies_performance.patch
kov at users.alioth.debian.org
kov at users.alioth.debian.org
Fri Sep 11 17:53:25 UTC 2009
Author: kov
Date: Fri Sep 11 17:53:25 2009
New Revision: 21327
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=21327
Log:
Patch from upstream to handle cookies with less writes to disk (Closes: ##530964)
Added:
desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch
Modified:
desktop/experimental/libsoup2.4/debian/changelog
Modified: desktop/experimental/libsoup2.4/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/libsoup2.4/debian/changelog?rev=21327&op=diff
==============================================================================
--- desktop/experimental/libsoup2.4/debian/changelog [utf-8] (original)
+++ desktop/experimental/libsoup2.4/debian/changelog [utf-8] Fri Sep 11 17:53:25 2009
@@ -1,3 +1,11 @@
+libsoup2.4 (2.27.92-2) experimental; urgency=low
+
+ * debian/patches/01_improve_cookies_performance.patch:
+ - patch from upstream to avoid writing too much to the disk when
+ handling cookies (Closes: #530964)
+
+ -- Gustavo Noronha Silva <kov at debian.org> Fri, 11 Sep 2009 14:52:33 -0300
+
libsoup2.4 (2.27.92-1) experimental; urgency=low
[ Emilio Pozuelo Monfort ]
Added: desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch?rev=21327&op=file
==============================================================================
--- desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch (added)
+++ desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch [utf-8] Fri Sep 11 17:53:25 2009
@@ -1,0 +1,131 @@
+commit cc3d838689f5d7828add2ee1830e0e783d235115
+Author: Gustavo Noronha Silva <gustavo.noronha at collabora.co.uk>
+Date: Tue Sep 8 09:38:45 2009 -0300
+
+ Keep database handle open, and avoid synchronous writes
+
+ The synchronous writes behavior is the safest, but has very poor
+ performance, and causes UI hangs for users of soup.
+
+ Bug #584522
+
+diff --git a/libsoup/soup-cookie-jar-sqlite.c b/libsoup/soup-cookie-jar-sqlite.c
+index 5ec9a75..b7bb579 100644
+--- a/libsoup/soup-cookie-jar-sqlite.c
++++ b/libsoup/soup-cookie-jar-sqlite.c
+@@ -4,6 +4,7 @@
+ *
+ * Using danw's soup-cookie-jar-text as template
+ * Copyright (C) 2008 Diego Escalante Urrelo
++ * Copyright (C) 2009 Collabora Ltd.
+ */
+
+ #ifdef HAVE_CONFIG_H
+@@ -37,7 +38,7 @@ enum {
+
+ typedef struct {
+ char *filename;
+-
++ sqlite3 *db;
+ } SoupCookieJarSqlitePrivate;
+
+ #define SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SOUP_TYPE_COOKIE_JAR_SQLITE, SoupCookieJarSqlitePrivate))
+@@ -67,6 +68,9 @@ finalize (GObject *object)
+
+ g_free (priv->filename);
+
++ if (priv->db)
++ sqlite3_close (priv->db);
++
+ G_OBJECT_CLASS (soup_cookie_jar_sqlite_parent_class)->finalize (object);
+ }
+
+@@ -252,24 +256,43 @@ try_exec:
+ }
+ }
+ }
+-
+-static void
+-load (SoupCookieJar *jar)
++
++/* Follows sqlite3 convention; returns TRUE on error */
++static gboolean
++open_db (SoupCookieJar *jar)
+ {
+ SoupCookieJarSqlitePrivate *priv =
+ SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE (jar);
+
+- sqlite3 *db;
++ char *error = NULL;
+
+- if (sqlite3_open (priv->filename, &db)) {
+- sqlite3_close (db);
++ if (sqlite3_open (priv->filename, &priv->db)) {
++ sqlite3_close (priv->db);
++ priv->db = NULL;
+ g_warning ("Can't open %s", priv->filename);
+- return;
++ return TRUE;
++ }
++
++ if (sqlite3_exec (priv->db, "PRAGMA synchronous = OFF", NULL, NULL, &error)) {
++ g_warning ("Failed to execute query: %s", error);
++ sqlite3_free (error);
+ }
+
+- exec_query_with_try_create_table (db, QUERY_ALL, callback, jar);
++ return FALSE;
++}
++
++static void
++load (SoupCookieJar *jar)
++{
++ SoupCookieJarSqlitePrivate *priv =
++ SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE (jar);
++
++ if (priv->db == NULL) {
++ if (open_db (jar))
++ return;
++ }
+
+- sqlite3_close (db);
++ exec_query_with_try_create_table (priv->db, QUERY_ALL, callback, jar);
+ }
+
+ static void
+@@ -279,20 +302,18 @@ changed (SoupCookieJar *jar,
+ {
+ SoupCookieJarSqlitePrivate *priv =
+ SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE (jar);
+- sqlite3 *db;
+ char *query;
+
+- if (sqlite3_open (priv->filename, &db)) {
+- sqlite3_close (db);
+- g_warning ("Can't open %s", priv->filename);
+- return;
++ if (priv->db == NULL) {
++ if (open_db (jar))
++ return;
+ }
+
+ if (old_cookie) {
+ query = sqlite3_mprintf (QUERY_DELETE,
+ old_cookie->name,
+ old_cookie->domain);
+- exec_query_with_try_create_table (db, query, NULL, NULL);
++ exec_query_with_try_create_table (priv->db, query, NULL, NULL);
+ sqlite3_free (query);
+ }
+
+@@ -308,9 +329,7 @@ changed (SoupCookieJar *jar,
+ expires,
+ new_cookie->secure,
+ new_cookie->http_only);
+- exec_query_with_try_create_table (db, query, NULL, NULL);
++ exec_query_with_try_create_table (priv->db, query, NULL, NULL);
+ sqlite3_free (query);
+ }
+-
+- sqlite3_close (db);
+ }
More information about the pkg-gnome-commits
mailing list