diff --git a/configure.ac b/configure.ac
index 64bda0f27dd8d471813414dce51908191211ccd8..ff2f4c729ebe671fffa6935ea9a25d946ccefb5a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT([linphone],[3.4.99.3],[linphone-developers@nongnu.org])
+AC_INIT([linphone],[3.4.99.4],[linphone-developers@nongnu.org])
 AC_CANONICAL_SYSTEM
 AC_CONFIG_SRCDIR([coreapi/linphonecore.c])
 
diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c
index c4b5dbb6e91ea720f2a5234a7d3716b7495ff6be..3398bf82219122b7048bd31d7e4def234fd938d4 100644
--- a/coreapi/linphonecore.c
+++ b/coreapi/linphonecore.c
@@ -4316,7 +4316,9 @@ void linphone_core_stop_dtmf_stream(LinphoneCore* lc) {
 int linphone_core_get_max_calls(LinphoneCore *lc) {
 	return lc->max_calls;
 }
-
+void linphone_core_set_max_calls(LinphoneCore *lc, int max) {
+	lc->max_calls=max;
+}
 
 typedef struct Hook{
 	LinphoneCoreIterateHook fun;
diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h
index f4bb368c61240e1c40ed9ee7b10e1e69fa41ffe8..8b747659e2929203c6a284f4250772e2f72204ac 100644
--- a/coreapi/linphonecore.h
+++ b/coreapi/linphonecore.h
@@ -1037,6 +1037,8 @@ int linphone_core_terminate_conference(LinphoneCore *lc);
 int linphone_core_get_conference_size(LinphoneCore *lc);
 
 int linphone_core_get_max_calls(LinphoneCore *lc);
+void linphone_core_set_max_calls(LinphoneCore *lc, int max);
+
 bool_t linphone_core_sound_resources_locked(LinphoneCore *lc);
 
 bool_t linphone_core_media_encryption_supported(const LinphoneCore *lc, LinphoneMediaEncryption menc);
diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
index 4dab0d0a84ca2cf505cafc0b252b62306136ce23..1bd7d091287a4528d3b5b3701829fac4a4ddfe7b 100644
--- a/coreapi/linphonecore_jni.cc
+++ b/coreapi/linphonecore_jni.cc
@@ -1598,3 +1598,6 @@ extern "C" void Java_org_linphone_LinphoneManager_hackSpeakerState(JNIEnv*  env,
 extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getMaxCalls(JNIEnv *env,jobject thiz,jlong pCore) {
 	return (jint) linphone_core_get_max_calls((LinphoneCore *) pCore);
 }
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setMaxCalls(JNIEnv *env,jobject thiz,jlong pCore, jint max) {
+	linphone_core_set_max_calls((LinphoneCore *) pCore, (int) max);
+}
diff --git a/coreapi/lpconfig.c b/coreapi/lpconfig.c
index f4eca33fecf7a8f0cf2369596061eda742ce93ec..a0859a2997e3dd878c00e518c2be63fd877e8ba5 100644
--- a/coreapi/lpconfig.c
+++ b/coreapi/lpconfig.c
@@ -22,7 +22,7 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#define MAX_LEN 4096
+#define MAX_LEN 16384
 
 #include "linphonecore.h"
 
diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java
index 0bea6f60c4d1ffefcf2d611b90b29a466c31600c..944fa026d2f5f3956ab6c7fd7442733b550edfba 100644
--- a/java/common/org/linphone/core/LinphoneCore.java
+++ b/java/common/org/linphone/core/LinphoneCore.java
@@ -623,6 +623,7 @@ public interface LinphoneCore {
 	LinphoneCall findCallFromUri(String uri);
 
 	int getMaxCalls();
+	void setMaxCalls(int max);
 	boolean isMyself(String uri);
 
 	/**