[Pkg-owncloud-commits] [owncloud-client] 44/159: CookieJar: Don't accidentally overwrite cookies. #2808

Sandro Knauß hefee-guest at moszumanska.debian.org
Fri May 1 13:05:20 UTC 2015


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit 54836822813a18c725c2916232103779ef9e75ab
Author: Christian Kamm <kamm at incasoftware.de>
Date:   Fri Mar 27 10:49:24 2015 +0100

    CookieJar: Don't accidentally overwrite cookies. #2808
    
    Calling save() in the CookieJar destructor was problematic. For instance
    we sometimes create a new QNAM with a new CookieJar and then call
    setCookieJar() on it to assign some other jar. That destroy the fresh
    jar and potentially overwrite cookies.
    
    Also explicitly saving the account's cookies when the account is saved
    is more explicit and thus more reliable than counting on the Account
    destructor to do it.
---
 src/libsync/account.cpp   | 9 +++++++++
 src/libsync/cookiejar.cpp | 1 -
 src/libsync/cookiejar.h   | 3 ++-
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp
index 14e3ad2..a46611d 100644
--- a/src/libsync/account.cpp
+++ b/src/libsync/account.cpp
@@ -131,6 +131,15 @@ void Account::save()
     if (!certs.isEmpty()) {
         settings->setValue( QLatin1String(caCertsKeyC), certs );
     }
+
+    // Save cookies.
+    if (_am) {
+        CookieJar* jar = qobject_cast<CookieJar*>(_am->cookieJar());
+        if (jar) {
+            qDebug() << "Saving cookies.";
+            jar->save();
+        }
+    }
 }
 
 AccountPtr Account::restore()
diff --git a/src/libsync/cookiejar.cpp b/src/libsync/cookiejar.cpp
index 62aa2cc..6290059 100644
--- a/src/libsync/cookiejar.cpp
+++ b/src/libsync/cookiejar.cpp
@@ -71,7 +71,6 @@ CookieJar::CookieJar(QObject *parent) :
 
 CookieJar::~CookieJar()
 {
-    save();
 }
 
 bool CookieJar::setCookiesFromUrl(const QList<QNetworkCookie>& cookieList, const QUrl& url)
diff --git a/src/libsync/cookiejar.h b/src/libsync/cookiejar.h
index a7c8c67..99cbfbf 100644
--- a/src/libsync/cookiejar.h
+++ b/src/libsync/cookiejar.h
@@ -34,10 +34,11 @@ public:
     using QNetworkCookieJar::setAllCookies;
     using QNetworkCookieJar::allCookies;
 
+    void save();
+
 signals:
     void newCookiesForUrl(const QList<QNetworkCookie>& cookieList, const QUrl& url);
 private:
-    void save();
     void restore();
     QList<QNetworkCookie> removeExpired(const QList<QNetworkCookie> &cookies);
     QString storagePath() const;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list