Revert "core: create virtual device on settings changes in idle handler"

When AddConnection() or Update() terminate, the (unrealized) virtual
device should be already be available, otherwise an activation attempt
of that connection can fail.

https://bugzilla.redhat.com/show_bug.cgi?id=1804350

This reverts commit c163207b07.

(cherry picked from commit efc04b1285)
(cherry picked from commit 987c1d282a)
This commit is contained in:
Beniamino Galvani 2020-02-18 19:09:18 +01:00
parent ee8ae9ae43
commit eee2224779

View file

@ -178,9 +178,6 @@ typedef struct {
NMSettings *settings;
CList connection_changed_on_idle_lst;
guint connection_changed_on_idle_id;
RadioState radio_states[RFKILL_TYPE_MAX];
NMVpnManager *vpn_manager;
@ -2094,7 +2091,6 @@ static void
connection_changed (NMManager *self,
NMSettingsConnection *sett_conn)
{
NMManagerPrivate *priv;
NMConnection *connection;
NMDevice *device;
@ -2102,11 +2098,6 @@ connection_changed (NMManager *self,
NM_SETTINGS_CONNECTION_INT_FLAGS_VOLATILE))
return;
priv = NM_MANAGER_GET_PRIVATE (self);
if (!nm_settings_has_connection (priv->settings, sett_conn))
return;
connection = nm_settings_connection_get_connection (sett_conn);
if (!nm_connection_is_virtual (connection))
@ -2122,46 +2113,12 @@ connection_changed (NMManager *self,
retry_connections_for_parent_device (self, device);
}
static gboolean
connection_changed_on_idle_cb (gpointer user_data)
{
NMManager *self = user_data;
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
NMCListElem *elem;
priv->connection_changed_on_idle_id = 0;
while ((elem = c_list_first_entry (&priv->connection_changed_on_idle_lst, NMCListElem, lst))) {
gs_unref_object NMSettingsConnection *sett_conn = NULL;
sett_conn = nm_c_list_elem_free_steal (elem);
connection_changed (self, sett_conn);
}
return G_SOURCE_REMOVE;
}
static void
connection_changed_on_idle (NMManager *self,
NMSettingsConnection *sett_conn)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
if (priv->connection_changed_on_idle_id == 0)
priv->connection_changed_on_idle_id = g_idle_add (connection_changed_on_idle_cb, self);
if (!nm_c_list_elem_find_first (&priv->connection_changed_on_idle_lst, sett_conn)) {
c_list_link_tail (&priv->connection_changed_on_idle_lst,
&nm_c_list_elem_new_stale (g_object_ref (sett_conn))->lst);
}
}
static void
connection_added_cb (NMSettings *settings,
NMSettingsConnection *sett_conn,
NMManager *self)
{
connection_changed_on_idle (self, sett_conn);
connection_changed (self, sett_conn);
}
static void
@ -2170,7 +2127,7 @@ connection_updated_cb (NMSettings *settings,
guint update_reason_u,
NMManager *self)
{
connection_changed_on_idle (self, sett_conn);
connection_changed (self, sett_conn);
}
/*****************************************************************************/
@ -7486,7 +7443,6 @@ nm_manager_init (NMManager *self)
c_list_init (&priv->active_connections_lst_head);
c_list_init (&priv->async_op_lst_head);
c_list_init (&priv->delete_volatile_connection_lst_head);
c_list_init (&priv->connection_changed_on_idle_lst);
priv->platform = g_object_ref (NM_PLATFORM_GET);
@ -7792,9 +7748,6 @@ dispose (GObject *object)
g_clear_object (&priv->policy);
}
nm_clear_g_source (&priv->connection_changed_on_idle_id);
nm_c_list_elem_free_all (&priv->connection_changed_on_idle_lst, g_object_unref);
if (priv->settings) {
g_signal_handlers_disconnect_by_func (priv->settings, settings_startup_complete_changed, self);
g_signal_handlers_disconnect_by_func (priv->settings, system_unmanaged_devices_changed_cb, self);