From 19cc854b161ce1ce65a47cba3b731c561a9d918e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 30 Nov 2012 11:29:20 +0100 Subject: [PATCH] Setting to choose random port or user defined port --- res/values-FR/strings.xml | 3 ++- res/values/non_localizable_defaults.xml | 3 ++- res/values/non_localizable_strings.xml | 3 ++- res/values/strings.xml | 3 ++- res/xml/preferences.xml | 12 ++++++++--- src/org/linphone/LinphoneManager.java | 26 ++++++----------------- src/org/linphone/PreferencesFragment.java | 13 ++++++++++++ 7 files changed, 37 insertions(+), 26 deletions(-) diff --git a/res/values-FR/strings.xml b/res/values-FR/strings.xml index 028455e22..d200cd85c 100644 --- a/res/values-FR/strings.xml +++ b/res/values-FR/strings.xml @@ -76,7 +76,8 @@ Réseau Transport - Utiliser les ports standards + Utiliser des ports aléatoires + Port SIP à utiliser si port aléatoire désactivé Au moins un est requis diff --git a/res/values/non_localizable_defaults.xml b/res/values/non_localizable_defaults.xml index b290635e8..8dfbe645a 100644 --- a/res/values/non_localizable_defaults.xml +++ b/res/values/non_localizable_defaults.xml @@ -36,7 +36,8 @@ false stun.linphone.org false - false + true + 5060 @string/pref_transport_udp_key 7078 9078 diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml index fb98ee49b..78ed6a0bc 100644 --- a/res/values/non_localizable_strings.xml +++ b/res/values/non_localizable_strings.xml @@ -40,7 +40,8 @@ pref_transport_udp_key pref_transport_tcp_key pref_transport_tls_key - pref_transport_use_standard_ports_key + pref_transport_use_random_ports_key + pref_sip_port_key pref_echo_canceller_calibration_key pref_prefix_key diff --git a/res/values/strings.xml b/res/values/strings.xml index 8f4c8c82c..9570c4305 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -95,7 +95,8 @@ UDP TCP TLS - Use standard ports + Use random ports + SIP port to use At least one item is required Registration successful diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 786874196..7c3f3c40d 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -233,9 +233,15 @@ android:defaultValue="@bool/pref_ice_enabled_default"/> + android:key="@string/pref_transport_use_random_ports_key" + android:title="@string/pref_transport_use_random_ports" + android:defaultValue="@bool/pref_transport_use_random_ports_default"/> + + 0xFFFF) { - Log.e("Bad port number ["+lPreviousPort+"] using random instead"); + boolean useRandomPort = getPrefBoolean(R.string.pref_transport_use_random_ports_key, mR.getBoolean(R.bool.pref_transport_use_random_ports_default)); + int lPreviousPort = tryToParseIntValue(getPrefString(R.string.pref_sip_port_key, getString(R.string.pref_sip_port_default)), 5060); + if (lPreviousPort>0xFFFF || useRandomPort) { lPreviousPort=(0xDFFF & (int)Math.random())+1024; + Log.w("Using random port " + lPreviousPort); } String transport = getPrefString(R.string.pref_transport_key, getString(R.string.pref_transport_udp_key)); @@ -800,29 +800,17 @@ public final class LinphoneManager implements LinphoneCoreListener { { ports.udp = 0; ports.tls = 0; - if (useStandardPort) { - ports.tcp = 5060; - } else if (ports.tcp==0){ - ports.tcp=lPreviousPort; - } + ports.tcp = lPreviousPort; } else if (transport.equals(getString(R.string.pref_transport_udp_key))) { ports.tcp = 0; ports.tls = 0; - if (useStandardPort) { - ports.udp = 5060; - } else if (ports.udp==0) { - ports.udp = lPreviousPort; - } + ports.udp = lPreviousPort; } else if (transport.equals(getString(R.string.pref_transport_tls_key))) { ports.udp = 0; ports.tcp = 0; - if (useStandardPort) { - ports.tls = 5061; - } else if (ports.tls==0) { - ports.tls=lPreviousPort; - } + ports.tls = lPreviousPort; } mLc.setSignalingTransportPorts(ports); diff --git a/src/org/linphone/PreferencesFragment.java b/src/org/linphone/PreferencesFragment.java index 1fc95be91..0177ea044 100644 --- a/src/org/linphone/PreferencesFragment.java +++ b/src/org/linphone/PreferencesFragment.java @@ -56,6 +56,7 @@ import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceCategory; @@ -204,6 +205,18 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa } else { findPreference(getString(R.string.menu_about_key)).setLayoutResource(R.layout.hidden); } + + final CheckBoxPreference useRandomPort = (CheckBoxPreference) findPreference(R.string.pref_transport_use_random_ports_key); + final Preference sipPort = findPreference(R.string.pref_sip_port_key); + sipPort.setEnabled(!useRandomPort.isChecked()); + useRandomPort.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + boolean isChecked = (Boolean) newValue; + sipPort.setEnabled(!isChecked); + return true; + } + }); } private void createAddAccountButton() {