diff --git a/res/values/non_localizable_defaults.xml b/res/values/non_localizable_defaults.xml
index 1b5bd2618..89378bde6 100644
--- a/res/values/non_localizable_defaults.xml
+++ b/res/values/non_localizable_defaults.xml
@@ -36,6 +36,7 @@
false
stun.linphone.org
false
+ false
true
5060
@string/pref_transport_udp_key
diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml
index cf20690e0..9391b5e81 100644
--- a/res/values/non_localizable_strings.xml
+++ b/res/values/non_localizable_strings.xml
@@ -49,6 +49,7 @@
pref_domain_key
pref_passwd_key
pref_username_key
+ pref_auth_userid_key
pref_wizard_key
pref_activated_key
pref_debug_key
@@ -112,4 +113,5 @@
pref_rfc2833_dtmf_key
pref_sipinfo_dtmf_key
+ pref_upnp_enable_key
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 26560350a..76189a5a6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -422,4 +422,10 @@
Incoming
Background mode
+
+ Auth userid*
+
+ Enter authentication userid (optionnal)
+
+ Enable UPNP
diff --git a/res/xml/account_preferences.xml b/res/xml/account_preferences.xml
index 2c23bfeb1..7fff9fedd 100644
--- a/res/xml/account_preferences.xml
+++ b/res/xml/account_preferences.xml
@@ -7,6 +7,9 @@
+ android:defaultValue="@bool/pref_ice_enabled_default"/>
0 && password != null) {
- LinphoneAuthInfo lAuthInfo = LinphoneCoreFactory.instance().createAuthInfo(username, password, null);
+ LinphoneAuthInfo lAuthInfo = LinphoneCoreFactory.instance().createAuthInfo(username
+ , userid
+ , password
+ , null
+ ,null);
mLc.addAuthInfo(lAuthInfo);
if (domain != null && domain.length() > 0) {
@@ -812,9 +818,16 @@ public final class LinphoneManager implements LinphoneCoreListener {
//stun server
String lStun = getPrefString(R.string.pref_stun_server_key, getString(R.string.default_stun));
boolean useICE = getPrefBoolean(R.string.pref_ice_enable_key, mR.getBoolean(R.bool.pref_ice_enabled_default));
+ boolean useUpnp = getPrefBoolean(R.string.pref_upnp_enable_key, mR.getBoolean(R.bool.pref_upnp_enabled_default));
+
mLc.setStunServer(lStun);
- if (lStun!=null && lStun.length()>0) {
- mLc.setFirewallPolicy(useICE ? FirewallPolicy.UseIce : FirewallPolicy.UseStun);
+ if (lStun!=null && lStun.length()>0 && useICE) {
+ mLc.setFirewallPolicy(FirewallPolicy.UseIce);
+ if (useUpnp) Log.e("Cannot have both ice and upnp enabled, disabling upnp");
+ } if (useUpnp) {
+ mLc.setFirewallPolicy(FirewallPolicy.UseUpnp);
+ } else if (lStun!=null && lStun.length()>0){
+ mLc.setFirewallPolicy(FirewallPolicy.UseStun);
} else {
mLc.setFirewallPolicy(FirewallPolicy.NoFirewall);
}
diff --git a/src/org/linphone/PreferencesFragment.java b/src/org/linphone/PreferencesFragment.java
index 95720c3ad..daf98c696 100644
--- a/src/org/linphone/PreferencesFragment.java
+++ b/src/org/linphone/PreferencesFragment.java
@@ -247,6 +247,30 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
}
});
+ final CheckBoxPreference useIce = (CheckBoxPreference) findPreference(R.string.pref_ice_enable_key);
+ final CheckBoxPreference useUpnp = (CheckBoxPreference) findPreference(R.string.pref_upnp_enable_key);
+
+ useIce.setEnabled(!useUpnp.isChecked());
+ LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
+ useUpnp.setEnabled(lc.upnpAvailable() && !useIce.isChecked());
+
+ useIce.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ boolean isChecked = (Boolean) newValue;
+ useUpnp.setEnabled(!isChecked);
+ return true;
+ }
+ });
+ useUpnp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ boolean isChecked = (Boolean) newValue;
+ useIce.setEnabled(!isChecked);
+ return true;
+ }
+ });
+
if (getResources().getBoolean(R.bool.disable_every_log)) {
uncheckDisableAndHideCheckbox(R.string.pref_debug_key);
}
diff --git a/submodules/belle-sip b/submodules/belle-sip
index 6b058ba83..3b347644c 160000
--- a/submodules/belle-sip
+++ b/submodules/belle-sip
@@ -1 +1 @@
-Subproject commit 6b058ba830644578da70c9bb85a41acdb06c03dd
+Subproject commit 3b347644ce220d97b08112a9fd835194c64000e5
diff --git a/submodules/linphone b/submodules/linphone
index 9d3f8f7d9..018fbdb7f 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit 9d3f8f7d94080f4dd293bca53b4bcf9afac88d78
+Subproject commit 018fbdb7f1dbb634eb99c01c6fa9cc663147dae8