From dd563e60df5c0c4aec11ab7c20cf7a4ca0e40c54 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 7 Apr 2008 14:45:39 +0000 Subject: [PATCH] corrected the logging for retransmissions of connectivity checks --- src/charon/sa/connect_manager.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/charon/sa/connect_manager.c b/src/charon/sa/connect_manager.c index 709f12502..2d5e68416 100644 --- a/src/charon/sa/connect_manager.c +++ b/src/charon/sa/connect_manager.c @@ -38,7 +38,7 @@ /* base for retransmissions */ #define ME_RETRANS_BASE 1.8 /* max number of retransmissions */ -#define ME_MAX_RETRANS 14 +#define ME_MAX_RETRANS 13 typedef struct private_connect_manager_t private_connect_manager_t; @@ -957,10 +957,10 @@ static job_requeue_t retransmit(retransmit_data_t *data) goto retransmit_end; } - if (++pair->retransmitted >= ME_MAX_RETRANS) + if (++pair->retransmitted > ME_MAX_RETRANS) { DBG2(DBG_IKE, "pair with id '%d' failed after %d retransmissions", - data->mid, pair->retransmitted); + data->mid, ME_MAX_RETRANS); pair->state = CHECK_FAILED; goto retransmit_end; } @@ -996,12 +996,14 @@ static void queue_retransmission(private_connect_manager_t *this, check_list_t * retransmit_data_t *data = retransmit_data_create(this, chunk_clone(checklist->connect_id), pair->id); job_t *job = (job_t*)callback_job_create((callback_job_cb_t)retransmit, data, (callback_job_cleanup_t)retransmit_data_destroy, NULL); + u_int32_t retransmission = pair->retransmitted + 1; u_int32_t rto = ME_INTERVAL; - if (pair->retransmitted > ME_BOOST) + if (retransmission > ME_BOOST) { - rto = (u_int32_t)(ME_INTERVAL * pow(ME_RETRANS_BASE, pair->retransmitted - ME_BOOST)); + rto = (u_int32_t)(ME_INTERVAL * pow(ME_RETRANS_BASE, retransmission - ME_BOOST)); } - DBG2(DBG_IKE, "retransmission %d of pair '%d' in %dms", pair->retransmitted, pair->id, rto); + DBG2(DBG_IKE, "scheduling retransmission %d of pair '%d' in %dms", retransmission, pair->id, rto); + charon->scheduler->schedule_job(charon->scheduler, (job_t*)job, rto); }