diff --git a/src/android/org/linphone/AccountPreferencesFragment.java b/src/android/org/linphone/AccountPreferencesFragment.java index d30f5e8a5..6cc70d078 100644 --- a/src/android/org/linphone/AccountPreferencesFragment.java +++ b/src/android/org/linphone/AccountPreferencesFragment.java @@ -301,13 +301,8 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen boolean value = (Boolean) newValue; if (isNewAccount) { } else { - if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null - && LinphoneManager.getLc().getProxyConfigList() != null - && LinphoneManager.getLc().getProxyConfigList().length > n - && LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null) - LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().enableIce(value); - else - return false; + mPrefs.setAccountIce(n, value); + ((CheckBoxPreference)preference).setChecked(mPrefs.getAccountIce(n)); } return true; } @@ -319,15 +314,8 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen String value = newValue.toString(); if (isNewAccount) { } else { - if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null - && LinphoneManager.getLc().getProxyConfigList() != null - && LinphoneManager.getLc().getProxyConfigList().length > n - && LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy() != null) { - LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy().setStunServer(value); - preference.setSummary(value); - } - else - return false; + mPrefs.setAccountStunServer(n, value); + preference.setSummary(value); } return true; } @@ -339,7 +327,14 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null && LinphoneManager.getLc().getProxyConfigList() != null && LinphoneManager.getLc().getProxyConfigList().length > n) { - natPolicy = LinphoneManager.getLc().getProxyConfigList()[n].getNatPolicy(); + LinphoneProxyConfig proxy = LinphoneManager.getLc().getProxyConfigList()[n]; + natPolicy = proxy.getNatPolicy(); + if (natPolicy == null) { + natPolicy = LinphoneManager.getLc().createNatPolicy(); + proxy.edit(); + proxy.setNatPolicy(natPolicy); + proxy.done(); + } } accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc() diff --git a/src/android/org/linphone/LinphoneActivity.java b/src/android/org/linphone/LinphoneActivity.java index ccaaa48ec..e3780f8fb 100644 --- a/src/android/org/linphone/LinphoneActivity.java +++ b/src/android/org/linphone/LinphoneActivity.java @@ -216,9 +216,9 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick @Override public void registrationState(LinphoneCore lc, LinphoneProxyConfig proxy, LinphoneCore.RegistrationState state, String smessage) { + LinphoneAuthInfo authInfo = lc.findAuthInfo(proxy.getIdentity(), proxy.getRealm(), proxy.getDomain()); if (state.equals(RegistrationState.RegistrationCleared)) { if (lc != null) { - LinphoneAuthInfo authInfo = lc.findAuthInfo(proxy.getIdentity(), proxy.getRealm(), proxy.getDomain()); if (authInfo != null) lc.removeAuthInfo(authInfo); } @@ -227,7 +227,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick refreshAccounts(); if(getResources().getBoolean(R.bool.use_phone_number_validation) - && proxy.getDomain().equals(getString(R.string.default_domain))) { + && authInfo != null && authInfo.getDomain().equals(getString(R.string.default_domain))) { if (state.equals(RegistrationState.RegistrationOk)) { LinphoneManager.getInstance().isAccountWithAlias(); } diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java index 2f9a1dc13..5579de2e1 100644 --- a/src/android/org/linphone/LinphonePreferences.java +++ b/src/android/org/linphone/LinphonePreferences.java @@ -569,6 +569,38 @@ public class LinphonePreferences { return authInfo == null ? null : authInfo.getHa1(); } + public void setAccountIce(int n, boolean ice) { + try { + LinphoneProxyConfig prxCfg = getProxyConfig(n); + prxCfg.edit(); + prxCfg.getNatPolicy().enableIce(ice); + prxCfg.done(); + } catch (Exception e) { + Log.e(e); + } + } + + public boolean getAccountIce(int n) { + if (getProxyConfig(n) == null || getProxyConfig(n).getNatPolicy() == null) return false; + return getProxyConfig(n).getNatPolicy().iceEnabled(); + } + + public void setAccountStunServer(int n, String stun) { + try { + LinphoneProxyConfig prxCfg = getProxyConfig(n); + prxCfg.edit(); + prxCfg.getNatPolicy().setStunServer(stun); + prxCfg.done(); + } catch (Exception e) { + Log.e(e); + } + } + + public String getAccountStunServer(int n) { + if (getProxyConfig(n) == null || getProxyConfig(n).getNatPolicy() == null) return ""; + return getProxyConfig(n).getNatPolicy().getStunServer(); + } + public void setAccountDomain(int n, String domain) { String identity = "sip:" + getAccountUsername(n) + "@" + domain; LinphoneAuthInfo old_info = getAuthInfo(n); diff --git a/submodules/bctoolbox b/submodules/bctoolbox index e534a2e9b..e401c0a91 160000 --- a/submodules/bctoolbox +++ b/submodules/bctoolbox @@ -1 +1 @@ -Subproject commit e534a2e9b1f2bc7009a2816c8845aa7c07812d73 +Subproject commit e401c0a91f81ff2a22b713151617ba4e7994c855 diff --git a/submodules/belle-sip b/submodules/belle-sip index 8abfd2f68..5ea997060 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 8abfd2f68e93f69dd48a8840a654204ffe996f30 +Subproject commit 5ea997060204d7eb680d94c8f258ca5bfdce1d65 diff --git a/submodules/linphone b/submodules/linphone index e9980c6ca..c03dd6f38 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit e9980c6ca74e0619215fa78f83543cb6f209f4d5 +Subproject commit c03dd6f3898076e8d5721be7665dc7f0c0ada2f9 diff --git a/submodules/mediastreamer2 b/submodules/mediastreamer2 index 52025ffef..d658d2128 160000 --- a/submodules/mediastreamer2 +++ b/submodules/mediastreamer2 @@ -1 +1 @@ -Subproject commit 52025ffef5f9637426f8ed1e9f83e183e87f8be3 +Subproject commit d658d212815b094e27f8d3513043c00c6e262999 diff --git a/submodules/oRTP b/submodules/oRTP index 4b0eb84c8..bd792338c 160000 --- a/submodules/oRTP +++ b/submodules/oRTP @@ -1 +1 @@ -Subproject commit 4b0eb84c8e738a606cfd5da35d2a673853b4b13a +Subproject commit bd792338c47c3849cce3661d4e693df0177873c0