More registration and quit related improvements
This commit is contained in:
@ -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)
|
||||
{
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user