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() {