diff --git a/config/config.go b/config/config.go index 6aceaca8..c2b6c5a2 100644 --- a/config/config.go +++ b/config/config.go @@ -7,6 +7,9 @@ import ( "context" "errors" "fmt" + "net/url" + "strconv" + "strings" "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/utils/constants" @@ -121,6 +124,22 @@ func (c *Config) Validate() error { } c.blockchainIDToSubnetID = blockchainIDToSubnetID + if c.DeciderPort != nil { + portStr := strconv.FormatUint(uint64(*c.DeciderPort), 10) + + host := c.DeciderHost + if len(host) == 0 { + host = "localhost" + } + + uri := strings.Join([]string{host, portStr}, ":") + + _, err := url.ParseRequestURI(uri) + if err != nil { + return fmt.Errorf("Invalid decider URI: %w", err) + } + } + return nil } diff --git a/main/main.go b/main/main.go index 2b37bf29..d76fc6e4 100644 --- a/main/main.go +++ b/main/main.go @@ -8,7 +8,6 @@ import ( "fmt" "log" "net/http" - "net/url" "os" "runtime" "strconv" @@ -464,18 +463,11 @@ func createDeciderClient(host string, port *uint16) (*grpc.ClientConn, error) { host = "localhost" } - uri := strings.Join( - []string{host, strconv.FormatUint(uint64(*port), 10)}, - ":", - ) - - _, err := url.ParseRequestURI(uri) - if err != nil { - return nil, fmt.Errorf("Invalid URI: %w", err) - } - client, err := grpc.NewClient( - uri, + strings.Join( + []string{host, strconv.FormatUint(uint64(*port), 10)}, + ":", + ), grpc.WithTransportCredentials(insecure.NewCredentials()), ) if err != nil {