Module: kamailio
Branch: master
Commit: 28cd81c9ad7a64ee8953ba9438756b88740b7820
URL: 
https://github.com/kamailio/kamailio/commit/28cd81c9ad7a64ee8953ba9438756b88740b7820

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2025-06-12T08:15:34+02:00

dispatcher: rework MIXSOCKPRPORT (16) matching mode

- GH #4236

---

Modified: src/modules/dispatcher/dispatch.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/28cd81c9ad7a64ee8953ba9438756b88740b7820.diff
Patch: 
https://github.com/kamailio/kamailio/commit/28cd81c9ad7a64ee8953ba9438756b88740b7820.patch

---

diff --git a/src/modules/dispatcher/dispatch.c 
b/src/modules/dispatcher/dispatch.c
index 370aac8f4e2..3f0c1ab857f 100644
--- a/src/modules/dispatcher/dispatch.c
+++ b/src/modules/dispatcher/dispatch.c
@@ -3827,30 +3827,31 @@ int ds_is_addr_from_set(sip_msg_t *_m, struct ip_addr 
*pipaddr,
                        if(mode & DS_MATCH_MIXSOCKPRPORT) {
                                node_strictness = DS_MATCHED_ADDR;
                                if(node->dlist[j].port) {
-                                       if(tport != node->dlist[j].port)
-                                               continue;
-                                       else
+                                       if(tport == node->dlist[j].port) {
                                                node_strictness |= 
DS_MATCHED_PORT;
+                                       }
                                }
 
                                if(node->dlist[j].proto) {
-                                       if(tproto != node->dlist[j].proto)
-                                               continue;
-                                       else
+                                       if(tproto == node->dlist[j].proto) {
                                                node_strictness |= 
DS_MATCHED_PROTO;
+                                       }
                                }
 
                                if(node->dlist[j].sock) {
-                                       if(node->dlist[j].sock != 
_m->rcv.bind_address)
-                                               continue;
-                                       else
+                                       if(node->dlist[j].sock == 
_m->rcv.bind_address) {
                                                node_strictness |= 
DS_MATCHED_SOCK;
+                                       }
                                }
 
                                if(node_strictness
                                                == (DS_MATCHED_ADDR | 
DS_MATCHED_PORT | DS_MATCHED_PROTO
-                                                               | 
DS_MATCHED_SOCK))
+                                                               | 
DS_MATCHED_SOCK)) {
+                                       ds_strictest_match = node_strictness;
+                                       ds_strictest_node = node;
+                                       ds_strictest_idx = j;
                                        return ds_set_vars(_m, node, j, 
export_set_pv);
+                               }
 
                                if(ds_strictest_match < node_strictness) {
                                        ds_strictest_match = node_strictness;

_______________________________________________
Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to