diff --git a/src/nm-manager.c b/src/nm-manager.c index 039a6067e6..bf03084886 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -814,7 +814,7 @@ remove_device (NMManager *manager, NMDevice *device, gboolean quitting) g_signal_handlers_disconnect_matched (device, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, manager); - nm_settings_device_removed (priv->settings, device); + nm_settings_device_removed (priv->settings, device, quitting); g_signal_emit (manager, signals[DEVICE_REMOVED], 0, device); g_object_unref (device); diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index e6d98ff067..8c29a9111b 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -1591,14 +1591,19 @@ nm_settings_device_added (NMSettings *self, NMDevice *device) } void -nm_settings_device_removed (NMSettings *self, NMDevice *device) +nm_settings_device_removed (NMSettings *self, NMDevice *device, gboolean quitting) { NMSettingsConnection *connection; connection = g_object_get_data (G_OBJECT (device), DEFAULT_WIRED_CONNECTION_TAG); if (connection) { default_wired_clear_tag (self, device, connection, FALSE); - nm_settings_connection_delete (connection, NULL, NULL); + + /* Don't delete the default wired connection on shutdown, so that it + * remains up and can be assumed if NM starts again. + */ + if (quitting == FALSE) + nm_settings_connection_delete (connection, NULL, NULL); } } diff --git a/src/settings/nm-settings.h b/src/settings/nm-settings.h index 1f97240d72..345eb04d44 100644 --- a/src/settings/nm-settings.h +++ b/src/settings/nm-settings.h @@ -120,6 +120,6 @@ char *nm_settings_get_hostname (NMSettings *self); void nm_settings_device_added (NMSettings *self, NMDevice *device); -void nm_settings_device_removed (NMSettings *self, NMDevice *device); +void nm_settings_device_removed (NMSettings *self, NMDevice *device, gboolean quitting); #endif /* __NM_SETTINGS_H__ */