added multiple listeners for diameter agent

This commit is contained in:
gezimbll
2025-12-02 14:17:03 +01:00
committed by Dan Christian Bogos
parent 897d6f0da1
commit e859be8806
17 changed files with 382 additions and 118 deletions

View File

@@ -55,9 +55,6 @@ type DiameterAgent struct {
connMgr *engine.ConnManager
caps *engine.Caps
lnet string
laddr string
srvDep map[string]*sync.WaitGroup
}
@@ -83,8 +80,6 @@ func (da *DiameterAgent) start(filterS *engine.FilterS, caps *engine.Caps) error
utils.DiameterAgent, err))
return err
}
da.lnet = da.cfg.DiameterAgentCfg().ListenNet
da.laddr = da.cfg.DiameterAgentCfg().Listen
da.stopChan = make(chan struct{})
go func(d *agents.DiameterAgent) {
lnsErr := d.ListenAndServe(da.stopChan)
@@ -99,16 +94,8 @@ func (da *DiameterAgent) start(filterS *engine.FilterS, caps *engine.Caps) error
// Reload handles the change of config
func (da *DiameterAgent) Reload() (err error) {
da.Lock()
defer da.Unlock()
if da.lnet == da.cfg.DiameterAgentCfg().ListenNet &&
da.laddr == da.cfg.DiameterAgentCfg().Listen {
return
}
close(da.stopChan)
filterS := <-da.filterSChan
da.filterSChan <- filterS
return da.start(filterS, da.caps)
da.Shutdown()
return da.Start()
}
// Shutdown stops the service

View File

@@ -94,7 +94,6 @@ func TestDiameterAgentReload1(t *testing.T) {
cfg.DiameterAgentCfg().Enabled = false
cfg.GetReloadChan(config.DA_JSN) <- struct{}{}
diamSrv.(*DiameterAgent).lnet = "bad_lnet_test"
err2 := diamSrv.Reload()
if err != nil {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err2)
@@ -156,7 +155,7 @@ func TestDiameterAgentReload3(t *testing.T) {
srvDep := map[string]*sync.WaitGroup{utils.DataDB: new(sync.WaitGroup)}
srv := NewDiameterAgent(cfg, filterSChan, shdChan, nil, caps, srvDep)
cfg.DiameterAgentCfg().ListenNet = "bad"
cfg.DiameterAgentCfg().Listeners[0].Network = "bad"
cfg.DiameterAgentCfg().DictionariesPath = ""
da := srv.(*DiameterAgent)