From 747b64875f1577654d06a0d1517acfb8e3051c47 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Thu, 5 Nov 2015 15:14:56 +0100 Subject: [PATCH] ikev1: Fix calculation of DPD timeout A DPD timeout job is queued whenever a DPD is sent, i.e. after the DPD delay already has elapsed, so we have to compensate for that. --- src/libcharon/sa/ikev1/task_manager_v1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libcharon/sa/ikev1/task_manager_v1.c b/src/libcharon/sa/ikev1/task_manager_v1.c index a839f51e7..3c601a4fa 100644 --- a/src/libcharon/sa/ikev1/task_manager_v1.c +++ b/src/libcharon/sa/ikev1/task_manager_v1.c @@ -1802,6 +1802,8 @@ METHOD(task_manager_t, queue_dpd, void, pow(this->retransmit_base, retransmit)); } } + /* compensate for the already elapsed dpd delay */ + t -= 1000 * peer_cfg->get_dpd(peer_cfg); /* schedule DPD timeout job */ lib->scheduler->schedule_job_ms(lib->scheduler,