]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_callerid: Clear out display name if id->name is not valid 57/2657/1
authorGeorge Joseph <george.joseph@fairview5.com>
Tue, 19 Apr 2016 22:52:15 +0000 (16:52 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Wed, 20 Apr 2016 13:31:18 +0000 (08:31 -0500)
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

res/res_pjsip_caller_id.c

index 57218d36d8e5b40482bf2214fc0b333ed70dd4a1..3f366bfbd72e7eb84ce93c675d3f207d59202ed9 100644 (file)
@@ -449,6 +449,12 @@ static pjsip_fromto_hdr *create_new_id_hdr(const pj_str_t *hdr_name, pjsip_tx_da
 
                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);