mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-28 11:50:35 +01:00
vpn: fix assertion during "SecretsRequired" in unexpected state
Got this assertion:
NetworkManager[12939]: <debug> [1536917977.4868] active-connection[0x563d8fd34540]: set state deactivated (was deactivating)
...
NetworkManager[12939]: nm-openvpn[1106] <info> openvpn[1132]: send SIGTERM
NetworkManager[12939]: nm-openvpn[1106] <info> wait for 1 openvpn processes to terminate...
NetworkManager[12939]: nm-openvpn[1106] <warn> openvpn[1132] exited with error code 1
NetworkManager[12939]: <info> [1536917977.5035] vpn-connection[0x563d8fd34540,2fdeaea3-975f-4325-8305-83ebca5eaa26,"my-openvpn-Red-Hat",0]: VPN plugin: requested secrets; state disconnected (9)
NetworkManager[12939]: plugin_interactive_secrets_required: assertion 'priv->vpn_state == STATE_CONNECT || priv->vpn_state == STATE_NEED_AUTH' failed
Meaning. We should either ensure that secrets_required_cb() signal callback
is disconnected from proxy's signal, or we gracefully handle callbacks at
unexpected moments. Do the latter.
(cherry picked from commit 92344dd084)
(cherry picked from commit 011dd919fa)
This commit is contained in:
parent
10888abe96
commit
0e633c232d
1 changed files with 7 additions and 3 deletions
|
|
@ -2686,12 +2686,16 @@ plugin_interactive_secrets_required (NMVpnConnection *self,
|
|||
gs_free const char **hints = NULL;
|
||||
gs_free char *message_hint = NULL;
|
||||
|
||||
if (!NM_IN_SET (priv->vpn_state, STATE_CONNECT,
|
||||
STATE_NEED_AUTH)) {
|
||||
_LOGD ("VPN plugin: requested secrets; state %s (%d); ignore request in current state",
|
||||
vpn_state_to_string (priv->vpn_state), priv->vpn_state);
|
||||
return;
|
||||
}
|
||||
|
||||
_LOGI ("VPN plugin: requested secrets; state %s (%d)",
|
||||
vpn_state_to_string (priv->vpn_state), priv->vpn_state);
|
||||
|
||||
g_return_if_fail (priv->vpn_state == STATE_CONNECT ||
|
||||
priv->vpn_state == STATE_NEED_AUTH);
|
||||
|
||||
priv->secrets_idx = SECRETS_REQ_INTERACTIVE;
|
||||
_set_vpn_state (self, STATE_NEED_AUTH, NM_ACTIVE_CONNECTION_STATE_REASON_NONE, FALSE);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue