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
+10
View File
@@ -177,6 +177,7 @@ static void ua_event_handler(struct ua *ua, enum ua_event ev,
case UA_EVENT_CREATE: case UA_EVENT_CREATE:
len = re_snprintf(event_buf, sizeof event_buf, "create"); len = re_snprintf(event_buf, sizeof event_buf, "create");
break; break;
case UA_EVENT_REGISTERING:
case UA_EVENT_UNREGISTERING: case UA_EVENT_UNREGISTERING:
case UA_EVENT_REGISTER_OK: case UA_EVENT_REGISTER_OK:
case UA_EVENT_FALLBACK_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) Java_com_tutpro_baresip_BaresipService_baresipStop(JNIEnv *env, jobject thiz, jboolean force)
{ {
LOGD("ua_stop_all upon baresipStop"); LOGD("ua_stop_all upon baresipStop");
re_thread_enter();
mqueue_push(mq, ID_UA_STOP_ALL, (void *)((long)force)); mqueue_push(mq, ID_UA_STOP_ALL, (void *)((long)force));
re_thread_leave();
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
@@ -1054,6 +1057,13 @@ Java_com_tutpro_baresip_Api_ua_1account(JNIEnv *env, jobject thiz, jlong ua)
return (jlong)acc; 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 JNIEXPORT void JNICALL
Java_com_tutpro_baresip_Api_ua_1hangup(JNIEnv *env, jobject thiz, jlong ua, jlong call, jint code, jstring reason) Java_com_tutpro_baresip_Api_ua_1hangup(JNIEnv *env, jobject thiz, jlong ua, jlong call, jint code, jstring reason)
{ {
@@ -642,11 +642,13 @@ class AccountActivity : AppCompatActivity() {
if (save) { if (save) {
AccountsActivity.saveAccounts() AccountsActivity.saveAccounts()
if (newRegint != -1) {
if (newRegint == 0) if (newRegint == 0)
Api.ua_unregister(ua.uap) Api.ua_unregister(ua.uap)
else if (acc.regint != 0) else
Api.ua_register(ua.uap) Api.ua_register(ua.uap)
} }
}
BaresipService.activities.remove("account,$aor") BaresipService.activities.remove("account,$aor")
returnResult(Activity.RESULT_OK) returnResult(Activity.RESULT_OK)
@@ -48,6 +48,7 @@ object Api {
external fun uag_enable_sip_trace(enable: Boolean) external fun uag_enable_sip_trace(enable: Boolean)
external fun ua_account(uap: Long): Long 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_alloc(uri: String): Long
external fun ua_destroy(uap: Long) external fun ua_destroy(uap: Long)
external fun ua_register(uap: Long): Int external fun ua_register(uap: Long): Int
@@ -275,14 +275,14 @@ class MainActivity : AppCompatActivity() {
} }
} }
aorSpinner.setOnLongClickListener() { view -> aorSpinner.setOnLongClickListener {
if (aorSpinner.selectedItemPosition != -1) { if (aorSpinner.selectedItemPosition != -1) {
val ua = UserAgent.ofAor(aorSpinner.tag.toString()) val ua = UserAgent.ofAor(aorSpinner.tag.toString())
if (ua != null) { if (ua != null) {
val acc = ua.account val acc = ua.account
if (Api.ua_isregistered(ua.uap)) { if (Api.ua_isregistered(ua.uap)) {
Api.account_set_regint(acc.accp, 0)
Api.ua_unregister(ua.uap) Api.ua_unregister(ua.uap)
Api.account_set_regint(acc.accp, 0)
} else { } else {
Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL) Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL)
Api.ua_register(ua.uap) Api.ua_register(ua.uap)
@@ -24,18 +24,22 @@ class TaskReceiver : BroadcastReceiver() {
when (intent.action) { when (intent.action) {
"com.tutpro.baresip.REGISTER" -> { "com.tutpro.baresip.REGISTER" -> {
Log.d(TAG, "TaskReceiver: registering $aor") Log.d(TAG, "TaskReceiver: registering $aor")
if (!Api.ua_isregistered(ua.uap)) {
Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL) Api.account_set_regint(acc.accp, REGISTRATION_INTERVAL)
Api.ua_register(ua.uap) Api.ua_register(ua.uap)
acc.regint = Api.account_regint(acc.accp) acc.regint = Api.account_regint(acc.accp)
AccountsActivity.saveAccounts() AccountsActivity.saveAccounts()
} }
}
"com.tutpro.baresip.UNREGISTER" -> { "com.tutpro.baresip.UNREGISTER" -> {
Log.d(TAG, "TaskReceiver: un-registering $aor") Log.d(TAG, "TaskReceiver: un-registering $aor")
if (Api.ua_isregistered(ua.uap)) {
Api.account_set_regint(acc.accp, 0) Api.account_set_regint(acc.accp, 0)
Api.ua_unregister(ua.uap) Api.ua_unregister(ua.uap)
acc.regint = Api.account_regint(acc.accp) acc.regint = Api.account_regint(acc.accp)
AccountsActivity.saveAccounts() AccountsActivity.saveAccounts()
} }
}
else -> return else -> return
} }
} }