aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-11-24 14:09:09 +0100
committerMartin Willi <martin@strongswan.org>2009-11-26 10:30:59 +0100
commit387a6e6c326a8a278bd27ac03ae5037b4b5c5602 (patch)
treee5d0061503e9f61160fd43cc9c8fc255c40bccdb /src
parent4b55cf5d09a3233eef6816530eeb873408c9ea68 (diff)
downloadstrongswan-387a6e6c326a8a278bd27ac03ae5037b4b5c5602.tar.bz2
strongswan-387a6e6c326a8a278bd27ac03ae5037b4b5c5602.tar.xz
Check existing path in mobike probing only if we still have a route
Diffstat (limited to 'src')
-rw-r--r--src/charon/sa/task_manager.c6
-rw-r--r--src/charon/sa/tasks/ike_mobike.c8
2 files changed, 6 insertions, 8 deletions
diff --git a/src/charon/sa/task_manager.c b/src/charon/sa/task_manager.c
index 3fac12552..f02c58c69 100644
--- a/src/charon/sa/task_manager.c
+++ b/src/charon/sa/task_manager.c
@@ -233,6 +233,7 @@ static status_t retransmit(private_task_manager_t *this, u_int32_t message_id)
this->initiating.retransmitted, message_id);
}
packet = this->initiating.packet->clone(this->initiating.packet);
+ charon->sender->send(charon->sender, packet);
}
else
{ /* for routeability checks, we use a more aggressive behavior */
@@ -253,12 +254,9 @@ static status_t retransmit(private_task_manager_t *this, u_int32_t message_id)
DBG1(DBG_IKE, "path probing attempt %d",
this->initiating.retransmitted);
}
- packet = this->initiating.packet->clone(this->initiating.packet);
- mobike->transmit(mobike, packet);
+ mobike->transmit(mobike, this->initiating.packet);
}
- charon->sender->send(charon->sender, packet);
-
this->initiating.retransmitted++;
job = (job_t*)retransmit_job_create(this->initiating.mid,
this->ike_sa->get_id(this->ike_sa));
diff --git a/src/charon/sa/tasks/ike_mobike.c b/src/charon/sa/tasks/ike_mobike.c
index f93d48f68..d76ba8d2b 100644
--- a/src/charon/sa/tasks/ike_mobike.c
+++ b/src/charon/sa/tasks/ike_mobike.c
@@ -291,7 +291,10 @@ static void transmit(private_ike_mobike_t *this, packet_t *packet)
{
me->set_port(me, me->ip_equals(me, me_old) ?
me_old->get_port(me_old) : IKEV2_NATT_PORT);
- packet->set_source(packet, me);
+ DBG1(DBG_IKE, "checking original path %#H - %#H", me, other_old);
+ copy = packet->clone(packet);
+ copy->set_source(copy, me);
+ charon->sender->send(charon->sender, copy);
}
iterator = this->ike_sa->create_additional_address_iterator(this->ike_sa);
@@ -320,9 +323,6 @@ static void transmit(private_ike_mobike_t *this, packet_t *packet)
}
}
iterator->destroy(iterator);
- me = packet->get_source(packet);
- other = packet->get_destination(packet);
- DBG1(DBG_IKE, "checking path %#H - %#H", me, other);
}
/**