Adding cgr_type variable set in channel variables even if not there, log customizations for easier troubleshooting

This commit is contained in:
DanB
2013-04-10 12:12:18 +02:00
parent 3e7eb2ea6b
commit dda70286fb
2 changed files with 19 additions and 7 deletions

View File

@@ -282,7 +282,7 @@ func (cd *CallDescriptor) GetCost() (*CallCost, error) {
Cost: cost,
ConnectFee: connectionFee,
Timespans: timespans}
Logger.Info(fmt.Sprintf("Get Cost: %s => %v", cd.GetKey(), cc))
Logger.Info(fmt.Sprintf("<Rater> Get Cost: %s => %v", cd.GetKey(), cc))
return cc, err
}
@@ -347,11 +347,15 @@ func (cd *CallDescriptor) GetMaxSessionTime() (seconds float64, err error) {
func (cd *CallDescriptor) Debit() (cc *CallCost, err error) {
cc, err = cd.GetCost()
if err != nil {
Logger.Err(fmt.Sprintf("error getting cost for key %v: %v", cd.GetUserBalanceKey(), err))
Logger.Err(fmt.Sprintf("<Rater> Error getting cost for account key %v: %v", cd.GetUserBalanceKey(), err))
return
}
Logger.Debug(fmt.Sprintf("Debiting from %v, value: %v", cd.GetUserBalanceKey(), cc.Cost+cc.ConnectFee))
if userBalance, err := cd.getUserBalance(); err == nil && userBalance != nil {
Logger.Err(fmt.Sprintf("<Rater> Error retrieving user balance: %v", err))
} else if userBalance == nil {
Logger.Debug(fmt.Sprintf("<Rater> No user balance defined: %v",cd.GetUserBalanceKey()))
} else {
Logger.Debug(fmt.Sprintf("<Rater> Attempting to debit from %v, value: %v", cd.GetUserBalanceKey(), cc.Cost+cc.ConnectFee))
defer storageGetter.SetUserBalance(userBalance)
if cc.Cost != 0 || cc.ConnectFee != 0 {
userBalance.debitBalance(CREDIT, cc.Cost+cc.ConnectFee, true)

View File

@@ -181,16 +181,25 @@ func (sm *FSSessionManager) OnChannelPark(ev Event) {
}
func (sm *FSSessionManager) OnChannelAnswer(ev Event) {
rater.Logger.Info("freeswitch answer")
rater.Logger.Info("<SessionManager> FreeSWITCH answer.")
s := NewSession(ev, sm)
if s != nil {
sm.sessions = append(sm.sessions, s)
}
// Make sure cgr_type is enforced even if not set by FreeSWITCH
cgrType := ev.GetReqType()
if cgrType != "" {
err := fsock.FS.SendApiCmd(fmt.Sprintf("uuid_setvar %s cgr_type %s\n\n", s.uuid, cgrType))
if err != nil {
rater.Logger.Err("<SessionManager> Could not enforce cgr_type variable on FreeSWITCH uuid")
}
}
}
func (sm *FSSessionManager) OnChannelHangupComplete(ev Event) {
rater.Logger.Info("freeswitch hangup")
rater.Logger.Info("<SessionManager> FreeSWITCH hangup.")
s := sm.GetSession(ev.GetUUID())
sm.RemoveSession(s)
if ev.GetReqType() == REQTYPE_POSTPAID {
startTime, err := ev.GetStartTime(START_TIME)
if err != nil {
@@ -337,10 +346,9 @@ func (sm *FSSessionManager) Shutdown() (err error) {
}
rater.Logger.Info("Shutting down all sessions...")
fsock.FS.SendApiCmd("hupall MANAGER_REQUEST cgr_reqtype prepaid")
fsock.FS.SendApiCmd("hupall MANAGER_REQUEST cgr_reqtype postpaid")
for guard := 0; len(sm.sessions) > 0 && guard < 20; guard++ {
time.Sleep(100 * time.Millisecond) // wait for the hungup event to be fired
rater.Logger.Info(fmt.Sprintf("sessions: %s", sm.sessions))
rater.Logger.Info(fmt.Sprintf("<SessionManager> Shutdown waiting on sessions: %s", sm.sessions))
}
return
}