aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-05-08 16:48:51 +0200
committerTobias Brunner <tobias@strongswan.org>2012-05-25 17:05:53 +0200
commit12715f1953e7ab1e3264f86c509510465ad73139 (patch)
treef1e8c1bb8f97fc488823fc18277e6d5ebbc83673 /src
parentbe982b4c032a59b4f82b1feccdac38db85308fba (diff)
downloadstrongswan-12715f1953e7ab1e3264f86c509510465ad73139.tar.bz2
strongswan-12715f1953e7ab1e3264f86c509510465ad73139.tar.xz
Fixed route lookup in case MOBIKE is not enabled.
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/ike_sa.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c
index 967ad75f2..30b3afe50 100644
--- a/src/libcharon/sa/ike_sa.c
+++ b/src/libcharon/sa/ike_sa.c
@@ -779,15 +779,21 @@ METHOD(ike_sa_t, add_peer_address, void,
METHOD(ike_sa_t, create_peer_address_enumerator, enumerator_t*,
private_ike_sa_t *this)
{
- return this->peer_addresses->create_enumerator(this->peer_addresses);
+ if (this->peer_addresses->get_count(this->peer_addresses))
+ {
+ return this->peer_addresses->create_enumerator(this->peer_addresses);
+ }
+ /* in case we don't have MOBIKE */
+ return enumerator_create_single(this->other_host, NULL);
}
METHOD(ike_sa_t, clear_peer_addresses, void,
private_ike_sa_t *this)
{
- enumerator_t *enumerator = create_peer_address_enumerator(this);
+ enumerator_t *enumerator;
host_t *host;
+ enumerator = this->peer_addresses->create_enumerator(this->peer_addresses);
while (enumerator->enumerate(enumerator, (void**)&host))
{
this->peer_addresses->remove_at(this->peer_addresses,
@@ -1682,7 +1688,7 @@ static bool is_any_path_valid(private_ike_sa_t *this)
host_t *src = NULL, *addr;
DBG1(DBG_IKE, "old path is not available anymore, try to find another");
- enumerator = this->peer_addresses->create_enumerator(this->peer_addresses);
+ enumerator = create_peer_address_enumerator(this);
while (enumerator->enumerate(enumerator, &addr))
{
DBG1(DBG_IKE, "looking for a route to %H ...", addr);