From 4a95f65c950133dcb8bd2500f2ba8940a51a96f7 Mon Sep 17 00:00:00 2001 From: "CTFang@WireLab" Date: Fri, 1 Mar 2024 02:51:44 +0000 Subject: [PATCH] Fix: add CGF ping server and relogin --- internal/cgf/cgf.go | 11 +++++++++++ internal/sbi/producer/converged_charging.go | 6 +++--- pkg/abmf/abmf.go | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/internal/cgf/cgf.go b/internal/cgf/cgf.go index 7128f97..b9327bd 100644 --- a/internal/cgf/cgf.go +++ b/internal/cgf/cgf.go @@ -132,6 +132,7 @@ func Login() error { } func SendCDR(supi string) error { + logger.CfgLog.Debugln("SendCDR:", supi) if cgf.conn == nil { err := Login() @@ -139,7 +140,17 @@ func SendCDR(supi string) error { return err } logger.CgfLog.Infof("FTP Re-Login Success") + } + + ping_err := cgf.conn.NoOp() + if ping_err != nil { + logger.CgfLog.Infof("Faile to ping FTP server, relogin...") + err := Login() + if err != nil { + return err + } + logger.CgfLog.Infof("FTP Re-Login Success") } fileName := supi + ".cdr" diff --git a/internal/sbi/producer/converged_charging.go b/internal/sbi/producer/converged_charging.go index 710e905..d01a1a9 100644 --- a/internal/sbi/producer/converged_charging.go +++ b/internal/sbi/producer/converged_charging.go @@ -235,7 +235,7 @@ func ChargingDataUpdate( defer ue.CULock.Unlock() // Online charging: Rate, Account, Reservation - responseBody, partialRecord := BuildOnlineChargingDataUpdateResopone(chargingData) + responseBody, partialRecord := BuildConvergedChargingDataUpdateResopone(chargingData) cdr := ue.Cdr[chargingSessionId] err := UpdateCDR(cdr, chargingData) @@ -353,12 +353,12 @@ func BuildOnlineChargingDataCreateResopone( return responseBody } -func BuildOnlineChargingDataUpdateResopone( +func BuildConvergedChargingDataUpdateResopone( chargingData models.ChargingDataRequest, ) (models.ChargingDataResponse, bool) { var partialRecord bool - logger.ChargingdataPostLog.Info("In BuildOnlineChargingDataUpdateResopone ") + logger.ChargingdataPostLog.Info("In BuildConvergedChargingDataUpdateResopone") multipleUnitInformation, partialRecord := sessionChargingReservation(chargingData) diff --git a/pkg/abmf/abmf.go b/pkg/abmf/abmf.go index 99a5ab4..a1193cc 100644 --- a/pkg/abmf/abmf.go +++ b/pkg/abmf/abmf.go @@ -104,6 +104,7 @@ func printErrors(ec <-chan *diam.ErrorReport) { // return diam.ListenAndServe(addr, handler, nil) // } +// Diameter Credit-Control-Request func handleCCR() diam.HandlerFunc { return func(c diam.Conn, m *diam.Message) { var ccr charging_datatype.AccountDebitRequest