summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/sd-ipv4acd.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-09-04 09:01:03 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-09-04 09:04:43 +0900
commit6a776e3a18ba654de484c9f5480712a4b13c38f1 (patch)
tree0742f63ca6d56d37eb108f76cf265dbbb9d50367 /src/libsystemd-network/sd-ipv4acd.c
parentdce1cd41881fc8255ca33b4eba0b1bf541b7b6c4 (diff)
downloadsystemd-6a776e3a18ba654de484c9f5480712a4b13c38f1.tar.gz
sd-ipv4acd: do not call callback in sd_ipv4acd_stop() when it is already stopped
Diffstat (limited to 'src/libsystemd-network/sd-ipv4acd.c')
-rw-r--r--src/libsystemd-network/sd-ipv4acd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libsystemd-network/sd-ipv4acd.c b/src/libsystemd-network/sd-ipv4acd.c
index d957202a68..0371641cdb 100644
--- a/src/libsystemd-network/sd-ipv4acd.c
+++ b/src/libsystemd-network/sd-ipv4acd.c
@@ -142,10 +142,17 @@ static void ipv4acd_client_notify(sd_ipv4acd *acd, int event) {
}
int sd_ipv4acd_stop(sd_ipv4acd *acd) {
+ IPv4ACDState old_state;
+
assert_return(acd, -EINVAL);
+ old_state = acd->state;
+
ipv4acd_reset(acd);
+ if (old_state == IPV4ACD_STATE_INIT)
+ return 0;
+
log_ipv4acd(acd, "STOPPED");
ipv4acd_client_notify(acd, SD_IPV4ACD_EVENT_STOP);