diff options
author | George Joseph <george.joseph@fairview5.com> | 2016-04-19 16:52:15 -0600 |
---|---|---|
committer | George Joseph <george.joseph@fairview5.com> | 2016-04-19 17:06:15 -0600 |
commit | 516c626a7d59bba52ae5e556d90dd6b6aa068a86 (patch) | |
tree | 857d7a9d0966434e6f4e80c93b6d84ed5af72d70 | |
parent | 9a22ef81afe8f7b7369b0910dbc26ee6542440c2 (diff) |
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
-rw-r--r-- | res/res_pjsip_caller_id.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/res/res_pjsip_caller_id.c b/res/res_pjsip_caller_id.c index 9af2a8a64..efa1b89a8 100644 --- a/res/res_pjsip_caller_id.c +++ b/res/res_pjsip_caller_id.c @@ -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); 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); |