fix DPR to contain sender identity not recipient

This commit is contained in:
ionutboangiu
2025-10-28 20:16:04 +02:00
committed by Dan Christian Bogos
parent 4c30ec4e4c
commit 89c0f9e025

View File

@@ -579,12 +579,6 @@ func (da *DiameterAgent) V1DisconnectPeer(ctx *context.Context, args *utils.DPRA
return errors.New("WRONG_DISCONNECT_CAUSE") return errors.New("WRONG_DISCONNECT_CAUSE")
} }
m := diam.NewRequest(diam.DisconnectPeer,
diam.CHARGING_CONTROL_APP_ID, dict.Default)
m.NewAVP(avp.OriginHost, avp.Mbit, 0, datatype.DiameterIdentity(args.OriginHost))
m.NewAVP(avp.OriginRealm, avp.Mbit, 0, datatype.DiameterIdentity(args.OriginRealm))
m.NewAVP(avp.DisconnectCause, avp.Mbit, 0, datatype.Enumerated(args.DisconnectCause))
var conn diam.Conn var conn diam.Conn
var key string var key string
@@ -612,6 +606,15 @@ func (da *DiameterAgent) V1DisconnectPeer(ctx *context.Context, args *utils.DPRA
return utils.ErrNotFound return utils.ErrNotFound
} }
// RFC 6733 Section 5.4.1: DPR contains sender's Origin-Host/Realm
m := diam.NewRequest(diam.DisconnectPeer,
diam.CHARGING_CONTROL_APP_ID, dict.Default)
m.NewAVP(avp.OriginHost, avp.Mbit, 0,
datatype.DiameterIdentity(da.cgrCfg.DiameterAgentCfg().OriginHost))
m.NewAVP(avp.OriginRealm, avp.Mbit, 0,
datatype.DiameterIdentity(da.cgrCfg.DiameterAgentCfg().OriginRealm))
m.NewAVP(avp.DisconnectCause, avp.Mbit, 0, datatype.Enumerated(args.DisconnectCause))
dpaCh := make(chan *diam.Message, 1) dpaCh := make(chan *diam.Message, 1)
da.dpaLck.Lock() da.dpaLck.Lock()
da.dpa[key] = dpaCh da.dpa[key] = dpaCh