Loading core/java/android/net/DhcpStateMachine.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -117,13 +117,14 @@ public class DhcpStateMachine extends StateMachine { PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); mDhcpRenewWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_TAG); mDhcpRenewWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_TAG); mDhcpRenewWakeLock.setReferenceCounted(false); mBroadcastReceiver = new BroadcastReceiver() { mBroadcastReceiver = new BroadcastReceiver() { @Override @Override public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) { //DHCP renew //DHCP renew if (DBG) Log.d(TAG, "Sending a DHCP renewal " + this); if (DBG) Log.d(TAG, "Sending a DHCP renewal " + this); //acquire a 40s wakelock to finish DHCP renewal //Lock released after 40s in worst case scenario mDhcpRenewWakeLock.acquire(40000); mDhcpRenewWakeLock.acquire(40000); sendMessage(CMD_RENEW_DHCP); sendMessage(CMD_RENEW_DHCP); } } Loading Loading @@ -166,6 +167,7 @@ public class DhcpStateMachine extends StateMachine { switch (message.what) { switch (message.what) { case CMD_RENEW_DHCP: case CMD_RENEW_DHCP: Log.e(TAG, "Error! Failed to handle a DHCP renewal on " + mInterfaceName); Log.e(TAG, "Error! Failed to handle a DHCP renewal on " + mInterfaceName); mDhcpRenewWakeLock.release(); break; break; case SM_QUIT_CMD: case SM_QUIT_CMD: mContext.unregisterReceiver(mBroadcastReceiver); mContext.unregisterReceiver(mBroadcastReceiver); Loading Loading @@ -268,10 +270,12 @@ public class DhcpStateMachine extends StateMachine { /* Notify controller before starting DHCP */ /* Notify controller before starting DHCP */ mController.sendMessage(CMD_PRE_DHCP_ACTION); mController.sendMessage(CMD_PRE_DHCP_ACTION); transitionTo(mWaitBeforeRenewalState); transitionTo(mWaitBeforeRenewalState); //mDhcpRenewWakeLock is released in WaitBeforeRenewalState } else { } else { if (!runDhcp(DhcpAction.RENEW)) { if (!runDhcp(DhcpAction.RENEW)) { transitionTo(mStoppedState); transitionTo(mStoppedState); } } mDhcpRenewWakeLock.release(); } } break; break; case CMD_START_DHCP: case CMD_START_DHCP: Loading Loading @@ -318,6 +322,10 @@ public class DhcpStateMachine extends StateMachine { } } return retValue; return retValue; } } @Override public void exit() { mDhcpRenewWakeLock.release(); } } } private boolean runDhcp(DhcpAction dhcpAction) { private boolean runDhcp(DhcpAction dhcpAction) { Loading Loading
core/java/android/net/DhcpStateMachine.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -117,13 +117,14 @@ public class DhcpStateMachine extends StateMachine { PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); mDhcpRenewWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_TAG); mDhcpRenewWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_TAG); mDhcpRenewWakeLock.setReferenceCounted(false); mBroadcastReceiver = new BroadcastReceiver() { mBroadcastReceiver = new BroadcastReceiver() { @Override @Override public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) { //DHCP renew //DHCP renew if (DBG) Log.d(TAG, "Sending a DHCP renewal " + this); if (DBG) Log.d(TAG, "Sending a DHCP renewal " + this); //acquire a 40s wakelock to finish DHCP renewal //Lock released after 40s in worst case scenario mDhcpRenewWakeLock.acquire(40000); mDhcpRenewWakeLock.acquire(40000); sendMessage(CMD_RENEW_DHCP); sendMessage(CMD_RENEW_DHCP); } } Loading Loading @@ -166,6 +167,7 @@ public class DhcpStateMachine extends StateMachine { switch (message.what) { switch (message.what) { case CMD_RENEW_DHCP: case CMD_RENEW_DHCP: Log.e(TAG, "Error! Failed to handle a DHCP renewal on " + mInterfaceName); Log.e(TAG, "Error! Failed to handle a DHCP renewal on " + mInterfaceName); mDhcpRenewWakeLock.release(); break; break; case SM_QUIT_CMD: case SM_QUIT_CMD: mContext.unregisterReceiver(mBroadcastReceiver); mContext.unregisterReceiver(mBroadcastReceiver); Loading Loading @@ -268,10 +270,12 @@ public class DhcpStateMachine extends StateMachine { /* Notify controller before starting DHCP */ /* Notify controller before starting DHCP */ mController.sendMessage(CMD_PRE_DHCP_ACTION); mController.sendMessage(CMD_PRE_DHCP_ACTION); transitionTo(mWaitBeforeRenewalState); transitionTo(mWaitBeforeRenewalState); //mDhcpRenewWakeLock is released in WaitBeforeRenewalState } else { } else { if (!runDhcp(DhcpAction.RENEW)) { if (!runDhcp(DhcpAction.RENEW)) { transitionTo(mStoppedState); transitionTo(mStoppedState); } } mDhcpRenewWakeLock.release(); } } break; break; case CMD_START_DHCP: case CMD_START_DHCP: Loading Loading @@ -318,6 +322,10 @@ public class DhcpStateMachine extends StateMachine { } } return retValue; return retValue; } } @Override public void exit() { mDhcpRenewWakeLock.release(); } } } private boolean runDhcp(DhcpAction dhcpAction) { private boolean runDhcp(DhcpAction dhcpAction) { Loading