charon-nm: Keep listener registered even on failures

NM doesn't seem to terminate the daemon on failures, so we might not get
further events for later retries.
This commit is contained in:
Tobias Brunner
2020-02-14 13:55:42 +01:00
parent 3d2f5ae003
commit 5575aaf5c8
+1 -5
View File
@@ -254,7 +254,6 @@ METHOD(listener_t, ike_state_change, bool,
if (this->ike_sa == ike_sa && state == IKE_DESTROYING)
{
signal_failure(this->plugin, NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED);
return FALSE;
}
return TRUE;
}
@@ -266,7 +265,6 @@ METHOD(listener_t, child_state_change, bool,
if (this->ike_sa == ike_sa && state == CHILD_DESTROYING)
{
signal_failure(this->plugin, NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED);
return FALSE;
}
return TRUE;
}
@@ -324,7 +322,6 @@ METHOD(listener_t, child_updown, bool,
return TRUE;
}
signal_failure(this->plugin, NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED);
return FALSE;
}
}
return TRUE;
@@ -840,7 +837,6 @@ static gboolean connect_(NMVpnServicePlugin *plugin, NMConnection *connection,
priv->ike_sa = ike_sa;
priv->listener.ike_state_change = _ike_state_change;
priv->listener.child_state_change = _child_state_change;
charon->bus->add_listener(charon->bus, &priv->listener);
/**
* Initiate
@@ -848,7 +844,6 @@ static gboolean connect_(NMVpnServicePlugin *plugin, NMConnection *connection,
child_cfg->get_ref(child_cfg);
if (ike_sa->initiate(ike_sa, child_cfg, 0, NULL, NULL) != SUCCESS)
{
charon->bus->remove_listener(charon->bus, &priv->listener);
charon->ike_sa_manager->checkin_and_destroy(charon->ike_sa_manager, ike_sa);
g_set_error(err, NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED,
@@ -983,6 +978,7 @@ static void nm_strongswan_plugin_init(NMStrongswanPlugin *plugin)
priv->listener.ike_rekey = _ike_rekey;
priv->listener.ike_reestablish_pre = _ike_reestablish_pre;
priv->listener.ike_reestablish_post = _ike_reestablish_post;
charon->bus->add_listener(charon->bus, &priv->listener);
priv->name = NULL;
}