fix ipv6 addr parsing and using
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
596c435086
commit
5aad839816
44
grpc.go
44
grpc.go
@ -504,10 +504,11 @@ func (g *grpcServer) Subscribe(sb server.Subscriber) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *grpcServer) Register() error {
|
func (g *grpcServer) Register() error {
|
||||||
|
var err error
|
||||||
|
var advt, host, port string
|
||||||
|
|
||||||
// parse address for host, port
|
// parse address for host, port
|
||||||
config := g.opts
|
config := g.opts
|
||||||
var advt, host string
|
|
||||||
var port int
|
|
||||||
|
|
||||||
// check the advertise address first
|
// check the advertise address first
|
||||||
// if it exists then use it, otherwise
|
// if it exists then use it, otherwise
|
||||||
@ -518,12 +519,17 @@ func (g *grpcServer) Register() error {
|
|||||||
advt = config.Address
|
advt = config.Address
|
||||||
}
|
}
|
||||||
|
|
||||||
parts := strings.Split(advt, ":")
|
if idx := strings.Count(advt, ":"); idx > 1 {
|
||||||
if len(parts) > 1 {
|
// ipv6 address in format [host]:port or ipv4 host:port
|
||||||
host = strings.Join(parts[:len(parts)-1], ":")
|
host, port, err = net.SplitHostPort(advt)
|
||||||
port, _ = strconv.Atoi(parts[len(parts)-1])
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if host == "::" {
|
||||||
|
host = fmt.Sprintf("[%s]", host)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
host = parts[0]
|
host = advt
|
||||||
}
|
}
|
||||||
|
|
||||||
addr, err := addr.Extract(host)
|
addr, err := addr.Extract(host)
|
||||||
@ -534,7 +540,7 @@ func (g *grpcServer) Register() error {
|
|||||||
// register service
|
// register service
|
||||||
node := ®istry.Node{
|
node := ®istry.Node{
|
||||||
Id: config.Name + "-" + config.Id,
|
Id: config.Name + "-" + config.Id,
|
||||||
Address: fmt.Sprintf("%s:%d", addr, port),
|
Address: fmt.Sprintf("%s:%s", addr, port),
|
||||||
Metadata: config.Metadata,
|
Metadata: config.Metadata,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -629,9 +635,10 @@ func (g *grpcServer) Register() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *grpcServer) Deregister() error {
|
func (g *grpcServer) Deregister() error {
|
||||||
|
var err error
|
||||||
|
var advt, host, port string
|
||||||
|
|
||||||
config := g.opts
|
config := g.opts
|
||||||
var advt, host string
|
|
||||||
var port int
|
|
||||||
|
|
||||||
// check the advertise address first
|
// check the advertise address first
|
||||||
// if it exists then use it, otherwise
|
// if it exists then use it, otherwise
|
||||||
@ -642,12 +649,17 @@ func (g *grpcServer) Deregister() error {
|
|||||||
advt = config.Address
|
advt = config.Address
|
||||||
}
|
}
|
||||||
|
|
||||||
parts := strings.Split(advt, ":")
|
if idx := strings.Count(advt, ":"); idx > 1 {
|
||||||
if len(parts) > 1 {
|
// ipv6 address in format [host]:port or ipv4 host:port
|
||||||
host = strings.Join(parts[:len(parts)-1], ":")
|
host, port, err = net.SplitHostPort(advt)
|
||||||
port, _ = strconv.Atoi(parts[len(parts)-1])
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if host == "::" {
|
||||||
|
host = fmt.Sprintf("[%s]", host)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
host = parts[0]
|
host = advt
|
||||||
}
|
}
|
||||||
|
|
||||||
addr, err := addr.Extract(host)
|
addr, err := addr.Extract(host)
|
||||||
@ -657,7 +669,7 @@ func (g *grpcServer) Deregister() error {
|
|||||||
|
|
||||||
node := ®istry.Node{
|
node := ®istry.Node{
|
||||||
Id: config.Name + "-" + config.Id,
|
Id: config.Name + "-" + config.Id,
|
||||||
Address: fmt.Sprintf("%s:%d", addr, port),
|
Address: fmt.Sprintf("%s:%s", addr, port),
|
||||||
}
|
}
|
||||||
|
|
||||||
service := ®istry.Service{
|
service := ®istry.Service{
|
||||||
|
Loading…
Reference in New Issue
Block a user