mirror of
https://github.com/minio/minio.git
synced 2025-11-07 04:42:56 -05:00
Fix an issue with reusing closed network connetion, changing the way rateLimitedListener is initialized
This commit is contained in:
@@ -27,7 +27,10 @@ import (
|
||||
// rateLimitedListener returns a Listener that accepts at most n simultaneous
|
||||
// connections from the provided Listener.
|
||||
func rateLimitedListener(l net.Listener, nconn int) net.Listener {
|
||||
return &rateLimitListener{l, make(chan struct{}, nconn)}
|
||||
if nconn > 0 {
|
||||
return &rateLimitListener{l, make(chan struct{}, nconn)}
|
||||
}
|
||||
return l
|
||||
}
|
||||
|
||||
type rateLimitListener struct {
|
||||
|
||||
@@ -92,11 +92,11 @@ func (n *minNet) getInheritedListeners() error {
|
||||
l, err := net.FileListener(file)
|
||||
if err != nil {
|
||||
file.Close()
|
||||
retErr = fmt.Errorf("error inheriting socket fd %d: %s", i, err)
|
||||
retErr = iodine.New(fmt.Errorf("error inheriting socket fd %d: %s", i, err), nil)
|
||||
return
|
||||
}
|
||||
if err := file.Close(); err != nil {
|
||||
retErr = fmt.Errorf("error closing inherited socket fd %d: %s", i, err)
|
||||
retErr = iodine.New(fmt.Errorf("error closing inherited socket fd %d: %s", i, err), nil)
|
||||
return
|
||||
}
|
||||
n.inheritedListeners = append(n.inheritedListeners, l)
|
||||
@@ -159,10 +159,7 @@ func (n *minNet) ListenTCP(nett string, laddr *net.TCPAddr) (net.Listener, error
|
||||
if err != nil {
|
||||
return nil, iodine.New(err, nil)
|
||||
}
|
||||
if n.connLimit > 0 {
|
||||
l = rateLimitedListener(l, n.connLimit)
|
||||
}
|
||||
n.activeListeners = append(n.activeListeners, l)
|
||||
n.activeListeners = append(n.activeListeners, rateLimitedListener(l, n.connLimit))
|
||||
return l, nil
|
||||
}
|
||||
|
||||
@@ -197,10 +194,7 @@ func (n *minNet) ListenUnix(nett string, laddr *net.UnixAddr) (net.Listener, err
|
||||
if err != nil {
|
||||
return nil, iodine.New(err, nil)
|
||||
}
|
||||
if n.connLimit > 0 {
|
||||
l = rateLimitedListener(l, n.connLimit)
|
||||
}
|
||||
n.activeListeners = append(n.activeListeners, l)
|
||||
n.activeListeners = append(n.activeListeners, rateLimitedListener(l, n.connLimit))
|
||||
return l, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user