func (s *dockerImageSource) ensureManifestIsLoaded(ctx context.Context) error {
	if s.cachedManifest != nil {
		return nil
	}

	reference, err := s.ref.tagOrDigest()
	if err != nil {
		return err
	}

	manblob, mt, err := s.fetchManifest(ctx, reference)
	if err != nil {
		return err
	}
	// We might validate manblob against the Docker-Content-Digest header here to protect against transport errors.
	s.cachedManifest = manblob
	s.cachedManifestMIMEType = mt
	return nil
}
func (s *dockerImageSource) ensureManifestIsLoaded(ctx context.Context) error {
	if s.cachedManifest != nil {
		return nil
	}

	reference, err := s.ref.tagOrDigest()
	if err != nil {
		return err
	}

	manblob, mt, err := s.fetchManifest(ctx, reference)
	if err != nil {
		return err
	}
	
	s.cachedManifest = manblob
	s.cachedManifestMIMEType = mt
	return nil
}
func ( s * dockerImageSource ) ensureManifestIsLoaded ( ctx context . Context ) error { if s . cachedManifest != nil { return nil } reference , err := s . ref . tagOrDigest ( ) if err != nil { return err } manblob , mt , err := s . fetchManifest ( ctx , reference ) if err != nil { return err } // We might validate manblob against the Docker-Content-Digest header here to protect against transport errors. s . cachedManifest = manblob s . cachedManifestMIMEType = mt return nil }
// ensureManifestIsLoaded sets s.cachedManifest and s.cachedManifestMIMEType
//
// ImageSource implementations are not required or expected to do any caching,
// but because our signatures are “attached” to the manifest digest,
// we need to ensure that the digest of the manifest returned by GetManifest(ctx, nil)
// and used by GetSignatures(ctx, nil) are consistent, otherwise we would get spurious
// signature verification failures when pulling while a tag is being updated.
ensureManifestIsLoaded sets s . cachedManifest and s . cachedManifestMIMEType ImageSource implementations are not required or expected to do any caching but because our signatures are “attached” to the manifest digest we need to ensure that the digest of the manifest returned by GetManifest ( ctx nil ) and used by GetSignatures ( ctx nil ) are consistent otherwise we would get spurious signature verification failures when pulling while a tag is being updated .