]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/core/socket.c
core: Check unit start rate limiting earlier 20531/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 24 Aug 2021 15:46:47 +0000 (16:46 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 25 Aug 2021 12:26:14 +0000 (13:26 +0100)
commit9727f2427ff6b2e1f4ab927cc57ad8e888f04e95
treed145a7fd24306686e49ebed9c9c4c2b53f72a913
parenta243128d1fcfc378df9fce1b4997148a17ef23a5
core: Check unit start rate limiting earlier

Fixes #17433. Currently, if any of the validations we do before we
check start rate limiting fail, we can still enter a busy loop as
no rate limiting gets applied. A common occurence of this scenario
is path units triggering a service that fails a condition check.

To fix the issue, we simply move up start rate limiting checks to
be the first thing we do when starting a unit. To achieve this,
we add a new method to the unit vtable and implement it for the
relevant unit types so that we can do the start rate limit checks
earlier on.
16 files changed:
src/core/automount.c
src/core/mount.c
src/core/path.c
src/core/service.c
src/core/socket.c
src/core/swap.c
src/core/timer.c
src/core/unit.c
src/core/unit.h
test/TEST-63-ISSUE-17433/Makefile [new symlink]
test/TEST-63-ISSUE-17433/test.sh [new file with mode: 0755]
test/meson.build
test/testsuite-10.units/test10.service
test/testsuite-63.units/test63.path [new file with mode: 0644]
test/testsuite-63.units/test63.service [new file with mode: 0644]
test/units/testsuite-63.service [new file with mode: 0644]