func resolveSocket()

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
	}
}