aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-02-26 11:07:56 +0100
committerMartin Willi <martin@revosec.ch>2010-02-26 11:44:34 +0100
commit347488bd6764c7bbb022287f70734df7c70cabe2 (patch)
tree3f81b9203a00e1bf04390d0525b9b357476bbf48 /src
parented5fc4cafe46abaa21282591756b6d98aab8df33 (diff)
downloadstrongswan-347488bd6764c7bbb022287f70734df7c70cabe2.tar.bz2
strongswan-347488bd6764c7bbb022287f70734df7c70cabe2.tar.xz
Process ike_vendor task before ike_init, fixes support for private algs in IKE
Diffstat (limited to 'src')
-rw-r--r--src/charon/sa/ike_sa.c4
-rw-r--r--src/charon/sa/task_manager.c6
2 files changed, 5 insertions, 5 deletions
diff --git a/src/charon/sa/ike_sa.c b/src/charon/sa/ike_sa.c
index dd523fe84..c3a1b9407 100644
--- a/src/charon/sa/ike_sa.c
+++ b/src/charon/sa/ike_sa.c
@@ -1191,10 +1191,10 @@ static status_t initiate(private_ike_sa_t *this,
set_condition(this, COND_ORIGINAL_INITIATOR, TRUE);
- task = (task_t*)ike_init_create(&this->public, TRUE, NULL);
- this->task_manager->queue_task(this->task_manager, task);
task = (task_t*)ike_vendor_create(&this->public, TRUE);
this->task_manager->queue_task(this->task_manager, task);
+ task = (task_t*)ike_init_create(&this->public, TRUE, NULL);
+ this->task_manager->queue_task(this->task_manager, task);
task = (task_t*)ike_natd_create(&this->public, TRUE);
this->task_manager->queue_task(this->task_manager, task);
task = (task_t*)ike_cert_pre_create(&this->public, TRUE);
diff --git a/src/charon/sa/task_manager.c b/src/charon/sa/task_manager.c
index 2432ce75c..eeda6c860 100644
--- a/src/charon/sa/task_manager.c
+++ b/src/charon/sa/task_manager.c
@@ -307,11 +307,11 @@ static status_t build_request(private_task_manager_t *this)
switch (this->ike_sa->get_state(this->ike_sa))
{
case IKE_CREATED:
+ activate_task(this, IKE_VENDOR);
if (activate_task(this, IKE_INIT))
{
this->initiating.mid = 0;
exchange = IKE_SA_INIT;
- activate_task(this, IKE_VENDOR);
activate_task(this, IKE_NATD);
activate_task(this, IKE_CERT_PRE);
#ifdef ME
@@ -696,10 +696,10 @@ static status_t process_request(private_task_manager_t *this,
{
case IKE_SA_INIT:
{
- task = (task_t*)ike_init_create(this->ike_sa, FALSE, NULL);
- this->passive_tasks->insert_last(this->passive_tasks, task);
task = (task_t*)ike_vendor_create(this->ike_sa, FALSE);
this->passive_tasks->insert_last(this->passive_tasks, task);
+ task = (task_t*)ike_init_create(this->ike_sa, FALSE, NULL);
+ this->passive_tasks->insert_last(this->passive_tasks, task);
task = (task_t*)ike_natd_create(this->ike_sa, FALSE);
this->passive_tasks->insert_last(this->passive_tasks, task);
task = (task_t*)ike_cert_pre_create(this->ike_sa, FALSE);