diff --git a/agents/fsagent.go b/agents/fsagent.go index cf5d8e88d..28b57a890 100644 --- a/agents/fsagent.go +++ b/agents/fsagent.go @@ -148,7 +148,7 @@ func (sm *FSsessions) onChannelPark(fsev FSEvent, connId string) { if fsev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Not for us return } - fsev[VarCGROriginHost] = sm.conns[connId].cfg.Alias + fsev[VarCGROriginHost] = utils.FirstNonEmpty(fsev[VarCGROriginHost], sm.conns[connId].cfg.Alias) // rewrite the OriginHost variable if it is empty authArgs := fsev.V1AuthorizeArgs() authArgs.CGREvent.Event[FsConnID] = connId // Attach the connection ID var authReply sessions.V1AuthorizeReply @@ -228,7 +228,7 @@ func (sm *FSsessions) onChannelAnswer(fsev FSEvent, connId string) { utils.FreeSWITCHAgent, err.Error(), VarCGROriginHost)) return } - fsev[VarCGROriginHost] = sm.conns[connId].cfg.Alias + fsev[VarCGROriginHost] = utils.FirstNonEmpty(fsev[VarCGROriginHost], sm.conns[connId].cfg.Alias) // rewrite the OriginHost variable if it is empty chanUUID := fsev.GetUUID() if missing := fsev.MissingParameter(sm.timezone); missing != "" { sm.disconnectSession(connId, chanUUID, "", @@ -253,8 +253,8 @@ func (sm *FSsessions) onChannelHangupComplete(fsev FSEvent, connId string) { return } var reply string - fsev[VarCGROriginHost] = sm.conns[connId].cfg.Alias - if fsev[VarAnswerEpoch] != "0" { // call was answered + fsev[VarCGROriginHost] = utils.FirstNonEmpty(fsev[VarCGROriginHost], sm.conns[connId].cfg.Alias) // rewrite the OriginHost variable if it is empty + if fsev[VarAnswerEpoch] != "0" { // call was answered terminateSessionArgs := fsev.V1TerminateSessionArgs() terminateSessionArgs.CGREvent.Event[FsConnID] = connId // Attach the connection ID in case we need to create a session and disconnect it if err := sm.sS.Call(utils.SessionSv1TerminateSession, diff --git a/agents/fsevent.go b/agents/fsevent.go index 1c2a538be..0d9c56e1e 100644 --- a/agents/fsevent.go +++ b/agents/fsevent.go @@ -290,6 +290,11 @@ func (fsev FSEvent) GetOriginatorIP(fieldName string) string { return utils.FirstNonEmpty(fsev[fieldName], fsev[VarCGROriginHost], fsev[FS_IPv4]) } +// GetOriginHost returns the first non empty between: fsev[VarCGROriginHost], conns[connId].cfg.Alias and fsev[FS_IPv4] +func (fsev FSEvent) GetOriginHost() string { + return utils.FirstNonEmpty(fsev[VarCGROriginHost], fsev[FS_IPv4]) +} + func (fsev FSEvent) GetExtraFields() map[string]string { extraFields := make(map[string]string) for _, fldRule := range config.CgrConfig().FsAgentCfg().ExtraFields { @@ -311,7 +316,7 @@ func (fsev FSEvent) ParseEventValue(rsrFld *config.RSRParser, timezone string) ( case utils.OriginID: return rsrFld.ParseValue(fsev.GetUUID()) case utils.OriginHost: - return rsrFld.ParseValue(utils.FirstNonEmpty(fsev[VarCGROriginHost], fsev[FS_IPv4])) + return rsrFld.ParseValue(fsev.GetOriginHost()) case utils.Source: return rsrFld.ParseValue("FS_EVENT") case utils.RequestType: @@ -379,7 +384,7 @@ func (fsev FSEvent) AsMapStringInterface(timezone string) map[string]interface{} } mp[utils.ToR] = utils.VOICE mp[utils.OriginID] = fsev.GetUUID() - mp[utils.OriginHost] = fsev.GetOriginatorIP(utils.META_DEFAULT) + mp[utils.OriginHost] = fsev.GetOriginHost() mp[utils.Source] = "FS_" + fsev.GetName() mp[utils.RequestType] = fsev.GetReqType(utils.META_DEFAULT) mp[utils.Direction] = fsev.GetDirection(utils.META_DEFAULT)