More registration and quit related improvements

This commit is contained in:
Juha Heinanen
2022-06-19 18:42:42 +03:00
parent efbe5331e3
commit d8943fae05
5 changed files with 31 additions and 14 deletions

View File

@ -177,6 +177,7 @@ static void ua_event_handler(struct ua *ua, enum ua_event ev,
case UA_EVENT_CREATE:
len = re_snprintf(event_buf, sizeof event_buf, "create");
break;
case UA_EVENT_REGISTERING:
case UA_EVENT_UNREGISTERING:
case UA_EVENT_REGISTER_OK:
case UA_EVENT_FALLBACK_OK:
@ -584,7 +585,9 @@ JNIEXPORT void JNICALL
Java_com_tutpro_baresip_BaresipService_baresipStop(JNIEnv *env, jobject thiz, jboolean force)
{
LOGD("ua_stop_all upon baresipStop");
re_thread_enter();
mqueue_push(mq, ID_UA_STOP_ALL, (void *)((long)force));
re_thread_leave();
}
JNIEXPORT jstring JNICALL
@ -1054,6 +1057,13 @@ Java_com_tutpro_baresip_Api_ua_1account(JNIEnv *env, jobject thiz, jlong ua)
return (jlong)acc;
}
JNIEXPORT jint JNICALL
Java_com_tutpro_baresip_Api_ua_1update_1account(JNIEnv *env, jobject thiz, jlong ua)
{
LOGD("updating account of ua %ld\n", (long)ua);
return ua_update_account((struct ua *)ua);
}
JNIEXPORT void JNICALL
Java_com_tutpro_baresip_Api_ua_1hangup(JNIEnv *env, jobject thiz, jlong ua, jlong call, jint code, jstring reason)
{

View File

@ -642,10 +642,12 @@ class AccountActivity : AppCompatActivity() {
if (save) {
AccountsActivity.saveAccounts()
if (newRegint == 0)
Api.ua_unregister(ua.uap)
else if (acc.regint != 0)
Api.ua_register(ua.uap)
if (newRegint != -1) {
if (newRegint == 0)
Api.ua_unregister(ua.uap)
else
Api.ua_register(ua.uap)
}
}
BaresipService.activities.remove("account,$aor")

View File

@ -48,6 +48,7 @@ object Api {
external fun uag_enable_sip_trace(enable: Boolean)
external fun ua_account(uap: Long): Long
external fun ua_update_account(uap: Long): Long
external fun ua_alloc(uri: String): Long
external fun ua_destroy(uap: Long)
external fun ua_register(uap: Long): Int

View File

@ -275,14 +275,14 @@ class MainActivity : AppCompatActivity() {
}
}
aorSpinner.setOnLongClickListener() { view ->
aorSpinner.setOnLongClickListener {
if (aorSpinner.selectedItemPosition != -1) {
val ua = UserAgent.ofAor(aorSpinner.tag.toString())
if (ua != null) {
val acc = ua.account
if (Api.ua_isregistered(ua.uap)) {
Api.account_set_regint(acc.accp, 0)
Api.ua_unregister(ua.uap)
Api.account_set_regint(acc.accp, 0)
} else {
Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL)
Api.ua_register(ua.uap)

View File

@ -24,17 +24,21 @@ class TaskReceiver : BroadcastReceiver() {
when (intent.action) {
"com.tutpro.baresip.REGISTER" -> {
Log.d(TAG, "TaskReceiver: registering $aor")
Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL)
Api.ua_register(ua.uap)
acc.regint = Api.account_regint(acc.accp)
AccountsActivity.saveAccounts()
if (!Api.ua_isregistered(ua.uap)) {
Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL)
Api.ua_register(ua.uap)
acc.regint = Api.account_regint(acc.accp)
AccountsActivity.saveAccounts()
}
}
"com.tutpro.baresip.UNREGISTER" -> {
Log.d(TAG, "TaskReceiver: un-registering $aor")
Api.account_set_regint(acc.accp,0)
Api.ua_unregister(ua.uap)
acc.regint = Api.account_regint(acc.accp)
AccountsActivity.saveAccounts()
if (Api.ua_isregistered(ua.uap)) {
Api.account_set_regint(acc.accp, 0)
Api.ua_unregister(ua.uap)
acc.regint = Api.account_regint(acc.accp)
AccountsActivity.saveAccounts()
}
}
else -> return
}