From 018e06a77047e99052558fe372f62ba8d41b3544 Mon Sep 17 00:00:00 2001 From: brl Date: Sat, 13 Jun 2015 14:17:08 -0400 Subject: [PATCH] don't return error from MsgServer.Run() when Close() is called --- ipc/ipc.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ipc/ipc.go b/ipc/ipc.go index 1ec0a18..9c1a444 100644 --- a/ipc/ipc.go +++ b/ipc/ipc.go @@ -31,6 +31,7 @@ type MsgConn struct { } type MsgServer struct { + isClosed bool log *logging.Logger disp *msgDispatcher factory MsgFactory @@ -66,9 +67,12 @@ func NewServer(address string, factory MsgFactory, log *logging.Logger, handlers } func (s *MsgServer) Run() error { - for { + for !s.isClosed { conn, err := s.listener.AcceptUnix() if err != nil { + if s.isClosed { + return nil + } return err } if err := setPassCred(conn); err != nil { @@ -90,6 +94,10 @@ func (s *MsgServer) Run() error { } func (s *MsgServer) Close() error { + if s.isClosed { + return nil + } + s.isClosed = true s.disp.close() close(s.done) return s.listener.Close()