Setting to choose random port or user defined port

This commit is contained in:
Sylvain Berfini 2012-11-30 11:29:20 +01:00
parent ef021b1e8a
commit 19cc854b16
7 changed files with 37 additions and 26 deletions

View file

@ -76,7 +76,8 @@
<string name="pref_network_title">Réseau</string>
<string name="pref_transport">Transport</string>
<string name="pref_transport_use_standard_ports">Utiliser les ports standards</string>
<string name="pref_transport_use_random_ports">Utiliser des ports aléatoires</string>
<string name="pref_sip_port_title">Port SIP à utiliser si port aléatoire désactivé</string>
<string name="at_least_a_protocol">Au moins un est requis</string>

View file

@ -36,7 +36,8 @@
<bool name="pref_wifi_only_default">false</bool>
<string name="default_stun">stun.linphone.org</string>
<bool name="pref_ice_enabled_default">false</bool>
<bool name="pref_transport_use_standard_ports_default">false</bool>
<bool name="pref_transport_use_random_ports_default">true</bool>
<string name="pref_sip_port_default">5060</string>
<string name="pref_transport_default">@string/pref_transport_udp_key</string>
<string name="default_audio_port">7078</string>
<string name="default_video_port">9078</string>

View file

@ -40,7 +40,8 @@
<string name="pref_transport_udp_key">pref_transport_udp_key</string>
<string name="pref_transport_tcp_key">pref_transport_tcp_key</string>
<string name="pref_transport_tls_key">pref_transport_tls_key</string>
<string name="pref_transport_use_standard_ports_key">pref_transport_use_standard_ports_key</string>
<string name="pref_transport_use_random_ports_key">pref_transport_use_random_ports_key</string>
<string name="pref_sip_port_key">pref_sip_port_key</string>
<string name="pref_echo_canceller_calibration_key">pref_echo_canceller_calibration_key</string>
<string name="pref_prefix_key">pref_prefix_key</string>

View file

@ -95,7 +95,8 @@
<string name="pref_transport_udp">UDP</string>
<string name="pref_transport_tcp">TCP</string>
<string name="pref_transport_tls">TLS</string>
<string name="pref_transport_use_standard_ports">Use standard ports</string>
<string name="pref_transport_use_random_ports">Use random ports</string>
<string name="pref_sip_port_title">SIP port to use</string>
<string name="at_least_a_protocol">At least one item is required</string>
<string name="first_launch_ok">Registration successful</string>

View file

@ -233,9 +233,15 @@
android:defaultValue="@bool/pref_ice_enabled_default"/>
<CheckBoxPreference
android:key="@string/pref_transport_use_standard_ports_key"
android:title="@string/pref_transport_use_standard_ports"
android:defaultValue="@bool/pref_transport_use_standard_ports_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"/>
<EditTextPreference
android:key="@string/pref_sip_port_key"
android:title="@string/pref_sip_port_title"
android:defaultValue="@string/pref_sip_port_default"
android:numeric="integer"/>
<EditTextPreference
android:key="@string/pref_audio_port_key"

View file

@ -788,11 +788,11 @@ public final class LinphoneManager implements LinphoneCoreListener {
private void setSignalingTransportsFromConfiguration(Transports t) {
Transports ports = new Transports(t);
boolean useStandardPort = getPrefBoolean(R.string.pref_transport_use_standard_ports_key, mR.getBoolean(R.bool.pref_transport_use_standard_ports_default));
int lPreviousPort = ports.tcp +ports.udp +ports.tls; // assume only one port is active
if (lPreviousPort>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);

View file

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