Merge "pjsip_options.c: Allow immediate qualifies for new contacts." into 16

16.4
Joshua Colp 6 years ago committed by Gerrit Code Review
commit cf2f8db1b7

@ -2100,30 +2100,31 @@ static int sip_options_contact_add_task(void *obj)
ao2_cleanup(contact_status);
if (task_data->aor_options->qualify_frequency) {
/* If this is the first contact we need to schedule up qualification */
if (ao2_container_count(task_data->aor_options->contacts) == 1) {
ast_debug(3, "Starting scheduled callback on AOR '%s' for qualifying as there is now a contact on it\n",
/* There will always be a contact here, and we need to immediately schedule
* a qualify so that contacts are not waiting for the qualify_frequency
* timer duration before qualifying.
*/
ast_debug(3, "Starting scheduled callback on AOR '%s' for qualifying as there is now a contact on it\n",
task_data->aor_options->name);
/*
* We immediately schedule the initial qualify so that we get
* reachable/unreachable as soon as possible. Realistically
* since they pretty much just registered they should be
* reachable.
*/
if (task_data->aor_options->sched_task) {
ast_sip_sched_task_cancel(task_data->aor_options->sched_task);
ao2_ref(task_data->aor_options->sched_task, -1);
task_data->aor_options->sched_task = NULL;
}
task_data->aor_options->sched_task = ast_sip_schedule_task(
task_data->aor_options->serializer, 1, sip_options_qualify_aor,
ast_taskprocessor_name(task_data->aor_options->serializer),
task_data->aor_options,
AST_SIP_SCHED_TASK_VARIABLE | AST_SIP_SCHED_TASK_DATA_AO2);
if (!task_data->aor_options->sched_task) {
ast_log(LOG_ERROR, "Unable to schedule qualify for contacts of AOR '%s'\n",
task_data->aor_options->name);
/*
* We immediately schedule the initial qualify so that we get
* reachable/unreachable as soon as possible. Realistically
* since they pretty much just registered they should be
* reachable.
*/
if (task_data->aor_options->sched_task) {
ast_sip_sched_task_cancel(task_data->aor_options->sched_task);
ao2_ref(task_data->aor_options->sched_task, -1);
task_data->aor_options->sched_task = NULL;
}
task_data->aor_options->sched_task = ast_sip_schedule_task(
task_data->aor_options->serializer, 1, sip_options_qualify_aor,
ast_taskprocessor_name(task_data->aor_options->serializer),
task_data->aor_options,
AST_SIP_SCHED_TASK_VARIABLE | AST_SIP_SCHED_TASK_DATA_AO2);
if (!task_data->aor_options->sched_task) {
ast_log(LOG_ERROR, "Unable to schedule qualify for contacts of AOR '%s'\n",
task_data->aor_options->name);
}
}
} else {
/*

Loading…
Cancel
Save