about summary refs log tree commit diff
path: root/src/nm-checkpoint.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-checkpoint.c')
-rw-r--r--src/nm-checkpoint.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/nm-checkpoint.c b/src/nm-checkpoint.c
index 3f2f0eaa..d59bc574 100644
--- a/src/nm-checkpoint.c
+++ b/src/nm-checkpoint.c
@@ -275,6 +275,17 @@ activate:
 				_LOGD ("rollback: reactivating connection %s",
 				       nm_settings_connection_get_uuid (connection));
 				subject = nm_auth_subject_new_internal ();
+
+				/* Disconnect the device if needed. This necessary because now
+				 * the manager prevents the reactivation of the same connection by
+				 * an internal subject. */
+				if (   nm_device_get_state (device) > NM_DEVICE_STATE_DISCONNECTED
+				    && nm_device_get_state (device) < NM_DEVICE_STATE_DEACTIVATING) {
+					nm_device_state_changed (device,
+					                         NM_DEVICE_STATE_DEACTIVATING,
+					                         NM_DEVICE_STATE_REASON_NEW_ACTIVATION);
+				}
+
 				if (!nm_manager_activate_connection (priv->manager,
 				                                     connection,
 				                                     dev_checkpoint->applied_connection,