diff --git a/res/res_pjsip/pjsip_global_headers.c b/res/res_pjsip/pjsip_global_headers.c
index 735008dcc8bf4d8adbbe14a2dc224f250650007a..501f5f5237dbcce4ec96abdc1610772afa730f2f 100644
--- a/res/res_pjsip/pjsip_global_headers.c
+++ b/res/res_pjsip/pjsip_global_headers.c
@@ -87,6 +87,14 @@ static void add_headers_to_message(struct header_list *headers, pjsip_tx_data *t
 		return;
 	}
 	AST_LIST_TRAVERSE(headers, iter, next) {
+		pj_str_t name;
+		pjsip_generic_string_hdr *hdr;
+
+		hdr = pjsip_msg_find_hdr_by_name(tdata->msg, pj_cstr(&name, iter->name), NULL);
+		if (hdr) {
+			continue;
+		}
+
 		ast_sip_add_header(tdata, iter->name, iter->value);
 	};
 	tdata->mod_data[global_header_mod.id] = &handled_id;