From f665a9a97091d30616d84a055a0af3a1df5449f2 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 28 Mar 2008 21:34:34 +0100 Subject: [PATCH] Fix DHCP release and dhclient termination --- plugins/dhclient.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/plugins/dhclient.c b/plugins/dhclient.c index 8847a1d..c37e688 100644 --- a/plugins/dhclient.c +++ b/plugins/dhclient.c @@ -85,27 +85,14 @@ static struct dhclient_task *find_task_by_index(int index) static void kill_task(struct dhclient_task *task) { - char pathname[PATH_MAX]; - if (task->pid > 0) kill(task->pid, SIGTERM); - - snprintf(pathname, sizeof(pathname) - 1, - "%s/dhclient.%s.pid", STATEDIR, task->ifname); - unlink(pathname); - - snprintf(pathname, sizeof(pathname) - 1, - "%s/dhclient.%s.leases", STATEDIR, task->ifname); - unlink(pathname); - - free(task->ifname); - - g_free(task); } static void task_died(GPid pid, gint status, gpointer data) { struct dhclient_task *task = data; + char pathname[PATH_MAX]; if (WIFEXITED(status)) printf("[DHCP] exit status %d for %s\n", @@ -119,7 +106,17 @@ static void task_died(GPid pid, gint status, gpointer data) tasks = g_slist_remove(tasks, task); - kill_task(task); + snprintf(pathname, sizeof(pathname) - 1, + "%s/dhclient.%s.pid", STATEDIR, task->ifname); + unlink(pathname); + + snprintf(pathname, sizeof(pathname) - 1, + "%s/dhclient.%s.leases", STATEDIR, task->ifname); + unlink(pathname); + + free(task->ifname); + + g_free(task); } static void task_setup(gpointer data) -- 2.7.4