in image/resources/knfsd-fsidd/socket.go [66:97]
func resolveSocket(socketPath string) (*server, error) {
files := activation.Files(true)
defer func() {
for _, f := range files {
// We have to close the files when we have finished with them.
// This will not affect any listeners, as the listener will create
// a new file descriptor.
f.Close()
}
}()
switch len(files) {
case 0:
// Delete the old socket file if it already exists in case a previous
// process was not gracefully terminated.
err := os.Remove(socketPath)
if errors.Is(err, os.ErrNotExist) {
err = nil
}
if err != nil {
return nil, err
}
return newServer(socketPath)
case 1:
if files[0] == nil {
return nil, ErrInvalidFileDescriptor
}
return newServerFromFile(files[0])
default:
return nil, ErrTooManySockets
}
}