diff options
author | Jiří Klimeš <jklimes@redhat.com> | 2015-09-09 10:59:47 +0200 |
---|---|---|
committer | Jiří Klimeš <jklimes@redhat.com> | 2015-09-09 12:10:05 +0200 |
commit | c36a0b9106e022f6fae4b68dd0b1f7c045c6b156 (patch) | |
tree | 69a40103a19ced1c8125c468da039048602b1cac | |
parent | e7d66f1df61ebdc7652ba34a4e1baddcc86b9e26 (diff) | |
download | NetworkManager-jk/libnm-con-add-fix.tar.gz |
libnm: fix initializing of new connectionsjk/libnm-con-add-fix
connection_added() can be called before init_get_settings_cb(), and we can't
complete the connection until it is visible, else it would be uninitialized.
Test case:
* have 'em1' interface
$ nmcli con add type ethernet con-name myeth ifname em1 autoconnect no
(process:9039): libnm-CRITICAL **: nm_connection_get_id: assertion 's_con != NULL' failed
Connection '(null)' ((null)) successfully added.
$ nmcli con add type ethernet con-name myeth ifname em1X autoconnect no
Connection 'myeth' (71159504-c2af-4773-8ca9-a3626aa0da33) successfully added.
-rw-r--r-- | libnm/nm-remote-connection.c | 1 | ||||
-rw-r--r-- | libnm/nm-remote-settings.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/libnm/nm-remote-connection.c b/libnm/nm-remote-connection.c index e2073784ca..e5c5b99491 100644 --- a/libnm/nm-remote-connection.c +++ b/libnm/nm-remote-connection.c @@ -706,6 +706,7 @@ init_get_settings_cb (GObject *proxy, priv->visible = TRUE; replace_settings (init_data->connection, settings); g_variant_unref (settings); + g_object_notify (init_data->connection, NM_REMOTE_CONNECTION_VISIBLE); init_async_complete (init_data, NULL); } diff --git a/libnm/nm-remote-settings.c b/libnm/nm-remote-settings.c index 4d240e3b38..b25fa65983 100644 --- a/libnm/nm-remote-settings.c +++ b/libnm/nm-remote-settings.c @@ -237,8 +237,10 @@ connection_added (NMRemoteSettings *self, if (nm_remote_connection_get_visible (remote)) g_ptr_array_add (priv->visible_connections, remote); - else + else { g_signal_stop_emission (self, signals[CONNECTION_ADDED], 0); + return; + } path = nm_connection_get_path (NM_CONNECTION (remote)); addinfo = add_connection_info_find (self, path); |