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:
|
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user