mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-08 21:10:25 +01:00
core: don't activate failed queued activation requests
If the queued activation request failed before the device is
finished deactiving the old request, don't start activating
the failed queued request.
(cherry picked from commit fb1d04099f)
This commit is contained in:
parent
ac8d1f1caa
commit
23d285f308
1 changed files with 20 additions and 7 deletions
|
|
@ -5825,14 +5825,20 @@ impl_device_delete (NMDevice *self, DBusGMethodInvocation *context)
|
|||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
_device_activate (NMDevice *self, NMActRequest *req)
|
||||
{
|
||||
NMDevicePrivate *priv;
|
||||
NMConnection *connection;
|
||||
|
||||
g_return_if_fail (NM_IS_DEVICE (self));
|
||||
g_return_if_fail (NM_IS_ACT_REQUEST (req));
|
||||
g_return_val_if_fail (NM_IS_DEVICE (self), FALSE);
|
||||
g_return_val_if_fail (NM_IS_ACT_REQUEST (req), FALSE);
|
||||
|
||||
/* Ensure the activation request is still valid; the master may have
|
||||
* already failed in which case activation of this device should not proceed.
|
||||
*/
|
||||
if (nm_active_connection_get_state (NM_ACTIVE_CONNECTION (req)) >= NM_ACTIVE_CONNECTION_STATE_DEACTIVATING)
|
||||
return FALSE;
|
||||
|
||||
priv = NM_DEVICE_GET_PRIVATE (self);
|
||||
|
||||
|
|
@ -5858,6 +5864,7 @@ _device_activate (NMDevice *self, NMActRequest *req)
|
|||
priv->act_request = g_object_ref (req);
|
||||
|
||||
nm_device_activate_schedule_stage1_device_prepare (self);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -5953,7 +5960,8 @@ nm_device_queue_activation (NMDevice *self, NMActRequest *req)
|
|||
|
||||
if (!priv->act_request && !must_queue) {
|
||||
/* Just activate immediately */
|
||||
_device_activate (self, req);
|
||||
if (!_device_activate (self, req))
|
||||
g_assert_not_reached ();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -7988,13 +7996,18 @@ _set_state_full (NMDevice *self,
|
|||
if ( priv->queued_act_request
|
||||
&& !priv->queued_act_request_is_waiting_for_carrier) {
|
||||
NMActRequest *queued_req;
|
||||
gboolean success;
|
||||
|
||||
queued_req = priv->queued_act_request;
|
||||
priv->queued_act_request = NULL;
|
||||
_device_activate (self, queued_req);
|
||||
success = _device_activate (self, queued_req);
|
||||
g_object_unref (queued_req);
|
||||
} else if ( old_state > NM_DEVICE_STATE_DISCONNECTED
|
||||
&& nm_device_get_default_unmanaged (self))
|
||||
if (success)
|
||||
break;
|
||||
/* fall through */
|
||||
}
|
||||
if ( old_state > NM_DEVICE_STATE_DISCONNECTED
|
||||
&& nm_device_get_default_unmanaged (self))
|
||||
nm_device_queue_state (self, NM_DEVICE_STATE_UNMANAGED, NM_DEVICE_STATE_REASON_NONE);
|
||||
break;
|
||||
case NM_DEVICE_STATE_ACTIVATED:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue