Notify success before configuring the IP address.
This ensures that IpManager has a complete copy of DHCP state before configuring the IPv4 address. That way, when the netlink notification of the IPv4 address arrives, we are guaranteed to have all DHCP information (including DNS servers and routes) available and we will never send the IPv4 address before the DNS servers. Bug: 27605330 Change-Id: I732424dfe2408be9e40028563e99d610b541e12d
This commit is contained in:
@@ -724,6 +724,7 @@ public class DhcpClient extends StateMachine {
|
||||
mOffer = null;
|
||||
Log.d(TAG, "Confirmed lease: " + mDhcpLease);
|
||||
setDhcpLeaseExpiry(packet);
|
||||
notifySuccess();
|
||||
transitionTo(mConfiguringInterfaceState);
|
||||
}
|
||||
} else if (packet instanceof DhcpNakPacket) {
|
||||
@@ -794,7 +795,6 @@ public class DhcpClient extends StateMachine {
|
||||
@Override
|
||||
public void enter() {
|
||||
super.enter();
|
||||
notifySuccess();
|
||||
// TODO: DhcpStateMachine only supported renewing at 50% of the lease time,
|
||||
// and did not support rebinding. Now that the legacy DHCP client is gone, fix this.
|
||||
scheduleRenew();
|
||||
@@ -850,6 +850,7 @@ public class DhcpClient extends StateMachine {
|
||||
if (!isValidPacket(packet)) return;
|
||||
if ((packet instanceof DhcpAckPacket)) {
|
||||
setDhcpLeaseExpiry(packet);
|
||||
notifySuccess();
|
||||
transitionTo(mDhcpBoundState);
|
||||
} else if (packet instanceof DhcpNakPacket) {
|
||||
transitionTo(mDhcpInitState);
|
||||
|
||||
Reference in New Issue
Block a user