mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 02:03:20 -04: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