diff --git a/libs/armeabi-v7a/liblinphone.so b/libs/armeabi-v7a/liblinphone.so
index 4bf67026e..aa455a81b 100755
Binary files a/libs/armeabi-v7a/liblinphone.so and b/libs/armeabi-v7a/liblinphone.so differ
diff --git a/libs/armeabi/liblinphone.so b/libs/armeabi/liblinphone.so
index 6609be864..6406125bf 100755
Binary files a/libs/armeabi/liblinphone.so and b/libs/armeabi/liblinphone.so differ
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e0680a7da..5f2cedd30 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -68,4 +68,6 @@
fails to register to %s
started
Removes the echo heared by the other end.
+Stun server
+pref_stun_server_key
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index f5210a697..4bd4c821c 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -12,6 +12,7 @@
+
diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java
index e9317dbc2..ca0ce7283 100644
--- a/src/org/linphone/LinphoneService.java
+++ b/src/org/linphone/LinphoneService.java
@@ -38,6 +38,7 @@ import org.linphone.core.LinphoneFriend;
import org.linphone.core.LinphoneProxyConfig;
import org.linphone.core.PayloadType;
import org.linphone.core.LinphoneCall.State;
+import org.linphone.core.LinphoneCore.FirewallPolicy;
import org.linphone.core.LinphoneCore.GlobalState;
@@ -333,7 +334,12 @@ public class LinphoneService extends Service implements LinphoneCoreListener {
throw new LinphoneConfigException(getString(R.string.wrong_domain));
}
+ String lStun = mPref.getString(getString(R.string.pref_stun_server_key), null);
+ //stun server
+ mLinphoneCore.setStunServer(lStun);
+ mLinphoneCore.setFirewallPolicy(lStun!=null ? FirewallPolicy.UseStun : FirewallPolicy.NoFirewall);
+
//auth
mLinphoneCore.clearAuthInfos();
LinphoneAuthInfo lAuthInfo = LinphoneCoreFactory.instance().createAuthInfo(lUserName, lPasswd,null);
diff --git a/src/org/linphone/core/LinphoneCoreImpl.java b/src/org/linphone/core/LinphoneCoreImpl.java
index 99be0fb2b..1f389a608 100644
--- a/src/org/linphone/core/LinphoneCoreImpl.java
+++ b/src/org/linphone/core/LinphoneCoreImpl.java
@@ -69,12 +69,16 @@ class LinphoneCoreImpl implements LinphoneCore {
private native void setPreviewWindowId(long nativePtr, Object wid);
private AndroidVideoWindowImpl mVideoWindow;
private AndroidVideoWindowImpl mPreviewWindow;
-
private native void addFriend(long nativePtr,long friend);
private native void setPresenceInfo(long nativePtr,int minute_away, String alternative_contact,int status);
private native long createChatRoom(long nativePtr,String to);
private native void enableVideo(long nativePtr,boolean vcap_enabled,boolean display_enabled);
private native boolean isVideoEnabled(long nativePtr);
+ private native void setFirewallPolicy(long nativePtr, int enum_value);
+ private native int getFirewallPolicy(long nativePtr);
+ private native void setStunServer(long nativePtr, String stun_server);
+ private native String getStunServer(long nativePtr);
+
private static String TAG = "LinphoneCore";
LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) throws IOException {
@@ -335,4 +339,16 @@ class LinphoneCoreImpl implements LinphoneCore {
public boolean isVideoEnabled() {
return isVideoEnabled(nativePtr);
}
+ public FirewallPolicy getFirewallPolicy() {
+ return FirewallPolicy.fromInt(getFirewallPolicy(nativePtr));
+ }
+ public String getStunServer() {
+ return getStunServer(nativePtr);
+ }
+ public void setFirewallPolicy(FirewallPolicy pol) {
+ setFirewallPolicy(nativePtr,pol.value());
+ }
+ public void setStunServer(String stunServer) {
+ setStunServer(nativePtr,stunServer);
+ }
}
diff --git a/submodules/linphone b/submodules/linphone
index 632c76515..801508597 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit 632c76515682a20e4c62542febcb23f637479efe
+Subproject commit 801508597b36e02e6d726851332a202529dc9025