Prechádzať zdrojové kódy

dispatcher: rework MIXSOCKPRPORT (16) matching mode

- GH #4236

(cherry picked from commit 28cd81c9ad7a64ee8953ba9438756b88740b7820)
Daniel-Constantin Mierla 3 mesiacov pred
rodič
commit
9ba402d350
1 zmenil súbory, kde vykonal 11 pridanie a 10 odobranie
  1. 11 10
      src/modules/dispatcher/dispatch.c

+ 11 - 10
src/modules/dispatcher/dispatch.c

@@ -3796,30 +3796,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;