From 53915f14ae7d820dd4f2fbc19a8dc29beec9dc24 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Wed, 9 May 2012 17:53:34 +0200 Subject: [PATCH] Fix MOBIKE address update if responder address changed. Use the source address of the current MOBIKE message as peer address instead of assuming the address cached on the IKE_SA is still valid. --- src/libcharon/sa/ikev2/tasks/ike_mobike.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcharon/sa/ikev2/tasks/ike_mobike.c b/src/libcharon/sa/ikev2/tasks/ike_mobike.c index 377714023..8295bea0a 100644 --- a/src/libcharon/sa/ikev2/tasks/ike_mobike.c +++ b/src/libcharon/sa/ikev2/tasks/ike_mobike.c @@ -138,7 +138,7 @@ static void process_payloads(private_ike_mobike_t *this, message_t *message) this->ike_sa->clear_peer_addresses(this->ike_sa); first = FALSE; /* add the peer's current address to the list */ - host = this->ike_sa->get_other_host(this->ike_sa); + host = message->get_source(message); this->ike_sa->add_peer_address(this->ike_sa, host->clone(host)); } @@ -158,7 +158,7 @@ static void process_payloads(private_ike_mobike_t *this, message_t *message) { this->ike_sa->clear_peer_addresses(this->ike_sa); /* add the peer's current address to the list */ - host = this->ike_sa->get_other_host(this->ike_sa); + host = message->get_source(message); this->ike_sa->add_peer_address(this->ike_sa, host->clone(host)); this->addresses_updated = TRUE; break;