]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
PJSIP: provide transport type with received messages 59/3059/1
authorScott Griepentrog <scott@griepentrog.com>
Tue, 21 Jun 2016 15:53:05 +0000 (10:53 -0500)
committerScott Griepentrog <sgriepentrog@digium.com>
Tue, 21 Jun 2016 15:56:12 +0000 (10:56 -0500)
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

index 5962232936f3b5f4e5c7e7b9ff94f0697259a015..594c0fdac38c9bb70e76e82138d77115525ad21f 100644 (file)
@@ -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);
        }