The loop to find the first available contact of an endpoint grabbed
contact from the iterator, then checked for offline state. This
caused the first contact after the state was found to leak a reference.
ASTERISK-25141
Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08
contacts = ast_sip_location_retrieve_contacts_from_aor_list(persistent->aors);
if (contacts) {
i = ao2_iterator_init(contacts, 0);
- while ((contact = ao2_iterator_next(&i))
- && state == AST_ENDPOINT_OFFLINE) {
+ while (state == AST_ENDPOINT_OFFLINE && (contact = ao2_iterator_next(&i))) {
struct ast_sip_contact_status *contact_status;
const char *contact_id = ast_sorcery_object_get_id(contact);