summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2023-07-08 13:42:51 -0600
committerMatthew Holt <mholt@users.noreply.github.com>2023-07-08 13:42:51 -0600
commit5dec11f2a0e920d5466ff224a0749a667193e3ce (patch)
treeb088d80cfdaa5ac17eef75922b1aecf608a5be9d /modules
parent66114cb155f2a975ecdc9f3d2d89a9df1142791a (diff)
reverseproxy: Pointer receiver
This avoids copying the Upstream, which has an atomically-accessed value in it.
Diffstat (limited to 'modules')
-rw-r--r--modules/caddyhttp/reverseproxy/hosts.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/modules/caddyhttp/reverseproxy/hosts.go b/modules/caddyhttp/reverseproxy/hosts.go
index 298d4f3..83a39d8 100644
--- a/modules/caddyhttp/reverseproxy/hosts.go
+++ b/modules/caddyhttp/reverseproxy/hosts.go
@@ -63,9 +63,10 @@ type Upstream struct {
unhealthy int32 // accessed atomically; status from active health checker
}
-func (u Upstream) String() string {
- return u.Dial
-}
+// (pointer receiver necessary to avoid a race condition, since
+// copying the Upstream reads the 'unhealthy' field which is
+// accessed atomically)
+func (u *Upstream) String() string { return u.Dial }
// Available returns true if the remote host
// is available to receive requests. This is