Module: kamailio Branch: master Commit: 28cd81c9ad7a64ee8953ba9438756b88740b7820 URL: https://github.com/kamailio/kamailio/commit/28cd81c9ad7a64ee8953ba9438756b88...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@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/28cd81c9ad7a64ee8953ba9438756b88... Patch: https://github.com/kamailio/kamailio/commit/28cd81c9ad7a64ee8953ba9438756b88...
---
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;