diff --git a/res/res_pjsip_caller_id.c b/res/res_pjsip_caller_id.c
index bc5ad8cd80c57bca5dc8e4971535a70bcae6acff..43bf1783f711c2e52f623b59bfb08685228ada62 100644
--- a/res/res_pjsip_caller_id.c
+++ b/res/res_pjsip_caller_id.c
@@ -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;
 }