Setting to choose random port or user defined port
This commit is contained in:
parent
ef021b1e8a
commit
19cc854b16
7 changed files with 37 additions and 26 deletions
|
@ -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>
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in a new issue