aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-03-09 10:30:37 +0100
committerTobias Brunner <tobias@strongswan.org>2012-03-09 10:30:37 +0100
commitcd6b5bf8e96b77be33468ef74ba440c7b3759b7f (patch)
tree041d9217ccfd3fb46029ae7bc2bea2587d40b4fa /src
parent72b2811204352d00cd190e6ece0f8c5f8f489fab (diff)
downloadstrongswan-cd6b5bf8e96b77be33468ef74ba440c7b3759b7f.tar.bz2
strongswan-cd6b5bf8e96b77be33468ef74ba440c7b3759b7f.tar.xz
Clear peer addresses during HA update.
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/plugins/ha/ha_dispatcher.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libcharon/plugins/ha/ha_dispatcher.c b/src/libcharon/plugins/ha/ha_dispatcher.c
index ecda9fdfc..994f91d20 100644
--- a/src/libcharon/plugins/ha/ha_dispatcher.c
+++ b/src/libcharon/plugins/ha/ha_dispatcher.c
@@ -220,7 +220,7 @@ static void process_ike_update(private_ha_dispatcher_t *this,
ike_sa_t *ike_sa = NULL;
peer_cfg_t *peer_cfg = NULL;
auth_cfg_t *auth;
- bool received_vip = FALSE;
+ bool received_vip = FALSE, first_peer_addr = TRUE;
enumerator = message->create_attribute_enumerator(message);
while (enumerator->enumerate(enumerator, &attribute, &value))
@@ -261,6 +261,11 @@ static void process_ike_update(private_ha_dispatcher_t *this,
received_vip = TRUE;
break;
case HA_PEER_ADDR:
+ if (first_peer_addr)
+ {
+ ike_sa->clear_peer_addresses(ike_sa);
+ first_peer_addr = FALSE;
+ }
ike_sa->add_peer_address(ike_sa, value.host->clone(value.host));
break;
case HA_CONFIG_NAME: