diff --git a/src/nm-manager.c b/src/nm-manager.c index 0bbe1c547a..7c0dac12b3 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -3060,12 +3060,18 @@ autoconnect_slaves (NMManager *self, static gboolean _internal_activate_vpn (NMManager *self, NMActiveConnection *active, GError **error) { + gboolean success; + g_assert (NM_IS_VPN_CONNECTION (active)); nm_exported_object_export (NM_EXPORTED_OBJECT (active)); - return nm_vpn_manager_activate_connection (NM_MANAGER_GET_PRIVATE (self)->vpn_manager, - NM_VPN_CONNECTION (active), - error); + success = nm_vpn_manager_activate_connection (NM_MANAGER_GET_PRIVATE (self)->vpn_manager, + NM_VPN_CONNECTION (active), + error); + if (!success) + nm_exported_object_unexport (NM_EXPORTED_OBJECT (active)); + + return success; } /* Traverse the device to disconnected state. This means that the device is ready