embed: explicitly define unix network

release-3.4
Sam Batschelet 2018-02-25 19:52:38 -05:00
parent 367b21c898
commit 2e4f856389
2 changed files with 15 additions and 6 deletions

View File

@ -428,12 +428,13 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
return nil, fmt.Errorf("TLS key/cert (--cert-file, --key-file) must be provided for client url %s with HTTPs scheme", u.String())
}
proto := "tcp"
network := "tcp"
addr := u.Host
if u.Scheme == "unix" || u.Scheme == "unixs" {
proto = "unix"
network = "unix"
addr = u.Host + u.Path
}
sctx.network = network
sctx.secure = u.Scheme == "https" || u.Scheme == "unixs"
sctx.insecure = !sctx.secure
@ -443,7 +444,7 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
continue
}
if sctx.l, err = net.Listen(proto, addr); err != nil {
if sctx.l, err = net.Listen(network, addr); err != nil {
return nil, err
}
// net.Listener will rewrite ipv4 0.0.0.0 to ipv6 [::], breaking
@ -457,8 +458,8 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
sctx.l = transport.LimitListener(sctx.l, int(fdLimit-reservedInternalFDNum))
}
if proto == "tcp" {
if sctx.l, err = transport.NewKeepAliveListener(sctx.l, "tcp", nil); err != nil {
if network == "tcp" {
if sctx.l, err = transport.NewKeepAliveListener(sctx.l, network, nil); err != nil {
return nil, err
}
}

View File

@ -48,6 +48,7 @@ import (
type serveCtx struct {
l net.Listener
addr string
network string
secure bool
insecure bool
@ -194,7 +195,14 @@ type registerHandlerFunc func(context.Context, *gw.ServeMux, *grpc.ClientConn) e
func (sctx *serveCtx) registerGateway(opts []grpc.DialOption) (*gw.ServeMux, error) {
ctx := sctx.ctx
conn, err := grpc.DialContext(ctx, sctx.addr, opts...)
addr := sctx.addr
// explictly define unix network for gRPC socket support
if network := sctx.network; network == "unix" {
addr = fmt.Sprintf("%s://%s", network, addr)
}
conn, err := grpc.DialContext(ctx, addr, opts...)
if err != nil {
return nil, err
}