From: Christian Franke Date: Wed, 20 Feb 2013 10:00:52 +0000 (+0000) Subject: ospfd: make ospf_maxage_lsa_remover actually yield X-Git-Tag: frr-2.0-rc1~1666 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=4de8bf0011;p=mirror%2Ffrr.git ospfd: make ospf_maxage_lsa_remover actually yield ospf_maxage_lsa_remover whould check whether to yield, but run on anyway. Signed-off-by: Christian Franke Signed-off-by: Joachim Nilsson Signed-off-by: David Lamparter --- diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c index dfd1a61e2a..e0e05ab84a 100644 --- a/ospfd/ospf_lsa.c +++ b/ospfd/ospf_lsa.c @@ -2843,6 +2843,9 @@ ospf_maxage_lsa_remover (struct thread *thread) continue; } + /* There is at least one neighbor from which we still await an ack + * for that LSA, so we are not allowed to remove it from our lsdb yet + * as per RFC 2328 section 14 para 4 a) */ if (lsa->retransmit_counter > 0) { reschedule = 1; @@ -2851,7 +2854,10 @@ ospf_maxage_lsa_remover (struct thread *thread) /* TODO: maybe convert this function to a work-queue */ if (thread_should_yield (thread)) - OSPF_TIMER_ON (ospf->t_maxage, ospf_maxage_lsa_remover, 0); + { + OSPF_TIMER_ON (ospf->t_maxage, ospf_maxage_lsa_remover, 0); + return 0; + } /* Remove LSA from the LSDB */ if (IS_LSA_SELF (lsa))