summaryrefslogtreecommitdiff
path: root/res/res_pjsip/location.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_pjsip/location.c')
-rw-r--r--res/res_pjsip/location.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/res/res_pjsip/location.c b/res/res_pjsip/location.c
index 37f39ba30..d87410d3b 100644
--- a/res/res_pjsip/location.c
+++ b/res/res_pjsip/location.c
@@ -53,6 +53,7 @@ static void contact_destroy(void *obj)
struct ast_sip_contact *contact = obj;
ast_string_field_free_memory(contact);
+ ao2_cleanup(contact->endpoint);
}
/*! \brief Allocator for contact */
@@ -228,7 +229,8 @@ struct ast_sip_contact *ast_sip_location_retrieve_contact(const char *contact_na
}
int ast_sip_location_add_contact(struct ast_sip_aor *aor, const char *uri,
- struct timeval expiration_time, const char *path_info, const char *user_agent)
+ struct timeval expiration_time, const char *path_info, const char *user_agent,
+ struct ast_sip_endpoint *endpoint)
{
char name[MAX_OBJECT_FIELD * 2 + 3];
RAII_VAR(struct ast_sip_contact *, contact, NULL, ao2_cleanup);
@@ -256,6 +258,8 @@ int ast_sip_location_add_contact(struct ast_sip_aor *aor, const char *uri,
ast_string_field_set(contact, user_agent, user_agent);
}
+ contact->endpoint = ao2_bump(endpoint);
+
return ast_sorcery_create(ast_sip_get_sorcery(), contact);
}