SMG - simplified sessionStart handling, returning error from upstream

This commit is contained in:
DanB
2017-05-18 21:11:33 +02:00
parent 335840ab58
commit 652157a85c
2 changed files with 8 additions and 13 deletions

View File

@@ -18,7 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package engine
import (
"fmt"
"reflect"
"testing"
"time"
@@ -639,5 +638,5 @@ func TestEventCostAsCallCost(t *testing.T) {
if len(eCC.Timespans) != len(cc.Timespans) {
t.Errorf("Expecting: %+v, received: %+v", eCC, cc)
}
fmt.Printf("Expecting: %s, \nreceived : %s\n", utils.ToJSON(eCC), utils.ToJSON(cc))
//fmt.Printf("Expecting: %s, \nreceived : %s\n", utils.ToJSON(eCC), utils.ToJSON(cc))
}

View File

@@ -361,17 +361,17 @@ func (smg *SMGeneric) getSessionIDsForPrefix(prefix string, passiveSessions bool
}
// sessionStart will handle a new session, pass the connectionId so we can communicate on disconnect request
func (smg *SMGeneric) sessionStart(evStart SMGenericEvent, clntConn rpcclient.RpcClientConnection) error {
func (smg *SMGeneric) sessionStart(evStart SMGenericEvent, clntConn rpcclient.RpcClientConnection) (err error) {
cgrID := evStart.GetCGRID(utils.META_DEFAULT)
processed, err := guardian.Guardian.Guard(func() (interface{}, error) { // Lock it on CGRID level
_, err = guardian.Guardian.Guard(func() (interface{}, error) { // Lock it on CGRID level
if pSS := smg.passiveToActive(cgrID); len(pSS) != 0 {
return true, nil // ToDo: handle here also debits
return nil, nil // ToDo: handle here also debits
}
var sessionRuns []*engine.SessionRun
if err := smg.rals.Call("Responder.GetSessionRuns", evStart.AsStoredCdr(smg.cgrCfg, smg.Timezone), &sessionRuns); err != nil {
return true, err
return nil, err
} else if len(sessionRuns) == 0 {
return true, nil
return nil, nil
}
stopDebitChan := make(chan struct{})
for _, sessionRun := range sessionRuns {
@@ -384,13 +384,9 @@ func (smg *SMGeneric) sessionStart(evStart SMGenericEvent, clntConn rpcclient.Rp
go s.debitLoop(smg.cgrCfg.SmGenericConfig.DebitInterval)
}
}
return true, nil
return nil, nil
}, smg.cgrCfg.LockingTimeout, cgrID)
if processed == nil || processed == false {
utils.Logger.Err("<SMGeneric> Cannot start session, empty reply")
return utils.ErrServerError
}
return err
return
}
// sessionEnd will end a session from outside