diff --git a/sessions/sessions.go b/sessions/sessions.go index 670dd0f54..0c5dfa22d 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -489,7 +489,6 @@ func (smg *SMGeneric) v1ForkSessions(evStart *engine.SafEvent, rals: smg.rals, cdrsrv: smg.cdrsrv, clntConn: clntConn}}, nil } - stopDebitChan := make(chan struct{}) for _, sessionRun := range sessionRuns { s := &SMGSession{CGRID: cgrID, ResourceID: resourceID, EventStart: evStart, RunID: sessionRun.DerivedCharger.RunID, Timezone: smg.Timezone, @@ -497,15 +496,17 @@ func (smg *SMGeneric) v1ForkSessions(evStart *engine.SafEvent, CD: sessionRun.CallDescriptor, clntConn: clntConn, clientProto: smg.cgrCfg.SessionSCfg().ClientProtocol} //utils.Logger.Info(fmt.Sprintf("<%s> Starting session: %s, runId: %s",utils.SessionS, sessionId, s.runId)) - if smg.cgrCfg.SessionSCfg().DebitInterval != 0 { - s.stopDebit = stopDebitChan - go s.debitLoop(smg.cgrCfg.SessionSCfg().DebitInterval) - } + ss = append(ss, s) } return } +func (smg *SMGeneric) v2ForkSessions(evStart *engine.SafEvent, + clntConn rpcclient.RpcClientConnection, cgrID, resourceID string) (ss []*SMGSession, err error) { + return +} + // sessionStart will handle a new session, pass the connectionId so we can communicate on disconnect request func (smg *SMGeneric) sessionStart(evStart *engine.SafEvent, clntConn rpcclient.RpcClientConnection, resourceID string) (err error) { @@ -515,14 +516,22 @@ func (smg *SMGeneric) sessionStart(evStart *engine.SafEvent, return nil, nil // ToDo: handle here also debits } var ss []*SMGSession - if smg.chargerS == nil { + if smg.chargerS == nil { // old way of session forking ss, err = smg.v1ForkSessions(evStart, clntConn, cgrID, resourceID) + } else { + ss, err = smg.v2ForkSessions(evStart, clntConn, cgrID, resourceID) } if err != nil { return nil, err } + stopDebitChan := make(chan struct{}) for _, s := range ss { smg.recordASession(s) + if s.RunID != utils.META_NONE && + smg.cgrCfg.SessionSCfg().DebitInterval != 0 { + s.stopDebit = stopDebitChan + go s.debitLoop(smg.cgrCfg.SessionSCfg().DebitInterval) + } } return nil, nil }, smg.cgrCfg.LockingTimeout, cgrID)