summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2014-10-01 12:15:56 +0000
committerKinsey Moore <kmoore@digium.com>2014-10-01 12:15:56 +0000
commit122cc050d0f8473e5f662aee35555f1aef062566 (patch)
treef7f80daeab8e71ab6fd8477d2c2f5ad0b2d4523c /res
parentc3a75244573f3353d1e7c8624e85326fb2d0cbfe (diff)
PJSIP: Force transport on contact rewrite
If contact rewriting is enabled but the contact differs in transport from what is actually being used, messages after the initial INVITE transaction can be sent to an incorrect transport/port combination. In the case where this bug occurred the remote party never received a BYE since it was sent to the remote party's TCP port over UDP. Review: https://reviewboard.asterisk.org/r/4032/ ........ Merged revisions 424244 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged revisions 424245 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424246 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res')
-rw-r--r--res/res_pjsip_nat.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/res/res_pjsip_nat.c b/res/res_pjsip_nat.c
index 38d0ddd3c..4ba56ab4c 100644
--- a/res/res_pjsip_nat.c
+++ b/res/res_pjsip_nat.c
@@ -46,6 +46,11 @@ static pj_bool_t handle_rx_message(struct ast_sip_endpoint *endpoint, pjsip_rx_d
pjsip_dialog *dlg = pjsip_rdata_get_dlg(rdata);
pj_cstr(&uri->host, rdata->pkt_info.src_name);
+ if (strcasecmp("udp", rdata->tp_info.transport->type_name)) {
+ uri->transport_param = pj_str(rdata->tp_info.transport->type_name);
+ } else {
+ uri->transport_param.slen = 0;
+ }
uri->port = rdata->pkt_info.src_port;
/* rewrite the session target since it may have already been pulled from the contact header */