embed: connect json gateway with user-provided listen address
net.Listener says its address is [::] when given 0.0.0.0, breaking hosts that have ipv6 disabled. Fixes #8151 Fixes #7961release-3.3
parent
894751ef44
commit
63350f5ac1
|
@ -328,6 +328,9 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
|
||||||
if sctx.l, err = net.Listen(proto, addr); err != nil {
|
if sctx.l, err = net.Listen(proto, addr); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
// net.Listener will rewrite ipv4 0.0.0.0 to ipv6 [::], breaking
|
||||||
|
// hosts that disable ipv6. So, use the address given by the user.
|
||||||
|
sctx.addr = addr
|
||||||
|
|
||||||
if fdLimit, fderr := runtimeutil.FDLimit(); fderr == nil {
|
if fdLimit, fderr := runtimeutil.FDLimit(); fderr == nil {
|
||||||
if fdLimit <= reservedInternalFDNum {
|
if fdLimit <= reservedInternalFDNum {
|
||||||
|
|
|
@ -44,6 +44,7 @@ import (
|
||||||
|
|
||||||
type serveCtx struct {
|
type serveCtx struct {
|
||||||
l net.Listener
|
l net.Listener
|
||||||
|
addr string
|
||||||
secure bool
|
secure bool
|
||||||
insecure bool
|
insecure bool
|
||||||
|
|
||||||
|
@ -171,7 +172,7 @@ type registerHandlerFunc func(context.Context, *gw.ServeMux, *grpc.ClientConn) e
|
||||||
|
|
||||||
func (sctx *serveCtx) registerGateway(opts []grpc.DialOption) (*gw.ServeMux, error) {
|
func (sctx *serveCtx) registerGateway(opts []grpc.DialOption) (*gw.ServeMux, error) {
|
||||||
ctx := sctx.ctx
|
ctx := sctx.ctx
|
||||||
conn, err := grpc.DialContext(ctx, sctx.l.Addr().String(), opts...)
|
conn, err := grpc.DialContext(ctx, sctx.addr, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue