diff options
author | Martin Willi <martin@strongswan.org> | 2009-11-24 14:09:09 +0100 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2009-11-26 10:30:59 +0100 |
commit | 387a6e6c326a8a278bd27ac03ae5037b4b5c5602 (patch) | |
tree | e5d0061503e9f61160fd43cc9c8fc255c40bccdb /src | |
parent | 4b55cf5d09a3233eef6816530eeb873408c9ea68 (diff) | |
download | strongswan-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.c | 6 | ||||
-rw-r--r-- | src/charon/sa/tasks/ike_mobike.c | 8 |
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); } /** |