mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// +build !windows
 | 
						|
 | 
						|
// Copyright 2019 The Gitea Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a MIT-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package graceful
 | 
						|
 | 
						|
import "sync"
 | 
						|
 | 
						|
var cleanupWaitGroup sync.WaitGroup
 | 
						|
 | 
						|
func init() {
 | 
						|
	cleanupWaitGroup = sync.WaitGroup{}
 | 
						|
 | 
						|
	// There are three places that could inherit sockets:
 | 
						|
	//
 | 
						|
	// * HTTP or HTTPS main listener
 | 
						|
	// * HTTP redirection fallback
 | 
						|
	// * SSH
 | 
						|
	//
 | 
						|
	// If you add an additional place you must increment this number
 | 
						|
	// and add a function to call InformCleanup if it's not going to be used
 | 
						|
	cleanupWaitGroup.Add(3)
 | 
						|
 | 
						|
	// Wait till we're done getting all of the listeners and then close
 | 
						|
	// the unused ones
 | 
						|
	go func() {
 | 
						|
		cleanupWaitGroup.Wait()
 | 
						|
		// Ignore the error here there's not much we can do with it
 | 
						|
		// They're logged in the CloseProvidedListeners function
 | 
						|
		_ = CloseProvidedListeners()
 | 
						|
	}()
 | 
						|
}
 | 
						|
 | 
						|
// InformCleanup tells the cleanup wait group that we have either taken a listener
 | 
						|
// or will not be taking a listener
 | 
						|
func InformCleanup() {
 | 
						|
	cleanupWaitGroup.Done()
 | 
						|
}
 |