Ensure that the WaitGroup isn't marked done twice when edgecase errors occurr

This commit is contained in:
rubyist 2013-11-03 13:03:01 -05:00
parent d2b7f5f03a
commit e068b65c78

View File

@ -60,10 +60,14 @@ type deadliner interface {
type conn struct {
net.Conn
wg *sync.WaitGroup
closed bool
}
func (c conn) Close() error {
func (c *conn) Close() error {
if !c.closed {
c.closed = true
defer c.wg.Done()
}
return c.Conn.Close()
}
@ -133,7 +137,7 @@ func (l *listener) Accept() (net.Conn, error) {
}
return nil, err
}
return conn{Conn: c, wg: &l.wg}, nil
return &conn{Conn: c, wg: &l.wg}, nil
}
type Process struct {