mirror of
https://github.com/coredns/coredns.git
synced 2025-12-07 02:45:11 -05:00
middleware/proxy: absorb httpproxy (#481)
* middleware/proxy: absorb httpproxy Move the httproxy into proxy. This adds and Exchanger interface which is used to exchange the messages with the upstream. The https_google upstream will re-resolve itself and update the upstream hosts used every 300s. * Remove and add TODO
This commit is contained in:
@@ -12,23 +12,20 @@ import (
|
||||
|
||||
type dnsEx struct {
|
||||
Timeout time.Duration
|
||||
Address string // address/name of this upstream
|
||||
|
||||
group *singleflight.Group
|
||||
group *singleflight.Group
|
||||
}
|
||||
|
||||
func newDNSEx(address string) *dnsEx {
|
||||
return &dnsEx{Address: address, group: new(singleflight.Group), Timeout: defaultTimeout * time.Second}
|
||||
func newDNSEx() *dnsEx {
|
||||
return &dnsEx{group: new(singleflight.Group), Timeout: defaultTimeout * time.Second}
|
||||
}
|
||||
|
||||
func (d *dnsEx) OnStartup() error { return nil }
|
||||
func (d *dnsEx) OnShutdown() error { return nil }
|
||||
func (d *dnsEx) SetUpstream(u Upstream) error { return nil }
|
||||
func (d *dnsEx) Protocol() protocol { return dnsProto }
|
||||
func (g *dnsEx) Protocol() string { return "dns" }
|
||||
func (d *dnsEx) OnShutdown(p *Proxy) error { return nil }
|
||||
func (d *dnsEx) OnStartup(p *Proxy) error { return nil }
|
||||
|
||||
// Exchange implements the Exchanger interface.
|
||||
func (d *dnsEx) Exchange(state request.Request) (*dns.Msg, error) {
|
||||
co, err := net.DialTimeout(state.Proto(), d.Address, d.Timeout)
|
||||
func (d *dnsEx) Exchange(addr string, state request.Request) (*dns.Msg, error) {
|
||||
co, err := net.DialTimeout(state.Proto(), addr, d.Timeout)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -101,5 +98,3 @@ func exchange(m *dns.Msg, co net.Conn) (dns.Msg, error) {
|
||||
}
|
||||
return *r, err
|
||||
}
|
||||
|
||||
const dnsProto protocol = "dns"
|
||||
|
||||
Reference in New Issue
Block a user