res_pjsip_caller_id: Use static pj_str_t for fromto header names.

PJSIP assumes that these header names are not allocated, does not clone
the name strings when reusing headers.

Block unload of res_pjsip_caller_id until shutdown to ensure static
memory stays valid.  It was previously unsafe to unload while any
sessions are active.

Change-Id: I190854dea943d6e441cf03733f8a0da661aea27f
pull/12/head
Corey Farrell 7 years ago
parent fc82312aab
commit 02c7a061ea

@ -430,8 +430,7 @@ static pjsip_fromto_hdr *create_new_id_hdr(const pj_str_t *hdr_name, pjsip_fromt
id_hdr = pjsip_from_hdr_create(tdata->pool);
id_hdr->type = PJSIP_H_OTHER;
pj_strdup(tdata->pool, &id_hdr->name, hdr_name);
id_hdr->sname = id_hdr->name;
id_hdr->sname = id_hdr->name = *hdr_name;
id_name_addr = pjsip_uri_clone(tdata->pool, base->uri);
id_uri = pjsip_uri_get_uri(id_name_addr->uri);
@ -779,6 +778,7 @@ static struct ast_sip_session_supplement caller_id_supplement = {
static int load_module(void)
{
ast_module_shutdown_ref(AST_MODULE_SELF);
ast_sip_session_register_supplement(&caller_id_supplement);
return AST_MODULE_LOAD_SUCCESS;
}

Loading…
Cancel
Save