mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 18:28:37 +00:00
Graceful: Allow graceful restart for unix sockets (#9113)
Previously we could not handle graceful restarts for http over unix sockets. These can now be handled.
This commit is contained in:
@@ -16,6 +16,7 @@ import (
|
||||
"sync"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -165,15 +166,27 @@ func GetListenerUnix(network string, address *net.UnixAddr) (*net.UnixListener,
|
||||
if isSameAddr(l.Addr(), address) {
|
||||
providedListeners = append(providedListeners[:i], providedListeners[i+1:]...)
|
||||
activeListeners = append(activeListeners, l)
|
||||
return l.(*net.UnixListener), nil
|
||||
unixListener := l.(*net.UnixListener)
|
||||
unixListener.SetUnlinkOnClose(true)
|
||||
return unixListener, nil
|
||||
}
|
||||
}
|
||||
|
||||
// make a fresh listener
|
||||
if err := os.Remove(address.Name); err != nil && !os.IsNotExist(err) {
|
||||
return nil, fmt.Errorf("Failed to remove unix socket %s: %v", address.Name, err)
|
||||
}
|
||||
|
||||
l, err := net.ListenUnix(network, address)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fileMode := os.FileMode(setting.UnixSocketPermission)
|
||||
if err = os.Chmod(address.Name, fileMode); err != nil {
|
||||
return nil, fmt.Errorf("Failed to set permission of unix socket to %s: %v", fileMode.String(), err)
|
||||
}
|
||||
|
||||
activeListeners = append(activeListeners, l)
|
||||
return l, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user