aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2007-07-16 07:01:49 +0000
committerMartin Willi <martin@strongswan.org>2007-07-16 07:01:49 +0000
commitcc68e173fec021a17ec04bbd4d6ca8f6adb1c15a (patch)
tree8e8ada271cef33fcf9a57a123e9b73135baa1f5c /src
parentdb61efdbbb2b95b9be4331810fca593e14596108 (diff)
downloadstrongswan-cc68e173fec021a17ec04bbd4d6ca8f6adb1c15a.tar.bz2
strongswan-cc68e173fec021a17ec04bbd4d6ca8f6adb1c15a.tar.xz
fixed payload order (Nonce, KE) for IKE_SA_INIT
Diffstat (limited to 'src')
-rw-r--r--src/charon/sa/tasks/ike_init.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/charon/sa/tasks/ike_init.c b/src/charon/sa/tasks/ike_init.c
index f78b5dd66..d14567234 100644
--- a/src/charon/sa/tasks/ike_init.c
+++ b/src/charon/sa/tasks/ike_init.c
@@ -149,10 +149,18 @@ static void build_payloads(private_ike_init_t *this, message_t *message)
nonce_payload = nonce_payload_create();
nonce_payload->set_nonce(nonce_payload, this->my_nonce);
- message->add_payload(message, (payload_t*)nonce_payload);
-
ke_payload = ke_payload_create_from_diffie_hellman(this->dh);
- message->add_payload(message, (payload_t*)ke_payload);
+
+ if (this->old_sa)
+ { /* payload order differs if we are rekeying */
+ message->add_payload(message, (payload_t*)nonce_payload);
+ message->add_payload(message, (payload_t*)ke_payload);
+ }
+ else
+ {
+ message->add_payload(message, (payload_t*)ke_payload);
+ message->add_payload(message, (payload_t*)nonce_payload);
+ }
}
/**