diff --git a/app/src/main/cpp/baresip.c b/app/src/main/cpp/baresip.c index 6f463049..4d0c061e 100644 --- a/app/src/main/cpp/baresip.c +++ b/app/src/main/cpp/baresip.c @@ -1095,6 +1095,23 @@ Java_com_tutpro_baresip_Api_account_1set_1dtmfmode(JNIEnv *env, jobject thiz, return account_set_dtmfmode(acc, mode); } +JNIEXPORT jint JNICALL +Java_com_tutpro_baresip_Api_account_1mediaaf(JNIEnv *env, jobject thiz, jstring jAcc) { + const char *native_acc = (*env)->GetStringUTFChars(env, jAcc, 0); + struct account *acc = (struct account *)strtoul(native_acc, NULL, 10); + (*env)->ReleaseStringUTFChars(env, jAcc, native_acc); + return account_mediaaf(acc); +} + +JNIEXPORT void JNICALL +Java_com_tutpro_baresip_Api_account_1set_1mediaaf(JNIEnv *env, jobject thiz, jstring jAcc, jint jAf) { + const char *native_acc = (*env)->GetStringUTFChars(env, jAcc, 0); + struct account *acc = (struct account *)strtoul(native_acc, NULL, 10); + (*env)->ReleaseStringUTFChars(env, jAcc, native_acc); + LOGD("setting account mediaaf to '%d'\n", jAf); + account_set_mediaaf(acc, jAf); +} + JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_Api_account_1extra(JNIEnv *env, jobject thiz, jstring javaAcc) { @@ -1285,15 +1302,6 @@ Java_com_tutpro_baresip_Api_ua_1answer(JNIEnv *env, jobject thiz, jstring javaUA (*env)->ReleaseStringUTFChars(env, javaCall, native_call); } -JNIEXPORT void JNICALL -Java_com_tutpro_baresip_Api_ua_1set_1media_1af(JNIEnv *env, jobject thiz, jstring javaUA, - jint javaAf) { - const char *native_ua = (*env)->GetStringUTFChars(env, javaUA, 0); - struct ua *ua = (struct ua *)strtoul(native_ua, NULL, 10); - LOGD("setting ua media af to '%d'\n", javaAf); - ua_set_media_af(ua, javaAf); -} - JNIEXPORT void JNICALL Java_com_tutpro_baresip_Api_ua_1debug(JNIEnv *env, jobject thiz, jstring javaUA) { const char *native_ua = (*env)->GetStringUTFChars(env, javaUA, 0); diff --git a/app/src/main/kotlin/com/tutpro/baresip/Account.kt b/app/src/main/kotlin/com/tutpro/baresip/Account.kt index c6473da3..e2bf54a5 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Account.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Account.kt @@ -57,6 +57,8 @@ class Account(val accp: String) { val extra = Api.account_extra(accp) preferIPv6Media = Utils.paramValue(extra,"prefer_ipv6_media") == "yes" + if (!preferIPv6Media) + preferIPv6Media = Api.account_mediaaf(accp) == Api.AF_INET6 callHistory = Utils.paramValue(extra,"call_history") == "" } @@ -108,6 +110,8 @@ class Account(val accp: String) { if (mediaEnc != "") res += ";mediaenc=${mediaEnc}" + if (preferIPv6Media) res += ";mediaaf=ipv6" + if (vmUri == "") res = "$res;mwi=no" else @@ -123,9 +127,6 @@ class Account(val accp: String) { if (!callHistory) extra += ";call_history=no" - if (preferIPv6Media) - extra += ";prefer_ipv6_media=yes" - if (extra != "") res += ";extra=\"" + extra.substringAfter(";") + "\"" diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt index 6822e6a5..b50aca74 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt @@ -455,9 +455,9 @@ class AccountActivity : AppCompatActivity() { acc.preferIPv6Media = ipV6MediaCheck.isChecked Log.d(TAG, "New preferIPv6Media is ${acc.preferIPv6Media}") if (acc.preferIPv6Media) - Api.ua_set_media_af(ua.uap, Api.AF_INET6) + Api.account_set_mediaaf(acc.accp, Api.AF_INET6) else - Api.ua_set_media_af(ua.uap, Api.AF_UNSPEC) + Api.account_set_mediaaf(acc.accp, Api.AF_UNSPEC) save = true } diff --git a/app/src/main/kotlin/com/tutpro/baresip/Api.kt b/app/src/main/kotlin/com/tutpro/baresip/Api.kt index a90f3ace..cc31edc0 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Api.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Api.kt @@ -44,6 +44,8 @@ object Api { external fun account_set_answermode(acc: String, mode: Int): Int external fun account_dtmfmode(acc: String): Int external fun account_set_dtmfmode(acc: String, mode: Int): Int + external fun account_mediaaf(acc: String): Int + external fun account_set_mediaaf(acc: String, af: Int) external fun account_extra(acc: String): String external fun account_debug(acc: String) @@ -61,7 +63,6 @@ object Api { external fun ua_hangup(uap: String, callp: String, code: Int, reason: String) external fun ua_call_alloc(uap: String, xcallp: String, video: Int): String external fun ua_answer(uap: String, callp: String, video: Int) - external fun ua_set_media_af(uap: String, af: Int) external fun ua_debug(uap: String) external fun call_peeruri(callp: String): String