diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java index f6317f5b6ebf2..e6decc88f6eeb 100644 --- a/wifi/java/android/net/wifi/WifiConfigStore.java +++ b/wifi/java/android/net/wifi/WifiConfigStore.java @@ -460,6 +460,25 @@ class WifiConfigStore { return dhcpInfoInternal; } + /** + * set IP configuration for a given network id + */ + static void setIpConfiguration(int netId, DhcpInfoInternal dhcpInfo) { + LinkProperties linkProperties = dhcpInfo.makeLinkProperties(); + + synchronized (sConfiguredNetworks) { + WifiConfiguration config = sConfiguredNetworks.get(netId); + if (config != null) { + // add old proxy details + if(config.linkProperties != null) { + linkProperties.setHttpProxy(config.linkProperties.getHttpProxy()); + } + config.linkProperties = linkProperties; + } + } + } + + /** * Fetch the proxy properties for a given network id */ diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 589d88ccbe2e9..717dcf001ea40 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -2510,6 +2510,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { synchronized (mDhcpInfoInternal) { mDhcpInfoInternal = dhcpInfoInternal; } + WifiConfigStore.setIpConfiguration(mLastNetworkId, dhcpInfoInternal); sendMessage(CMD_IP_CONFIG_SUCCESS); } else { Log.d(TAG, "DHCP request failed: " +