diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index adbb9ae6d..2ba886aec 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -174,8 +174,8 @@ func startSmGeneric(internalSMGChan chan *sessionmanager.SMGeneric, internalRate for method, handler := range smgBiRpc.Handlers() { server.BiRPCRegisterName(method, handler) } - //server.BiRPCRegister(smgBiRpc) - go server.ServeBiJSON(cfg.SmGenericConfig.ListenBijson) + server.ServeBiJSON(cfg.SmGenericConfig.ListenBijson) + exitChan <- true } } diff --git a/sessionmanager/smgbirpc_it_test.go b/sessionmanager/smgbirpc_it_test.go index d162a3c4e..160edc254 100644 --- a/sessionmanager/smgbirpc_it_test.go +++ b/sessionmanager/smgbirpc_it_test.go @@ -80,7 +80,10 @@ func TestSMGBiRPCStartEngine(t *testing.T) { // Connect rpc client to rater func TestSMGBiRPCApierRpcConn(t *testing.T) { clntHandlers := map[string]interface{}{"SMGClientV1.DisconnectSession": handleDisconnectSession} - if smgBiRPC, err = utils.NewBiJSONrpcClient(smgBiRPCCfg.SmGenericConfig.ListenBijson, clntHandlers); err != nil { // Connect also simple RPC so we can check accounts and such + if _, err = utils.NewBiJSONrpcClient(smgBiRPCCfg.SmGenericConfig.ListenBijson, clntHandlers); err != nil { // First attempt is to make sure multiple clients are supported + t.Fatal(err) + } + if smgBiRPC, err = utils.NewBiJSONrpcClient(smgBiRPCCfg.SmGenericConfig.ListenBijson, clntHandlers); err != nil { t.Fatal(err) } if smgRPC, err = jsonrpc.Dial("tcp", smgBiRPCCfg.RPCJSONListen); err != nil { // Connect also simple RPC so we can check accounts and such diff --git a/utils/server.go b/utils/server.go index 7e8072a83..522eb89c5 100644 --- a/utils/server.go +++ b/utils/server.go @@ -193,11 +193,13 @@ func (s *Server) ServeBiJSON(addr string) { log.Fatal("ServeBiJSON listen error:", e) } Logger.Info(fmt.Sprintf("Starting CGRateS BiJSON server at <%s>", addr)) - conn, err := lBiJSON.Accept() - if err != nil { - log.Fatal(err) + for { + conn, err := lBiJSON.Accept() + if err != nil { + log.Fatal(err) + } + go s.birpcSrv.ServeCodec(rpc2_jsonrpc.NewJSONCodec(conn)) } - s.birpcSrv.ServeCodec(rpc2_jsonrpc.NewJSONCodec(conn)) } // rpcRequest represents a RPC request.