diff options
author | Jakob Unterwurzacher | 2016-12-10 14:54:06 +0100 |
---|---|---|
committer | Jakob Unterwurzacher | 2016-12-10 14:54:06 +0100 |
commit | 6af725ff099e78fab2920f060c127415aa3b1893 (patch) | |
tree | f376bb15a52b9711e9f7072490e902d441d3df18 /internal/ctlsock | |
parent | e1833fa26a2a42e61aeff6f6e350714133dee378 (diff) |
ctlsock: exit early if socket cannot be created; delete on exit
Both are achieved by opening the socket from main and passing
it to the ctlsock package instead of passing the path.
Diffstat (limited to 'internal/ctlsock')
-rw-r--r-- | internal/ctlsock/ctlsock_serve.go | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/internal/ctlsock/ctlsock_serve.go b/internal/ctlsock/ctlsock_serve.go index 63515c0..45b1e5b 100644 --- a/internal/ctlsock/ctlsock_serve.go +++ b/internal/ctlsock/ctlsock_serve.go @@ -46,19 +46,14 @@ type ctlSockHandler struct { socket *net.UnixListener } -// CreateAndServe creates an unix socket at "path" and serves incoming -// connections in a new goroutine. -func CreateAndServe(path string, fs Interface) error { - sock, err := net.Listen("unix", path) - if err != nil { - return err - } +// Serve serves incoming connections on "sock". This call blocks so you +// probably want to run it in a new goroutine. +func Serve(sock net.Listener, fs Interface) { handler := ctlSockHandler{ fs: fs, socket: sock.(*net.UnixListener), } - go handler.acceptLoop() - return nil + handler.acceptLoop() } func (ch *ctlSockHandler) acceptLoop() { |