Skip to content
Snippets Groups Projects
Unverified Commit a5515382 authored by Kamil Trzcinski's avatar Kamil Trzcinski
Browse files

Use accelerated link verification using only e-tag

parent 94a3f42f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -4,6 +4,8 @@ import (
"errors"
"fmt"
"strings"
"crypto/md5"
"encoding/hex"
)
 
func analyzeLink(args []string) (string, error) {
Loading
Loading
@@ -40,3 +42,26 @@ func readLink(path string) (string, error) {
 
return link, nil
}
func verifyLink(link string, info fileInfo) error {
// If we have e-tag, let's verify e-tag
if info.etag != "" {
content := "sha256:" + link
hash := md5.Sum([]byte(content))
hex := hex.EncodeToString(hash[:])
if info.etag == hex {
return nil
}
}
readed, err := readLink(info.path)
if err != nil {
return err
}
if readed != link {
return fmt.Errorf("readed link for %s is not equal %s", link, readed)
}
return nil
}
Loading
Loading
@@ -131,15 +131,11 @@ func (r *repositoryData) addLayer(args []string, info fileInfo) error {
return err
}
 
readLink, err := readLink(r.layerLinkPath(link))
err = verifyLink(link, info)
if err != nil {
return err
}
 
if readLink != link {
return fmt.Errorf("read link for %s is not equal %s", link, readLink)
}
r.layers[link] = 0
return nil
}
Loading
Loading
@@ -151,15 +147,11 @@ func (r *repositoryData) addManifestRevision(args []string, info fileInfo) error
return err
}
 
readLink, err := readLink(r.manifestRevisionPath(link))
err = verifyLink(link, info)
if err != nil {
return err
}
 
if readLink != link {
return fmt.Errorf("read link for %s is not equal %s", link, readLink)
}
r.manifests[link] = 0
return nil
}
Loading
Loading
package main
 
import (
"fmt"
"path/filepath"
)
 
Loading
Loading
@@ -54,15 +53,11 @@ func (t *tag) addVersion(args []string, info fileInfo) error {
return err
}
 
readLink, err := readLink(t.versionLinkPath(link))
err = verifyLink(link, info)
if err != nil {
return err
}
 
if readLink != link {
return fmt.Errorf("read link for %s is not equal %s", link, readLink)
}
t.versions = append(t.versions, link)
return nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment