private_android_service_t *this, ike_sa_t *ike_sa, alert_t alert,
va_list args)
{
+ bool stay_registered = TRUE;
+
if (this->ike_sa == ike_sa)
{
switch (alert)
case ALERT_PEER_ADDR_FAILED:
charonservice->update_status(charonservice,
CHARONSERVICE_LOOKUP_ERROR);
- break;
+ return FALSE;
+
case ALERT_PEER_AUTH_FAILED:
charonservice->update_status(charonservice,
CHARONSERVICE_PEER_AUTH_ERROR);
- break;
+ return FALSE;
+
case ALERT_KEEP_ON_CHILD_SA_FAILURE:
{
uint32_t *id = malloc_thing(uint32_t);
(job_t*)callback_job_create_with_prio(
(callback_job_cb_t)terminate, id, free,
(callback_job_cancel_t)return_false, JOB_PRIO_HIGH));
+ stay_registered = FALSE;
}
else
{
{
charonservice->update_status(charonservice,
CHARONSERVICE_UNREACHABLE_ERROR);
+ stay_registered = FALSE;
}
}
this->lock->unlock(this->lock);
break;
}
}
- return TRUE;
+ return stay_registered;
}
static void add_auth_cfg_pw(private_android_service_t *this,