[sr-dev] git:master:5fabdea4: tm: default port checking in via_matching()

Daniel-Constantin Mierla miconda at gmail.com
Thu Nov 23 09:51:31 CET 2017


Module: kamailio
Branch: master
Commit: 5fabdea4d86c527a2e38caaae7a54884367d6a7c
URL: https://github.com/kamailio/kamailio/commit/5fabdea4d86c527a2e38caaae7a54884367d6a7c

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2017-11-23T09:51:10+01:00

tm: default port checking in via_matching()

---

Modified: src/modules/tm/t_lookup.c

---

Diff:  https://github.com/kamailio/kamailio/commit/5fabdea4d86c527a2e38caaae7a54884367d6a7c.diff
Patch: https://github.com/kamailio/kamailio/commit/5fabdea4d86c527a2e38caaae7a54884367d6a7c.patch

---

diff --git a/src/modules/tm/t_lookup.c b/src/modules/tm/t_lookup.c
index 1fff011dee..98a7bf97b9 100644
--- a/src/modules/tm/t_lookup.c
+++ b/src/modules/tm/t_lookup.c
@@ -259,17 +259,35 @@ static inline int via_matching( struct via_body *inv_via,
 	 * different senders generating the same tid
 	 */
 	if (inv_via->host.len!=ack_via->host.len)
-		return 0;;
+		return 0;
 	if (memcmp(inv_via->host.s, ack_via->host.s,
 				ack_via->host.len)!=0)
 		return 0;
-	if (inv_via->port!=ack_via->port)
-		return 0;
+	if (inv_via->port!=ack_via->port) {
+		if(!(inv_via->port==0
+				&& (ack_via->port==SIP_PORT || ack_via->port==SIPS_PORT)))
+			return 0;
+		if(!(ack_via->port==0
+				&& (inv_via->port==SIP_PORT || inv_via->port==SIPS_PORT)))
+			return 0;
+	}
 	if (inv_via->transport.len!=ack_via->transport.len)
 		return 0;
 	if (memcmp(inv_via->transport.s, ack_via->transport.s,
 				ack_via->transport.len)!=0)
 		return 0;
+
+	if (inv_via->port!=ack_via->port
+			&& (inv_via->port==0 || ack_via->port==0)) {
+		/* test SIPS_PORT (5061) is used with TLS transport*/
+		if(inv_via->port==SIPS_PORT || ack_via->port==SIPS_PORT) {
+			if(ack_via->transport.len!=3
+					|| memcmp(inv_via->transport.s, "TLS", 3)!=0) {
+				return 0;
+			}
+		}
+	}
+
 	/* everything matched -- we found it */
 	return 1;
 }




More information about the sr-dev mailing list