diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 97293c382..68bc52a2f 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -70,6 +70,7 @@ import org.linphone.core.PresenceActivityType; import org.linphone.core.PresenceModel; import org.linphone.core.PublishState; import org.linphone.core.SubscriptionState; +import org.linphone.core.TunnelConfig; import org.linphone.mediastream.Log; import org.linphone.mediastream.Version; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; @@ -418,10 +419,9 @@ public class LinphoneManager implements LinphoneCoreListener { NetworkInfo info = mConnectivityManager.getActiveNetworkInfo(); mLc.tunnelCleanServers(); - String host = mPrefs.getTunnelHost(); - if (host != null) { - int port = mPrefs.getTunnelPort(); - mLc.tunnelAddServerAndMirror(host, port, 12345, 500); + TunnelConfig config = mPrefs.getTunnelConfig(); + if (config.getHost() != null) { + mLc.tunnelAddServer(config); manageTunnelServer(info); } } @@ -537,8 +537,6 @@ public class LinphoneManager implements LinphoneCoreListener { Log.w("MediaStreamer : " + availableCores + " cores detected and configured"); mLc.setCpuCount(availableCores); - initTunnelFromConf(); - int migrationResult = getLc().migrateToMultiTransport(); Log.d("Migration to multi transport result = " + migrationResult); diff --git a/src/org/linphone/LinphonePreferences.java b/src/org/linphone/LinphonePreferences.java index 95138353f..105718d82 100644 --- a/src/org/linphone/LinphonePreferences.java +++ b/src/org/linphone/LinphonePreferences.java @@ -31,6 +31,7 @@ import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.LpConfig; +import org.linphone.core.TunnelConfig; import org.linphone.mediastream.Log; import android.content.Context; @@ -1014,6 +1015,59 @@ public class LinphonePreferences { // End of advanced settings // Tunnel settings + private TunnelConfig tunnelConfig = null; + + public TunnelConfig getTunnelConfig() { + if(getLc().isTunnelAvailable()) { + if(tunnelConfig == null) { + TunnelConfig servers[] = getLc().tunnelGetServers(); + if(servers.length > 0) { + tunnelConfig = servers[0]; + } else { + tunnelConfig = new TunnelConfig(); + tunnelConfig.setDelay(500); + } + } + return tunnelConfig; + } else { + return null; + } + } + + public String getTunnelHost() { + TunnelConfig config = getTunnelConfig(); + if(config != null) { + return config.getHost(); + } else { + return null; + } + } + + public void setTunnelHost(String host) { + TunnelConfig config = getTunnelConfig(); + if(config != null) { + config.setHost(host); + LinphoneManager.getInstance().initTunnelFromConf(); + } + } + + public int getTunnelPort() { + TunnelConfig config = getTunnelConfig(); + if(config != null) { + return config.getPort(); + } else { + return -1; + } + } + + public void setTunnelPort(int port) { + TunnelConfig config = getTunnelConfig(); + if(config != null) { + config.setPort(port); + LinphoneManager.getInstance().initTunnelFromConf(); + } + } + public String getTunnelMode() { return getConfig().getString("app", "tunnel", null); } @@ -1022,24 +1076,6 @@ public class LinphonePreferences { getConfig().setString("app", "tunnel", mode); LinphoneManager.getInstance().initTunnelFromConf(); } - - public String getTunnelHost() { - return getConfig().getString("tunnel", "host", null); - } - - public void setTunnelHost(String host) { - getConfig().setString("tunnel", "host", host); - LinphoneManager.getInstance().initTunnelFromConf(); - } - - public int getTunnelPort() { - return getConfig().getInt("tunnel", "port", 443); - } - - public void setTunnelPort(int port) { - getConfig().setInt("tunnel", "port", port); - LinphoneManager.getInstance().initTunnelFromConf(); - } // End of tunnel settings public boolean isProvisioningLoginViewEnabled() { diff --git a/src/org/linphone/SettingsFragment.java b/src/org/linphone/SettingsFragment.java index b2c57e7b6..ddd283810 100644 --- a/src/org/linphone/SettingsFragment.java +++ b/src/org/linphone/SettingsFragment.java @@ -31,6 +31,7 @@ import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.PayloadType; +import org.linphone.core.TunnelConfig; import org.linphone.mediastream.Log; import org.linphone.mediastream.Version; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; @@ -57,6 +58,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib private static final int WIZARD_INTENT = 1; private LinphonePreferences mPrefs; private Handler mHandler = new Handler(); + private TunnelConfig tunnelConfig; public SettingsFragment() { super(R.xml.preferences); diff --git a/submodules/linphone b/submodules/linphone index 5b17d4d47..c3575589c 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 5b17d4d473c4fb0a648b4d5cea98cb1bde2e2894 +Subproject commit c3575589c123feddde3021699b2cfe446573cc93