Skip to content

Commit

Permalink
fix host port handling for ipv6, fixes #16550
Browse files Browse the repository at this point in the history
  • Loading branch information
valodzka committed Apr 6, 2023
1 parent 03a90f4 commit 0dcf7a8
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 8 deletions.
9 changes: 5 additions & 4 deletions client/taskenv/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -1039,7 +1039,7 @@ func (b *Builder) SetWorkloadToken(token string, inject bool) *Builder {
// addPort keys and values for other tasks to an env var map
func addPort(m map[string]string, taskName, ip, portLabel string, port int) {
key := fmt.Sprintf("%s%s_%s", AddrPrefix, taskName, portLabel)
m[key] = fmt.Sprintf("%s:%d", ip, port)
m[key] = net.JoinHostPort(ip, strconv.Itoa(port))
key = fmt.Sprintf("%s%s_%s", IpPrefix, taskName, portLabel)
m[key] = ip
key = fmt.Sprintf("%s%s_%s", PortPrefix, taskName, portLabel)
Expand All @@ -1060,8 +1060,9 @@ func addGroupPort(m map[string]string, port structs.Port) {

func addPorts(m map[string]string, ports structs.AllocatedPorts) {
for _, p := range ports {
m[AddrPrefix+p.Label] = fmt.Sprintf("%s:%d", p.HostIP, p.Value)
m[HostAddrPrefix+p.Label] = fmt.Sprintf("%s:%d", p.HostIP, p.Value)
port := strconv.Itoa(p.Value)
m[AddrPrefix+p.Label] = net.JoinHostPort(p.HostIP, port)
m[HostAddrPrefix+p.Label] = net.JoinHostPort(p.HostIP, port)
m[IpPrefix+p.Label] = p.HostIP
m[HostIpPrefix+p.Label] = p.HostIP
if p.To > 0 {
Expand All @@ -1074,6 +1075,6 @@ func addPorts(m map[string]string, ports structs.AllocatedPorts) {
m[AllocPortPrefix+p.Label] = val
}

m[HostPortPrefix+p.Label] = strconv.Itoa(p.Value)
m[HostPortPrefix+p.Label] = port
}
}
2 changes: 1 addition & 1 deletion command/agent/agent_endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ func TestHTTP_AgentJoin(t *testing.T) {
httpTest(t, nil, func(s *TestAgent) {
// Determine the join address
member := s.Agent.Server().LocalMember()
addr := fmt.Sprintf("%s:%d", member.Addr, member.Port)
addr := net.JoinHostPort("%s:%d", member.Addr, member.Port)

// Make the HTTP request
req, err := http.NewRequest("PUT",
Expand Down
4 changes: 3 additions & 1 deletion nomad/job_endpoint_hook_connect.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package nomad
import (
"errors"
"fmt"
"net"
"strconv"
"strings"
"time"

Expand Down Expand Up @@ -527,7 +529,7 @@ func groupConnectUpstreamsValidate(group string, services []*structs.Service) er
for _, service := range services {
if service.Connect.HasSidecar() && service.Connect.SidecarService.Proxy != nil {
for _, up := range service.Connect.SidecarService.Proxy.Upstreams {
listener := fmt.Sprintf("%s:%d", up.LocalBindAddress, up.LocalBindPort)
listener := net.JoinHostPort(up.LocalBindAddress, strconv.Itoa(up.LocalBindPort))
if s, exists := listeners[listener]; exists {
return fmt.Errorf(
"Consul Connect services %q and %q in group %q using same address for upstreams (%s)",
Expand Down
6 changes: 4 additions & 2 deletions nomad/structs/diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ package structs

import (
"fmt"
"net"
"reflect"
"sort"
"strconv"
"strings"

"github.com/hashicorp/nomad/helper/flatmap"
Expand Down Expand Up @@ -1366,11 +1368,11 @@ func connectGatewayProxyEnvoyBindAddrsDiff(prev, next map[string]*ConsulGatewayB
nextMap := make(map[string]string, len(next))

for k, v := range prev {
prevMap[k] = fmt.Sprintf("%s:%d", v.Address, v.Port)
prevMap[k] = net.JoinHostPort(v.Address, strconv.Itoa(v.Port))
}

for k, v := range next {
nextMap[k] = fmt.Sprintf("%s:%d", v.Address, v.Port)
nextMap[k] = net.JoinHostPort(v.Address, strconv.Itoa(v.Port))
}

oldPrimitiveFlat := flatmap.Flatten(prevMap, nil, false)
Expand Down

0 comments on commit 0dcf7a8

Please sign in to comment.