Merge pull request #280 from LaurenceJJones/fix/healthcheck-ipv6

fix(healthcheck): Support ipv6 healthchecks
This commit is contained in:
Owen Schwartz
2026-03-18 15:38:15 -07:00
committed by GitHub

View File

@@ -5,7 +5,9 @@ import (
"crypto/tls" "crypto/tls"
"encoding/json" "encoding/json"
"fmt" "fmt"
"net"
"net/http" "net/http"
"strconv"
"strings" "strings"
"sync" "sync"
"time" "time"
@@ -365,11 +367,12 @@ func (m *Monitor) performHealthCheck(target *Target) {
target.LastCheck = time.Now() target.LastCheck = time.Now()
target.LastError = "" target.LastError = ""
// Build URL // Build URL (use net.JoinHostPort to properly handle IPv6 addresses with ports)
url := fmt.Sprintf("%s://%s", target.Config.Scheme, target.Config.Hostname) host := target.Config.Hostname
if target.Config.Port > 0 { if target.Config.Port > 0 {
url = fmt.Sprintf("%s:%d", url, target.Config.Port) host = net.JoinHostPort(target.Config.Hostname, strconv.Itoa(target.Config.Port))
} }
url := fmt.Sprintf("%s://%s", target.Config.Scheme, host)
if target.Config.Path != "" { if target.Config.Path != "" {
if !strings.HasPrefix(target.Config.Path, "/") { if !strings.HasPrefix(target.Config.Path, "/") {
url += "/" url += "/"