Fixed network reachability down/up when connectivity changes + set dns server before network is up

This commit is contained in:
Sylvain Berfini 2017-07-10 12:39:55 +02:00
parent 459482b52b
commit fbd1e3d2ed

View file

@ -958,8 +958,10 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
if (mConnectivityManager == null) return; if (mConnectivityManager == null) return;
boolean connected = false; boolean connected = false;
NetworkInfo networkInfo = null; NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo();
if (Version.sdkAboveOrEqual(Version.API21_LOLLIPOP_50)) { connected = networkInfo != null && networkInfo.isConnected();
if (networkInfo == null && Version.sdkAboveOrEqual(Version.API21_LOLLIPOP_50)) {
for (Network network : mConnectivityManager.getAllNetworks()) { for (Network network : mConnectivityManager.getAllNetworks()) {
if (network != null) { if (network != null) {
networkInfo = mConnectivityManager.getNetworkInfo(network); networkInfo = mConnectivityManager.getNetworkInfo(network);
@ -969,9 +971,6 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
} }
} }
} }
} else {
networkInfo = mConnectivityManager.getActiveNetworkInfo();
connected = networkInfo != null && networkInfo.isConnected();
} }
if (networkInfo == null || !connected) { if (networkInfo == null || !connected) {
@ -985,23 +984,26 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled(); boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled();
if (wifiOnly){ if (wifiOnly){
if (networkInfo.getType()==ConnectivityManager.TYPE_WIFI) if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
setDnsServers();
mLc.setNetworkReachable(true); mLc.setNetworkReachable(true);
}
else { else {
Log.i("Wifi-only mode, setting network not reachable"); Log.i("Wifi-only mode, setting network not reachable");
mLc.setNetworkReachable(false); mLc.setNetworkReachable(false);
} }
}else{ } else {
int curtype=networkInfo.getType(); int curtype=networkInfo.getType();
if (curtype!=mLastNetworkType){ if (curtype != mLastNetworkType) {
//if kind of network has changed, we need to notify network_reachable(false) to make sure all current connections are destroyed. //if kind of network has changed, we need to notify network_reachable(false) to make sure all current connections are destroyed.
//they will be re-created during setNetworkReachable(true). //they will be re-created during setNetworkReachable(true).
Log.i("Connectivity has changed."); Log.i("Connectivity has changed.");
mLc.setNetworkReachable(false); mLc.setNetworkReachable(false);
} }
setDnsServers();
mLc.setNetworkReachable(true); mLc.setNetworkReachable(true);
mLastNetworkType=curtype; mLastNetworkType = curtype;
} }
} }
@ -1926,8 +1928,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
@Override @Override
public void networkReachableChanged(LinphoneCore lc, boolean enable) { public void networkReachableChanged(LinphoneCore lc, boolean enable) {
Log.d("Set Dns servers");
setDnsServers();
} }
@Override @Override