chiark / gitweb /
event: clear pending-state when re-arming timers
authorDavid Herrmann <dh.herrmann@gmail.com>
Wed, 20 Nov 2013 06:54:24 +0000 (07:54 +0100)
committerDavid Herrmann <dh.herrmann@gmail.com>
Wed, 20 Nov 2013 15:19:58 +0000 (16:19 +0100)
commit0cc1125ae10a216f2b27cb2828849ac1beb6a1b1
tree5c4ef38dc230fdbd80f27a12581e773f9f3b2a75
parent6c1508b871965b2eba46d477e81a9c4e85b2bd00
event: clear pending-state when re-arming timers

If a timer fires and is marked pending, but an application re-arms it
before it is dispatched, we now clear the pending state.

This fixes a bug where an application arms a timer, which fires and is
marked pending. But before it is dispatched, the application loses
interest in it and disables it. Now if the timer is re-armed and
re-enabled later, it will be immediately dispatched as it is still marked
pending.

This behavior is unexpected, so avoid it by clearing pending state when
re-arming timers. Note that applications have no way to clear pending
state themselves, so there's no current workaround.
src/libsystemd-bus/sd-event.c