From 78f2d82984b0bdb3ef8c8ce7197ffc4b2ce71c7b Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Fri, 29 Jan 2016 17:25:37 +0000 Subject: [PATCH] Extract function to listen on Unix socket --- net/listen.go | 18 ++++++++++++++++++ prog/plugin/main.go | 9 ++------- proxy/proxy.go | 6 ++---- 3 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 net/listen.go diff --git a/net/listen.go b/net/listen.go new file mode 100644 index 00000000..628ec949 --- /dev/null +++ b/net/listen.go @@ -0,0 +1,18 @@ +package net + +import ( + "fmt" + "net" + "os" +) + +func ListenUnixSocket(pathname string) (net.Listener, error) { + if err := os.Remove(pathname); err != nil && !os.IsNotExist(err) { + return nil, fmt.Errorf("Error removing existing unix socket: %s", err) + } + listener, err := net.Listen("unix", pathname) + if err != nil { + return nil, fmt.Errorf("ListenUnixSocket failed: %s", err) + } + return listener, nil +} diff --git a/prog/plugin/main.go b/prog/plugin/main.go index 84440fee..29d04713 100644 --- a/prog/plugin/main.go +++ b/prog/plugin/main.go @@ -11,6 +11,7 @@ import ( "github.com/docker/libnetwork/ipamapi" . "github.com/weaveworks/weave/common" "github.com/weaveworks/weave/common/docker" + weavenet "github.com/weaveworks/weave/net" ipamplugin "github.com/weaveworks/weave/plugin/ipam" netplugin "github.com/weaveworks/weave/plugin/net" "github.com/weaveworks/weave/plugin/skel" @@ -101,13 +102,7 @@ func listenAndServe(dockerClient *docker.Client, address string, noMulticastRout } } - var listener net.Listener - - // remove sockets from last invocation - if err := os.Remove(address); err != nil && !os.IsNotExist(err) { - return nil, err - } - listener, err = net.Listen("unix", address) + listener, err := weavenet.ListenUnixSocket(address) if err != nil { return nil, err } diff --git a/proxy/proxy.go b/proxy/proxy.go index 1045fd51..748d298e 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -19,6 +19,7 @@ import ( docker "github.com/fsouza/go-dockerclient" . "github.com/weaveworks/weave/common" weavedocker "github.com/weaveworks/weave/common/docker" + weavenet "github.com/weaveworks/weave/net" ) const ( @@ -296,10 +297,7 @@ func (proxy *Proxy) Serve(listeners []net.Listener) { } func (proxy *Proxy) ListenAndServeStatus(socket string) { - if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { - Log.Fatalf("Error removing existing status socket: %s", err) - } - listener, err := net.Listen("unix", socket) + listener, err := weavenet.ListenUnixSocket(socket) if err != nil { Log.Fatalf("ListenAndServeStatus failed: %s", err) }