Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.0 KiB
40 lines
1.0 KiB
// +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() |
|
}
|
|
|