Module: kamailio Branch: master Commit: 5fabdea4d86c527a2e38caaae7a54884367d6a7c URL: https://github.com/kamailio/kamailio/commit/5fabdea4d86c527a2e38caaae7a54884367d6a7c
Author: Daniel-Constantin Mierla <mico...@gmail.com> Committer: Daniel-Constantin Mierla <mico...@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; } _______________________________________________ Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev