diff --git a/src/core/unit.c b/src/core/unit.c index a2944c1917..a6403002a6 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1855,13 +1855,6 @@ int unit_start(Unit *u) { assert(u); - /* Check start rate limiting early so that failure conditions don't cause us to enter a busy loop. */ - if (UNIT_VTABLE(u)->test_start_limit) { - r = UNIT_VTABLE(u)->test_start_limit(u); - if (r < 0) - return r; - } - /* If this is already started, then this will succeed. Note that this will even succeed if this unit * is not startable by the user. This is relied on to detect when we need to wait for units and when * waiting is finished. */ @@ -1911,6 +1904,13 @@ int unit_start(Unit *u) { return unit_start(following); } + /* Check start rate limiting early so that failure conditions don't cause us to enter a busy loop. */ + if (UNIT_VTABLE(u)->test_start_limit) { + r = UNIT_VTABLE(u)->test_start_limit(u); + if (r < 0) + return r; + } + /* If it is stopped, but we cannot start it, then fail */ if (!UNIT_VTABLE(u)->start) return -EBADR;