]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp-server: make sd_dhcp_server_start() no-op if it is already running
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 18 May 2021 07:12:02 +0000 (16:12 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 7 Jun 2021 21:33:27 +0000 (06:33 +0900)
src/libsystemd-network/sd-dhcp-server.c
src/libsystemd-network/test-dhcp-server.c

index 81de2ef7fccfd6d46eef25f90bdc780abbe675ae..e2ea79f58414b31dae29084d3583b25cfb0b540c 100644 (file)
@@ -1202,6 +1202,10 @@ int sd_dhcp_server_start(sd_dhcp_server *server) {
 
         assert_return(server, -EINVAL);
         assert_return(server->event, -EINVAL);
+
+        if (sd_dhcp_server_is_running(server))
+                return 0;
+
         assert_return(!server->receive_message, -EBUSY);
         assert_return(server->fd_raw < 0, -EBUSY);
         assert_return(server->fd < 0, -EBUSY);
index f0514207080133c0320c218e6856291369a46315..a5c9bfeafbe40dfb9525ac8f325423095060d3fa 100644 (file)
@@ -61,7 +61,7 @@ static int test_basic(sd_event *event, bool bind_to_interface) {
                 return log_info_errno(r, "sd_dhcp_server_start failed: %m");
         assert_se(r >= 0);
 
-        assert_se(sd_dhcp_server_start(server) == -EBUSY);
+        assert_se(sd_dhcp_server_start(server) >= 0);
         assert_se(sd_dhcp_server_stop(server) >= 0);
         assert_se(sd_dhcp_server_stop(server) >= 0);
         assert_se(sd_dhcp_server_start(server) >= 0);