From 69d58a1e377938e5236f51200e222eb219739441 Mon Sep 17 00:00:00 2001 From: Scott Griepentrog Date: Tue, 21 Jun 2016 10:53:05 -0500 Subject: [PATCH] PJSIP: provide transport type with received messages The receipt of a SIP MESSAGE may occur over any transport including TCP and TLS. When the message is received, the original URI is added to the message in the field PJSIP_RECVADDR, but this is insufficient to ensure a reply message can reach the originating endpoint. This patch adds the PJSIP_TRANSPORT field populated with the transport type. ASTERISK-26132 #close Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e --- res/res_pjsip_messaging.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/res/res_pjsip_messaging.c b/res/res_pjsip_messaging.c index 5962232936..594c0fdac3 100644 --- a/res/res_pjsip_messaging.c +++ b/res/res_pjsip_messaging.c @@ -476,6 +476,24 @@ static enum pjsip_status_code rx_data_to_ast_msg(pjsip_rx_data *rdata, struct as field = pj_sockaddr_print(&rdata->pkt_info.src_addr, buf, sizeof(buf) - 1, 1); res |= ast_msg_set_var(msg, "PJSIP_RECVADDR", field); + switch (rdata->tp_info.transport->key.type) { + case PJSIP_TRANSPORT_UDP: + case PJSIP_TRANSPORT_UDP6: + field = "udp"; + break; + case PJSIP_TRANSPORT_TCP: + case PJSIP_TRANSPORT_TCP6: + field = "tcp"; + break; + case PJSIP_TRANSPORT_TLS: + case PJSIP_TRANSPORT_TLS6: + field = "tls"; + break; + default: + field = rdata->tp_info.transport->type_name; + } + ast_msg_set_var(msg, "PJSIP_TRANSPORT", field); + if (print_body(rdata, buf, sizeof(buf) - 1) > 0) { res |= ast_msg_set_body(msg, "%s", buf); } -- 2.47.2