aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-01-09 17:10:48 +0100
committerMartin Willi <martin@revosec.ch>2012-03-20 17:31:34 +0100
commita347c1ac437803c23aa8858089d99f4f604fcebc (patch)
treec65230927932981101382df71df0d7e4e622e3cd /src
parentebc7bcb55013245e74da596292e20dcbf6219a91 (diff)
downloadstrongswan-a347c1ac437803c23aa8858089d99f4f604fcebc.tar.bz2
strongswan-a347c1ac437803c23aa8858089d99f4f604fcebc.tar.xz
Fix sending of CERTREQ/CERT payloads in aggressive mode
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/ikev1/tasks/isakmp_cert_post.c9
-rw-r--r--src/libcharon/sa/ikev1/tasks/isakmp_cert_pre.c5
2 files changed, 12 insertions, 2 deletions
diff --git a/src/libcharon/sa/ikev1/tasks/isakmp_cert_post.c b/src/libcharon/sa/ikev1/tasks/isakmp_cert_post.c
index 5fbd04aea..b88b9e31a 100644
--- a/src/libcharon/sa/ikev1/tasks/isakmp_cert_post.c
+++ b/src/libcharon/sa/ikev1/tasks/isakmp_cert_post.c
@@ -286,9 +286,14 @@ METHOD(task_t, process_i, status_t,
}
case AGGRESSIVE:
{
- if (!use_certs(this, message))
+ if (this->state == CR_SA)
{
- return SUCCESS;
+ if (!use_certs(this, message))
+ {
+ return SUCCESS;
+ }
+ this->state = CR_AUTH;
+ return NEED_MORE;
}
return SUCCESS;
}
diff --git a/src/libcharon/sa/ikev1/tasks/isakmp_cert_pre.c b/src/libcharon/sa/ikev1/tasks/isakmp_cert_pre.c
index 25c4af6e8..8d0405730 100644
--- a/src/libcharon/sa/ikev1/tasks/isakmp_cert_pre.c
+++ b/src/libcharon/sa/ikev1/tasks/isakmp_cert_pre.c
@@ -426,6 +426,10 @@ METHOD(task_t, build_r, status_t,
switch (this->state)
{
case CR_SA:
+ if (this->send_req)
+ {
+ build_certreqs(this, message);
+ }
this->state = CR_AUTH;
return NEED_MORE;
case CR_AUTH:
@@ -474,6 +478,7 @@ METHOD(task_t, process_i, status_t,
}
process_certreqs(this, message);
process_certs(this, message);
+ this->state = CR_AUTH;
return SUCCESS;
}
default: