reverseproxy: Enforce port range size of 1 at provision (#3695)

* reverse_proxy: ensure upstream address has port range of only 1

* reverse_proxy: don't log the error if upstream range size is more than 1
This commit is contained in:
Mohammed Al Sahaf 2020-09-17 04:48:37 +03:00 committed by GitHub
parent b95b87381a
commit d55d50b3b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -204,6 +204,13 @@ func (h *Handler) Provision(ctx caddy.Context) error {
// set up upstreams // set up upstreams
for _, upstream := range h.Upstreams { for _, upstream := range h.Upstreams {
addr, err := caddy.ParseNetworkAddress(upstream.Dial)
if err != nil {
return err
}
if addr.PortRangeSize() != 1 {
return fmt.Errorf("multiple addresses (upstream must map to only one address): %v", addr)
}
// create or get the host representation for this upstream // create or get the host representation for this upstream
var host Host = new(upstreamHost) var host Host = new(upstreamHost)
existingHost, loaded := hosts.LoadOrStore(upstream.String(), host) existingHost, loaded := hosts.LoadOrStore(upstream.String(), host)