From fec3bfe050fbb5947b807bc889eed928cb7b22c6 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Mon, 12 Jan 2015 11:16:43 +0100
Subject: [PATCH 4/9] Do not remove existing secrets when loading secrets from
 string map

E.g. when loading secrets for openconnect from plasma-nm secret agent
we want to keep secrets we already have from NetworkManager and do not
overwrite them with those secrets which are stored in KWallet
---
 src/settings/vpnsetting.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/settings/vpnsetting.cpp b/src/settings/vpnsetting.cpp
index 6dd8cb7..210093b 100644
--- a/src/settings/vpnsetting.cpp
+++ b/src/settings/vpnsetting.cpp
@@ -173,15 +173,19 @@ QVariantMap NetworkManager::VpnSetting::toMap() const
 
 void NetworkManager::VpnSetting::secretsFromStringMap(const NMStringMap &map)
 {
+    Q_D(VpnSetting);
+
     if (map.contains(QLatin1String("VpnSecrets"))) {
         const QStringList list = map.value(QLatin1String("VpnSecrets")).split("%SEP%");
         NMStringMap map;
         if (list.count() % 2 == 0) {
             for (int i = 0; i < list.count(); i += 2) {
-                map.insert(list[i], list[i + 1]);
+                if (d->secrets.contains(list[i])) {
+                    d->secrets.remove(list[i]);
+                }
+                d->secrets.insert(list[i], list[i + 1]);
             }
         }
-        setSecrets(map);
     }
 }
 
-- 
2.1.0