summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
authorMatt Jordan <mjordan@digium.com>2015-04-17 15:58:13 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2015-04-17 15:58:13 -0500
commit8435a0cdff848f77ff55e709a393ea96635e5b19 (patch)
tree5d785a134dd42fe013f924a30ffc1be6189840d9 /res
parentbb347fa594e195c79cbda45cb55fde3e72f90f9c (diff)
parentaae45acbda1f6100cd9de816855166a32b991ce0 (diff)
Merge "Detect potential forwarding loops based on count."
Diffstat (limited to 'res')
-rw-r--r--res/res_pjsip_diversion.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/res/res_pjsip_diversion.c b/res/res_pjsip_diversion.c
index a4ac157e4..49f789212 100644
--- a/res/res_pjsip_diversion.c
+++ b/res/res_pjsip_diversion.c
@@ -248,6 +248,7 @@ static void add_diversion_header(pjsip_tx_data *tdata, struct ast_party_redirect
pjsip_name_addr *name_addr;
pjsip_sip_uri *uri;
pjsip_param *param;
+ pjsip_fromto_hdr *old_hdr;
struct ast_party_id *id = &data->from;
pjsip_uri *base = PJSIP_MSG_FROM_HDR(tdata->msg)->uri;
@@ -273,6 +274,10 @@ static void add_diversion_header(pjsip_tx_data *tdata, struct ast_party_redirect
pj_list_insert_before(&hdr->other_param, param);
hdr->uri = (pjsip_uri *) name_addr;
+ old_hdr = pjsip_msg_find_hdr_by_name(tdata->msg, &diversion_name, NULL);
+ if (old_hdr) {
+ pj_list_erase(old_hdr);
+ }
pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr *)hdr);
}