From 0d16e8d7b70a2fb6deaddc9544e91e71d3e60917 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 28 Feb 2017 17:37:40 +0100 Subject: [PATCH] Add set dns server after a network changed --- src/org/linphone/LinphoneManager.java | 33 +++++++++++++++++-- .../tutorials/TutorialCardDavSync.java | 5 +++ submodules/belle-sip | 2 +- submodules/linphone | 2 +- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 552cb9e12..91a761cf0 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -27,6 +27,7 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.net.InetAddress; import java.nio.ByteBuffer; import java.sql.Timestamp; import java.util.ArrayList; @@ -888,8 +889,9 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag } public void updateNetworkReachability() { - ConnectivityManager cm = (ConnectivityManager) mServiceContext.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo networkInfo = cm.getActiveNetworkInfo(); + if (mConnectivityManager == null) return; + + NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo(); if (networkInfo == null || !networkInfo.isConnected()) { Log.i("No connectivity: setting network unreachable"); @@ -1612,6 +1614,26 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag dozeModeEnabled = b; } + public void setDnsServers() { + if (mConnectivityManager == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) + return; + + if (mConnectivityManager.getActiveNetwork() == null + || mConnectivityManager.getLinkProperties(mConnectivityManager.getActiveNetwork()) == null) + return; + + int i = 0; + List inetServers = null; + inetServers = mConnectivityManager.getLinkProperties(mConnectivityManager.getActiveNetwork()).getDnsServers(); + + String[] servers = new String[inetServers.size()]; + + for (InetAddress address : inetServers) { + servers[i++] = address.getHostAddress(); + } + mLc.setDnsServers(servers); + } + @SuppressWarnings("serial") public static class LinphoneConfigException extends LinphoneException { @@ -1733,6 +1755,13 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag public void friendListRemoved(LinphoneCore lc, LinphoneFriendList list) { // TODO Auto-generated method stub } + + @Override + public void networkReachableChanged(LinphoneCore lc, boolean enable) { + Log.d("Set Dns servers"); + setDnsServers(); + } + @Override public void authInfoRequested(LinphoneCore lc, String realm, String username, String domain) { diff --git a/src/org/linphone/tutorials/TutorialCardDavSync.java b/src/org/linphone/tutorials/TutorialCardDavSync.java index 99739de3f..660be41a2 100644 --- a/src/org/linphone/tutorials/TutorialCardDavSync.java +++ b/src/org/linphone/tutorials/TutorialCardDavSync.java @@ -194,6 +194,11 @@ public class TutorialCardDavSync extends Activity implements OnClickListener, Li myLog(msg2); } + @Override + public void networkReachableChanged(LinphoneCore lc, boolean enable) { + + } + @Override public void callStatsUpdated(LinphoneCore lc, LinphoneCall call, LinphoneCallStats stats) { diff --git a/submodules/belle-sip b/submodules/belle-sip index bcb9b2389..d95f3f9fc 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit bcb9b2389c2e7f55813c59306bf42f58b3a6b633 +Subproject commit d95f3f9fc6e1a9bacd50c6b5c5e80e24a44796f6 diff --git a/submodules/linphone b/submodules/linphone index 35d9eeb15..583b0ed76 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 35d9eeb152c1305e9a79be9530c483148291afc4 +Subproject commit 583b0ed767f5fee20f1adc30b90847af2a62a73c