From: Martin Willi Date: Tue, 24 Nov 2009 13:09:09 +0000 (+0100) Subject: Check existing path in mobike probing only if we still have a route X-Git-Tag: 4.3.6~174 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=387a6e6c326a8a278bd27ac03ae5037b4b5c5602;p=thirdparty%2Fstrongswan.git Check existing path in mobike probing only if we still have a route --- diff --git a/src/charon/sa/task_manager.c b/src/charon/sa/task_manager.c index 3fac12552b..f02c58c695 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 f93d48f681..d76ba8d2bb 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); } /**