From: Pekka Pessi <[email protected]>

---
 plugins/dhclient.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/plugins/dhclient.c b/plugins/dhclient.c
index fd86773..01b87f3 100644
--- a/plugins/dhclient.c
+++ b/plugins/dhclient.c
@@ -114,15 +114,21 @@ struct dhclient_data {
        char *ifname;
 };
 
+static void dhclient_unlink(const char *ifname);
+
 static void dhclient_died(struct connman_task *task, void *user_data)
 {
        struct dhclient_data *dhclient = user_data;
 
+       connman_dhcp_set_data(dhclient->dhcp, NULL);
+
        connman_dhcp_unref(dhclient->dhcp);
 
        connman_task_destroy(dhclient->task);
        dhclient->task = NULL;
 
+       dhclient_unlink(dhclient->ifname);
+
        g_free(dhclient->ifname);
        g_free(dhclient);
 }
@@ -212,10 +218,10 @@ static int dhclient_release(struct connman_dhcp *dhcp)
 
        DBG("dhcp %p", dhcp);
 
-       if (dhclient->task != NULL)
-               connman_task_stop(dhclient->task);
+       if (dhclient == NULL)
+               return -ESRCH;
 
-       dhclient_unlink(dhclient->ifname);
+       connman_task_stop(dhclient->task);
 
        return 0;
 }
-- 
1.7.0.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to