dhcp: Cancel old renewal timeout prior to adding a new one
authorGrant Erickson <marathon96@gmail.com>
Thu, 2 Jun 2011 04:16:13 +0000 (21:16 -0700)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 14 Jun 2011 09:26:27 +0000 (11:26 +0200)
commiteb16a6becb8ab1dd4be3696ab446ab91830f6fc5
tree00d8690bf0746d2e2302115d06bb9dc06622b91c
parent6996a25658098d3a2133b0388fd6c4c1de61bf4d
dhcp: Cancel old renewal timeout prior to adding a new one

Given the following reproduction steps:

    1) Set up an access point with a Class B IP address, say
       10.2.40.254.
    2) Set up the access point to provide DHCP leases over a range
       10.2.40.2 through 10.2.40.253.
    3) Set up a short lease renewal period of 5-10 minutes.
    4) Allow the device to associate, connect and receive an IP
       address.
    5) Midway through the lease interval, change the access point to a
       different IP address, say, 10.2.41.254.
    6) Change the access point to issue DHCP leases over a new range,
       10.2.41.2 through 10.2.41.253.
    7) Watch as the access point resets, the connection is lost, the
       connection is regained and as connman tries to get a new DHCP
       lease.

Prior to commit 39825846, connman could receive a new but different
DHCP lease but connman would not program the confirmed lease to the
interface.

However, following that commit, it now programs the new, changed DHCP
lease to the interface but still believes the old lease is valid and
attempts to keep servicing the old renewal timeout for the prior but
now stale lease.

This patch cancels any existing, pending DHCP lease renewal timeout
following a DHCP lease configuration change.
gdhcp/client.c