Index | Thread | Search

From:
YASUOKA Masahiko <yasuoka@openbsd.org>
Subject:
Re: npppd: remove redundant evtimer_del in FSM macro
To:
bket@openbsd.org
Cc:
tech@openbsd.org
Date:
Fri, 07 Aug 2026 19:05:05 +0900

Download raw body.

Thread
Hi,

In event(3):

     The function event_add() schedules the execution of the ev event
     ....
     (snip)
     If the event in the ev argument already has a
     scheduled timeout, the old timeout will be replaced by the new one.

so,

On Thu, 6 Aug 2026 13:27:26 +0200
Bjorn Ketelaars <bket@openbsd.org> wrote:
> While reading event_add(3), I noticed: "If the event in the ev argument
> already has a scheduled timeout, the old timeout will be replaced by the
> new one."

this behavior is documented as well?

> I grepped base for calls to evtimer_del() immediately before
> evtimer_add() and found a redundant deletion inside an npppd FSM macro.
> Since evtimer_add() handles pending timeouts internally, this extra call
> can be removed.
> 
> OK?

ok yasuoka

> 
> diff --git usr.sbin/npppd/npppd/fsm.h usr.sbin/npppd/npppd/fsm.h
> index 8fea751ceee..7b35ec60fb4 100644
> --- usr.sbin/npppd/npppd/fsm.h
> +++ usr.sbin/npppd/npppd/fsm.h
> @@ -141,7 +141,6 @@ typedef struct fsm_callbacks {
>  			evtimer_set(&(f)->timerctx.ev, fsm_evtimer_timeout,\
>  			    &(f)->timerctx);				\
>  		(f)->timerctx.func = fn;				\
> -		evtimer_del(&(f)->timerctx.ev);				\
>  		evtimer_add(&(f)->timerctx.ev, &tv0);			\
>  	}
>  
> 
>