Use defer Unlock() in ListAndServe

This commit is contained in:
Miek Gieben 2015-08-12 07:49:41 +01:00
parent 42fa711b14
commit d2cb5e8fef
1 changed files with 1 additions and 3 deletions

View File

@ -286,6 +286,7 @@ func (srv *Server) ListenAndServe() error {
srv.lock.Unlock() srv.lock.Unlock()
return &Error{err: "server already started"} return &Error{err: "server already started"}
} }
defer srv.lock.Unlock()
srv.stopUDP, srv.stopTCP = make(chan bool), make(chan bool) srv.stopUDP, srv.stopTCP = make(chan bool), make(chan bool)
srv.started = true srv.started = true
addr := srv.Addr addr := srv.Addr
@ -306,7 +307,6 @@ func (srv *Server) ListenAndServe() error {
return e return e
} }
srv.Listener = l srv.Listener = l
srv.lock.Unlock()
return srv.serveTCP(l) return srv.serveTCP(l)
case "udp", "udp4", "udp6": case "udp", "udp4", "udp6":
a, e := net.ResolveUDPAddr(srv.Net, addr) a, e := net.ResolveUDPAddr(srv.Net, addr)
@ -321,10 +321,8 @@ func (srv *Server) ListenAndServe() error {
return e return e
} }
srv.PacketConn = l srv.PacketConn = l
srv.lock.Unlock()
return srv.serveUDP(l) return srv.serveUDP(l)
} }
srv.lock.Unlock()
return &Error{err: "bad network"} return &Error{err: "bad network"}
} }