diff options
author | Jenkins2 <jenkins2@gerrit.asterisk.org> | 2017-12-13 13:57:44 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-12-13 13:57:44 -0600 |
commit | 53f1de6259ceb146af3f08223ad028479e7235a2 (patch) | |
tree | f80695ae6ec203c03463a085f8ce42beec9b55f1 /res | |
parent | 20ca06b1db9fc626216cd6540202601c465753b9 (diff) | |
parent | f20ab2b65fa391e2442ea2b03a0adfe772f22c6e (diff) |
Merge "pjsip_options: dynamic contact's fields not updated on reload" into 13
Diffstat (limited to 'res')
-rw-r--r-- | res/res_pjsip/pjsip_options.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c index d4ea911c9..da9534194 100644 --- a/res/res_pjsip/pjsip_options.c +++ b/res/res_pjsip/pjsip_options.c @@ -1157,7 +1157,24 @@ static int qualify_and_schedule_cb_with_aor(void *obj, void *arg, int flags) static int qualify_and_schedule_cb_without_aor(void *obj, void *arg, int flags) { - qualify_and_schedule_contact((struct ast_sip_contact *) obj); + /* + * These are really dynamic contacts. We need to retrieve the aor associated + * with the contact since it's possible some of the aor's fields were updated + * since last load. + */ + struct ast_sip_contact *contact = obj; + struct ast_sip_aor *aor = ast_sip_location_retrieve_aor(contact->aor); + + if (aor) { + qualify_and_schedule_cb_with_aor(obj, aor, flags); + ao2_ref(aor, -1); + } else { + ast_log(LOG_WARNING, "Unable to locate AOR for contact '%s'. Keeping old " + "associated settings: frequency=%d, timeout=%f, authenticate=%s\n", + contact->uri, contact->qualify_frequency, contact->qualify_timeout, + contact->authenticate_qualify ? "yes" : "no"); + qualify_and_schedule_contact(contact); + } return 0; } |