res_pjsip_callerid: Clear out display name if id->name is not valid

When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning
the From header, then it overwrites the display name and uri from the channel's
connected.id.  If the connected.id.name wasn't valid, create_new_id_hdr was
leaving the display name from the From header in the new RPID or PAI header.
On an attended transfer where the originator had a caller id number set but not
a display name, the re-INVITE to the final transferee had the number of the
originator but the display name of the transferer.

Added a check to clear out the display name in the new header if
connected.id.name was invalid.

ASTERISK-25942 #close

Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b
changes/53/2653/1
George Joseph 9 years ago committed by George Joseph
parent c60f8e947f
commit 70e860ec49

@ -424,6 +424,12 @@ static pjsip_fromto_hdr *create_new_id_hdr(const pj_str_t *hdr_name, pjsip_fromt
ast_escape_quoted(id->name.str, name_buf, name_buf_len); ast_escape_quoted(id->name.str, name_buf, name_buf_len);
pj_strdup2(tdata->pool, &id_name_addr->display, name_buf); pj_strdup2(tdata->pool, &id_name_addr->display, name_buf);
} else {
/*
* We need to clear the remnants of the clone or it'll be left set.
* pj_strdup2 is safe to call with a NULL src and it resets both slen and ptr.
*/
pj_strdup2(tdata->pool, &id_name_addr->display, NULL);
} }
pj_strdup2(tdata->pool, &id_uri->user, id->number.str); pj_strdup2(tdata->pool, &id_uri->user, id->number.str);

Loading…
Cancel
Save