修复潜在BUG

This commit is contained in:
user123456
2025-06-13 08:46:24 +08:00
parent 80b3f8959f
commit 03b3c565b9

View File

@@ -106,7 +106,6 @@ func (is *ImageStreamer) getImageDescriptor(ref name.Reference, options []remote
if cachedItem := globalCache.Get(cacheKey); cachedItem != nil { if cachedItem := globalCache.Get(cacheKey); cachedItem != nil {
desc := &remote.Descriptor{ desc := &remote.Descriptor{
Manifest: cachedItem.Data, Manifest: cachedItem.Data,
MediaType: types.MediaType(cachedItem.ContentType),
} }
log.Printf("使用缓存的manifest: %s", ref.String()) log.Printf("使用缓存的manifest: %s", ref.String())
return desc, nil return desc, nil
@@ -278,6 +277,7 @@ func (is *ImageStreamer) streamDockerFormat(ctx context.Context, tarWriter *tar.
default: default:
} }
if err := func() error { // ✅ 匿名函数确保资源立即释放
digest, err := layer.Digest() digest, err := layer.Digest()
if err != nil { if err != nil {
return err return err
@@ -299,7 +299,7 @@ func (is *ImageStreamer) streamDockerFormat(ctx context.Context, tarWriter *tar.
if err != nil { if err != nil {
return err return err
} }
defer layerReader.Close() defer layerReader.Close() // ✅ 函数结束立即释放
size, err := layer.Size() size, err := layer.Size()
if err != nil { if err != nil {
@@ -320,6 +320,11 @@ func (is *ImageStreamer) streamDockerFormat(ctx context.Context, tarWriter *tar.
return err return err
} }
return nil
}(); err != nil {
return err
}
log.Printf("已处理层 %d/%d", i+1, len(layers)) log.Printf("已处理层 %d/%d", i+1, len(layers))
} }
@@ -394,7 +399,7 @@ func handleDirectImageDownload(c *gin.Context) {
imageRef := strings.ReplaceAll(imageParam, "_", "/") imageRef := strings.ReplaceAll(imageParam, "_", "/")
platform := c.Query("platform") platform := c.Query("platform")
tag := c.DefaultQuery("tag") tag := c.DefaultQuery("tag", "")
if tag != "" && !strings.Contains(imageRef, ":") && !strings.Contains(imageRef, "@") { if tag != "" && !strings.Contains(imageRef, ":") && !strings.Contains(imageRef, "@") {
imageRef = imageRef + ":" + tag imageRef = imageRef + ":" + tag