Loading java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java +3 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,9 @@ public class FetchVoicemailReceiver extends BroadcastReceiver { new Runnable() { @Override public void run() { if (networkCallback != null) { networkCallback.waitForIpv4(); } try { while (retryCount > 0) { VvmLog.i(TAG, "fetching voicemail, retry count=" + retryCount); Loading java/com/android/voicemail/impl/sync/VvmNetworkRequest.java +5 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,11 @@ public class VvmNetworkRequest { new FutureNetworkRequestCallback(config, handle, status); callback.requestNetwork(); try { return callback.getFuture().get(); NetworkWrapper ret = callback.getFuture().get(); if (ret != null) { callback.waitForIpv4(); } return ret; } catch (InterruptedException | ExecutionException e) { callback.releaseNetwork(); VvmLog.e(TAG, "can't get future network", e); Loading java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java +19 −0 Original line number Diff line number Diff line Loading @@ -18,9 +18,12 @@ package com.android.voicemail.impl.sync; import android.annotation.TargetApi; import android.content.Context; import android.net.ConnectivityManager; import android.net.InetAddresses; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.ConditionVariable; import android.os.Build.VERSION_CODES; import android.os.Handler; import android.os.Looper; Loading Loading @@ -125,6 +128,22 @@ public abstract class VvmNetworkRequestCallback extends ConnectivityManager.Netw resultReceived = true; } private static final int DEFAULT_IPV4_WAIT_DELAY_MS = 500; // in milliseconds private final ConditionVariable mWaitV4Cv = new ConditionVariable(); @Override @CallSuper public void onLinkPropertiesChanged(Network network, LinkProperties lp) { boolean hasIPv4 = (lp != null) && (lp.isReachable(InetAddresses.parseNumericAddress("8.8.8.8"))); if(hasIPv4) { mWaitV4Cv.open(); } } public void waitForIpv4() { VvmLog.w(TAG, "Waiting for IPV4 address..."); mWaitV4Cv.block(DEFAULT_IPV4_WAIT_DELAY_MS); } @CallSuper public void onUnavailable() { VvmLog.i(TAG, "onUnavailable"); Loading Loading
java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java +3 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,9 @@ public class FetchVoicemailReceiver extends BroadcastReceiver { new Runnable() { @Override public void run() { if (networkCallback != null) { networkCallback.waitForIpv4(); } try { while (retryCount > 0) { VvmLog.i(TAG, "fetching voicemail, retry count=" + retryCount); Loading
java/com/android/voicemail/impl/sync/VvmNetworkRequest.java +5 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,11 @@ public class VvmNetworkRequest { new FutureNetworkRequestCallback(config, handle, status); callback.requestNetwork(); try { return callback.getFuture().get(); NetworkWrapper ret = callback.getFuture().get(); if (ret != null) { callback.waitForIpv4(); } return ret; } catch (InterruptedException | ExecutionException e) { callback.releaseNetwork(); VvmLog.e(TAG, "can't get future network", e); Loading
java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java +19 −0 Original line number Diff line number Diff line Loading @@ -18,9 +18,12 @@ package com.android.voicemail.impl.sync; import android.annotation.TargetApi; import android.content.Context; import android.net.ConnectivityManager; import android.net.InetAddresses; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.ConditionVariable; import android.os.Build.VERSION_CODES; import android.os.Handler; import android.os.Looper; Loading Loading @@ -125,6 +128,22 @@ public abstract class VvmNetworkRequestCallback extends ConnectivityManager.Netw resultReceived = true; } private static final int DEFAULT_IPV4_WAIT_DELAY_MS = 500; // in milliseconds private final ConditionVariable mWaitV4Cv = new ConditionVariable(); @Override @CallSuper public void onLinkPropertiesChanged(Network network, LinkProperties lp) { boolean hasIPv4 = (lp != null) && (lp.isReachable(InetAddresses.parseNumericAddress("8.8.8.8"))); if(hasIPv4) { mWaitV4Cv.open(); } } public void waitForIpv4() { VvmLog.w(TAG, "Waiting for IPV4 address..."); mWaitV4Cv.block(DEFAULT_IPV4_WAIT_DELAY_MS); } @CallSuper public void onUnavailable() { VvmLog.i(TAG, "onUnavailable"); Loading