diff options
Diffstat (limited to 'src/libcharon/sa/tasks/main_mode.c')
-rw-r--r-- | src/libcharon/sa/tasks/main_mode.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/libcharon/sa/tasks/main_mode.c b/src/libcharon/sa/tasks/main_mode.c index 4efcf0dd0..a88f7a419 100644 --- a/src/libcharon/sa/tasks/main_mode.c +++ b/src/libcharon/sa/tasks/main_mode.c @@ -660,8 +660,6 @@ METHOD(task_t, build_r, status_t, this->ike_sa->get_my_id(this->ike_sa), this->ike_sa->get_other_host(this->ike_sa), this->ike_sa->get_other_id(this->ike_sa)); - this->ike_sa->set_state(this->ike_sa, IKE_ESTABLISHED); - charon->bus->ike_updown(charon->bus, this->ike_sa, TRUE); switch (this->auth_method) { @@ -672,8 +670,17 @@ METHOD(task_t, build_r, status_t, lib->processor->queue_job(lib->processor, job); break; } + case AUTH_XAUTH_RESP_PSK: + case AUTH_XAUTH_RESP_RSA: /* There should be more RESP cases here once added */ + { + break; + } default: + { + this->ike_sa->set_state(this->ike_sa, IKE_ESTABLISHED); + charon->bus->ike_updown(charon->bus, this->ike_sa, TRUE); break; + } } return SUCCESS; } @@ -774,20 +781,26 @@ METHOD(task_t, process_i, status_t, this->ike_sa->get_my_id(this->ike_sa), this->ike_sa->get_other_host(this->ike_sa), this->ike_sa->get_other_id(this->ike_sa)); - this->ike_sa->set_state(this->ike_sa, IKE_ESTABLISHED); - charon->bus->ike_updown(charon->bus, this->ike_sa, TRUE); switch (this->auth_method) { case AUTH_XAUTH_RESP_PSK: case AUTH_XAUTH_RESP_RSA: /* There should be more RESP cases here once added */ { - job_t *job = (job_t *) initiate_xauth_job_create(this->ike_sa->get_id(this->ike_sa)); - lib->processor->queue_job(lib->processor, job); + this->ike_sa->initiate_xauth(this->ike_sa, FALSE); + break; + } + case AUTH_XAUTH_INIT_PSK: + case AUTH_XAUTH_INIT_RSA: /* There should be more INIT cases here once added */ + { break; } default: + { + this->ike_sa->set_state(this->ike_sa, IKE_ESTABLISHED); + charon->bus->ike_updown(charon->bus, this->ike_sa, TRUE); break; + } } return SUCCESS; |