summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libnm-core/nm-setting-vpn.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/libnm-core/nm-setting-vpn.c b/libnm-core/nm-setting-vpn.c
index d5d37c0907..ab712fdaad 100644
--- a/libnm-core/nm-setting-vpn.c
+++ b/libnm-core/nm-setting-vpn.c
@@ -934,11 +934,26 @@ vpn_secrets_from_dbus (NMSetting *setting,
NMSettingParseFlags parse_flags,
GError **error)
{
- nm_auto_unset_gvalue GValue object_value = G_VALUE_INIT;
+ NMSettingVpn *self = NM_SETTING_VPN (setting);
+ NMSettingVpnPrivate *priv = NM_SETTING_VPN_GET_PRIVATE (self);
+ gs_unref_hashtable GHashTable *hash_free = NULL;
+ GVariantIter iter;
+ const char *key;
+ const char *val;
+
+ hash_free = g_steal_pointer (&priv->secrets);
- g_value_init (&object_value, G_TYPE_HASH_TABLE);
- _nm_utils_strdict_from_dbus (value, &object_value);
- return nm_g_object_set_property (G_OBJECT (setting), property, &object_value, error);
+ g_variant_iter_init (&iter, value);
+ while (g_variant_iter_next (&iter, "{&s&s}", &key, &val)) {
+ if (!key[0])
+ continue;
+ g_hash_table_insert (_ensure_strdict (&priv->secrets, TRUE),
+ g_strdup (key),
+ g_strdup (val));
+ }
+
+ _notify (self, PROP_SECRETS);
+ return TRUE;
}
static GVariant *