diff options
author | Martin Willi <martin@revosec.ch> | 2012-01-09 17:10:48 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-03-20 17:31:34 +0100 |
commit | a347c1ac437803c23aa8858089d99f4f604fcebc (patch) | |
tree | c65230927932981101382df71df0d7e4e622e3cd /src | |
parent | ebc7bcb55013245e74da596292e20dcbf6219a91 (diff) | |
download | strongswan-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.c | 9 | ||||
-rw-r--r-- | src/libcharon/sa/ikev1/tasks/isakmp_cert_pre.c | 5 |
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: |