From b23027844123ead8d40e81ed6ac93767340b2857 Mon Sep 17 00:00:00 2001 From: Adphi Date: Mon, 5 Sep 2022 12:33:01 +0200 Subject: [PATCH] add unix socket support Signed-off-by: Adphi --- .gitignore | 1 + client/client.go | 11 ++++++++--- service/service.go | 8 +++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 83ff4e8..dd67c09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea .bin +/tmp diff --git a/client/client.go b/client/client.go index 8051295..654b33f 100644 --- a/client/client.go +++ b/client/client.go @@ -43,11 +43,16 @@ func New(opts ...Option) (Client, error) { if len(c.opts.streamInterceptors) > 0 { c.opts.dialOptions = append(c.opts.dialOptions, grpc.WithStreamInterceptor(grpc_middleware.ChainStreamClient(c.opts.streamInterceptors...))) } - if c.opts.addr == "" { + switch { + case c.opts.addr == "": c.addr = fmt.Sprintf("%s:///%s", c.opts.registry.String(), c.opts.name) - } else if strings.HasPrefix(c.opts.addr, "tcp://") { + case strings.HasPrefix(c.opts.addr, "tcp://"): c.addr = strings.Replace(c.opts.addr, "tcp://", "", 1) - } else { + case strings.HasPrefix(c.opts.addr, "unix:///"): + c.addr = c.opts.addr + case strings.HasPrefix(c.opts.addr, "unix://"): + c.addr = strings.Replace(c.opts.addr, "unix://", "unix:", 1) + default: c.addr = c.opts.addr } if c.opts.version != "" && c.opts.addr == "" { diff --git a/service/service.go b/service/service.go index fcda6fa..b7c5e43 100644 --- a/service/service.go +++ b/service/service.go @@ -145,7 +145,13 @@ func (s *service) run() error { return err } - lis, err := net.Listen("tcp", s.opts.address) + network := "tcp" + if strings.HasPrefix(s.opts.address, "unix://") { + network = "unix" + s.opts.address = strings.TrimPrefix(s.opts.address, "unix://") + } + + lis, err := net.Listen(network, s.opts.address) if err != nil { return err }