mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	* Prevent double waitgroup decrement Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		@@ -12,6 +12,7 @@ import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"sync/atomic"
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
@@ -215,9 +216,12 @@ func (wl *wrappedListener) Accept() (net.Conn, error) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	closed := int32(0)
 | 
			
		||||
 | 
			
		||||
	c = wrappedConn{
 | 
			
		||||
		Conn:   c,
 | 
			
		||||
		server: wl.server,
 | 
			
		||||
		closed: &closed,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	wl.server.wg.Add(1)
 | 
			
		||||
@@ -241,12 +245,12 @@ func (wl *wrappedListener) File() (*os.File, error) {
 | 
			
		||||
type wrappedConn struct {
 | 
			
		||||
	net.Conn
 | 
			
		||||
	server *Server
 | 
			
		||||
	closed *int32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w wrappedConn) Close() error {
 | 
			
		||||
	err := w.Conn.Close()
 | 
			
		||||
	if err == nil {
 | 
			
		||||
	if atomic.CompareAndSwapInt32(w.closed, 0, 1) {
 | 
			
		||||
		w.server.wg.Done()
 | 
			
		||||
	}
 | 
			
		||||
	return err
 | 
			
		||||
	return w.Conn.Close()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user