mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-20 22:58:44 +05:00
Aliases should consider *any as destination ID before going into prefixes
This commit is contained in:
@@ -19,6 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package engine
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
@@ -407,30 +408,43 @@ func LoadAlias(attr *AttrMatchingAlias, in interface{}, extraFields string) erro
|
||||
rightPairs = values[0].Pairs
|
||||
}
|
||||
|
||||
if rightPairs == nil { // attempt to match on *any destination, so we don't longer look for prefixes
|
||||
for _, value := range values {
|
||||
if value.DestinationId == utils.ANY {
|
||||
rightPairs = value.Pairs
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if rightPairs == nil {
|
||||
// check destination ids
|
||||
for _, p := range utils.SplitPrefix(attr.Destination, MIN_PREFIX_MATCH) {
|
||||
if destIDs, err := dm.DataDB().GetReverseDestination(p, false, utils.NonTransactional); err == nil {
|
||||
for _, value := range values {
|
||||
for _, dId := range destIDs {
|
||||
if value.DestinationId == utils.ANY || value.DestinationId == dId {
|
||||
rightPairs = value.Pairs
|
||||
}
|
||||
if rightPairs != nil {
|
||||
break
|
||||
}
|
||||
destIDs, err := dm.DataDB().GetReverseDestination(p, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
if err.Error() != utils.ErrNotFound.Error() { // no reverse found
|
||||
return err
|
||||
}
|
||||
continue
|
||||
}
|
||||
for _, value := range values {
|
||||
for _, dId := range destIDs {
|
||||
if value.DestinationId == dId {
|
||||
rightPairs = value.Pairs
|
||||
}
|
||||
if rightPairs != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if rightPairs != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if rightPairs != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if rightPairs != nil {
|
||||
// change values in the given object
|
||||
v := reflect.ValueOf(in)
|
||||
|
||||
Reference in New Issue
Block a user