mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 09:08:45 +05:00
dnsagent: add caps support
This commit is contained in:
committed by
Dan Christian Bogos
parent
f976b35157
commit
7eb4d0a846
@@ -33,8 +33,8 @@ import (
|
||||
|
||||
// NewDNSAgent is the constructor for DNSAgent
|
||||
func NewDNSAgent(cgrCfg *config.CGRConfig, fltrS *engine.FilterS,
|
||||
connMgr *engine.ConnManager) (da *DNSAgent, err error) {
|
||||
da = &DNSAgent{cgrCfg: cgrCfg, fltrS: fltrS, connMgr: connMgr}
|
||||
connMgr *engine.ConnManager, caps *engine.Caps) (da *DNSAgent, err error) {
|
||||
da = &DNSAgent{cgrCfg: cgrCfg, fltrS: fltrS, connMgr: connMgr, caps: caps}
|
||||
err = da.initDNSServer()
|
||||
return
|
||||
}
|
||||
@@ -44,6 +44,7 @@ type DNSAgent struct {
|
||||
sync.RWMutex
|
||||
cgrCfg *config.CGRConfig // loaded CGRateS configuration
|
||||
fltrS *engine.FilterS // connection towards FilterS
|
||||
caps *engine.Caps
|
||||
servers []*dns.Server
|
||||
connMgr *engine.ConnManager
|
||||
}
|
||||
@@ -113,6 +114,15 @@ func (da *DNSAgent) Reload() (err error) {
|
||||
// handleMessage is the entry point of all DNS requests
|
||||
// requests are reaching here asynchronously
|
||||
func (da *DNSAgent) handleMessage(w dns.ResponseWriter, req *dns.Msg) {
|
||||
if da.caps.IsLimited() {
|
||||
if err := da.caps.Allocate(); err != nil {
|
||||
rply := newDnsReply(req)
|
||||
rply.Rcode = dns.RcodeRefused
|
||||
dnsWriteMsg(w, rply)
|
||||
return
|
||||
}
|
||||
defer da.caps.Deallocate()
|
||||
}
|
||||
dnsDP := newDnsDP(req)
|
||||
|
||||
rply := newDnsReply(req)
|
||||
|
||||
@@ -53,6 +53,7 @@ func (dns *DNSAgent) Start(shutdown *utils.SyncedChan, registry *servmanager.Ser
|
||||
[]string{
|
||||
utils.ConnManager,
|
||||
utils.FilterS,
|
||||
utils.CapS,
|
||||
},
|
||||
registry, dns.cfg.GeneralCfg().ConnectTimeout)
|
||||
if err != nil {
|
||||
@@ -60,10 +61,11 @@ func (dns *DNSAgent) Start(shutdown *utils.SyncedChan, registry *servmanager.Ser
|
||||
}
|
||||
cms := srvDeps[utils.ConnManager].(*ConnManagerService)
|
||||
fs := srvDeps[utils.FilterS].(*FilterService)
|
||||
caps := srvDeps[utils.CapS].(*CapService).Caps()
|
||||
|
||||
dns.mu.Lock()
|
||||
defer dns.mu.Unlock()
|
||||
dns.dns, err = agents.NewDNSAgent(dns.cfg, fs.FilterS(), cms.ConnManager())
|
||||
dns.dns, err = agents.NewDNSAgent(dns.cfg, fs.FilterS(), cms.ConnManager(), caps)
|
||||
if err != nil {
|
||||
dns.dns = nil
|
||||
return
|
||||
@@ -79,6 +81,7 @@ func (dns *DNSAgent) Reload(shutdown *utils.SyncedChan, registry *servmanager.Se
|
||||
[]string{
|
||||
utils.ConnManager,
|
||||
utils.FilterS,
|
||||
utils.CapS,
|
||||
},
|
||||
registry, dns.cfg.GeneralCfg().ConnectTimeout)
|
||||
if err != nil {
|
||||
@@ -86,6 +89,7 @@ func (dns *DNSAgent) Reload(shutdown *utils.SyncedChan, registry *servmanager.Se
|
||||
}
|
||||
cms := srvDeps[utils.ConnManager].(*ConnManagerService)
|
||||
fs := srvDeps[utils.FilterS].(*FilterService)
|
||||
caps := srvDeps[utils.CapS].(*CapService).Caps()
|
||||
|
||||
dns.mu.Lock()
|
||||
defer dns.mu.Unlock()
|
||||
@@ -94,7 +98,7 @@ func (dns *DNSAgent) Reload(shutdown *utils.SyncedChan, registry *servmanager.Se
|
||||
close(dns.stopChan)
|
||||
}
|
||||
|
||||
dns.dns, err = agents.NewDNSAgent(dns.cfg, fs.FilterS(), cms.ConnManager())
|
||||
dns.dns, err = agents.NewDNSAgent(dns.cfg, fs.FilterS(), cms.ConnManager(), caps)
|
||||
if err != nil {
|
||||
dns.dns = nil
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user