Merge "[SPIN] service: extend wifi ext info for passpoint." into tizen
[platform/upstream/connman.git] / gdhcp / client.c
index b4b3e7e..2c442e5 100755 (executable)
@@ -2622,6 +2622,7 @@ static gboolean ipv4ll_announce_timeout(gpointer dhcp_data)
                dhcp_client->ipv4ll_available_cb(dhcp_client,
                                        dhcp_client->ipv4ll_available_data);
        dhcp_client->conflicts = 0;
+       dhcp_client->timeout = 0;
 
        return FALSE;
 }
@@ -2654,6 +2655,8 @@ int g_dhcp_client_start(GDHCPClient *dhcp_client, const char *last_address)
        uint32_t addr;
        uint64_t rand;
 
+       remove_timeouts(dhcp_client);
+
        if (dhcp_client->type == G_DHCP_IPV6) {
                if (dhcp_client->information_req_cb) {
                        dhcp_client->state = INFORMATION_REQ;
@@ -2770,9 +2773,10 @@ int g_dhcp_client_start(GDHCPClient *dhcp_client, const char *last_address)
                addr = 0;
        } else {
                addr = ntohl(inet_addr(last_address));
-               if (addr == 0xFFFFFFFF) {
+               if (addr == 0xFFFFFFFF || ((addr & LINKLOCAL_ADDR) ==
+                                       LINKLOCAL_ADDR)) {
                        addr = 0;
-               } else {
+               } else if (dhcp_client->last_address != last_address) {
                        g_free(dhcp_client->last_address);
                        dhcp_client->last_address = g_strdup(last_address);
                }