Updated KamailioAgent GetActiveSessionIDs API

This commit is contained in:
Trial97
2020-11-23 13:35:06 +02:00
committed by Dan Christian Bogos
parent 5830d9fcf0
commit 0fa2ad793e
3 changed files with 20 additions and 15 deletions

View File

@@ -362,8 +362,8 @@ func (sma *AsteriskAgent) V1GetActiveSessionIDs(ignParam string,
for _, mpIface := range slMpIface {
sIDs = append(sIDs, &sessions.SessionID{
OriginHost: strings.Split(sma.cgrCfg.AsteriskAgentCfg().AsteriskConns[sma.astConnIdx].Address, ":")[0],
OriginID: mpIface["id"].(string)},
)
OriginID: utils.IfaceAsString(mpIface["id"]),
})
}
*sessionIDs = sIDs
return nil

View File

@@ -423,12 +423,11 @@ func (fsa *FSsessions) V1GetActiveSessionIDs(_ string,
utils.FreeSWITCHAgent, err.Error(), connIdx))
continue
}
aChans := fsock.MapChanData(activeChanStr)
for _, fsAChan := range aChans {
for _, fsAChan := range fsock.MapChanData(activeChanStr) {
sIDs = append(sIDs, &sessions.SessionID{
OriginHost: fsa.cfg.EventSocketConns[connIdx].Alias,
OriginID: fsAChan["uuid"]},
)
OriginID: fsAChan["uuid"],
})
}
}
*sessionIDs = sIDs

View File

@@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package agents
import (
"encoding/json"
"errors"
"fmt"
"log"
@@ -398,22 +397,29 @@ func (ka *KamailioAgent) V1DisconnectSession(args utils.AttrDisconnectSession, r
// V1GetActiveSessionIDs returns a list of CGRIDs based on active sessions from agent
func (ka *KamailioAgent) V1GetActiveSessionIDs(ignParam string, sessionIDs *[]*sessions.SessionID) (err error) {
for _, evapi := range ka.conns {
kamEv, _ := json.Marshal(map[string]string{utils.Event: CGR_DLG_LIST})
if err = evapi.Send(string(kamEv)); err != nil {
utils.Logger.Err(fmt.Sprintf("<%s> failed sending event, error %s",
utils.KamailioAgent, err.Error()))
return
kamEv := utils.ToJSON(map[string]string{utils.Event: CGR_DLG_LIST})
var sentDLG int
for i, evapi := range ka.conns {
if err := evapi.Send(kamEv); err != nil {
utils.Logger.Err(fmt.Sprintf("<%s> failed sending event to connIdx<%v>, error %s",
utils.KamailioAgent, i, err.Error()))
continue
}
sentDLG++
}
for range ka.conns {
if sentDLG == 0 {
return
}
tm := time.NewTimer(config.CgrConfig().GeneralCfg().ReplyTimeout)
for i := 0; i < sentDLG; i++ {
select {
case sIDs := <-ka.activeSessionIDs:
*sessionIDs = append(*sessionIDs, sIDs...)
case <-time.After(5 * time.Second):
case <-tm.C:
return errors.New("timeout executing dialog list")
}
}
tm.Stop()
return
}