Commit b4ea8f84 authored by Marin Jankovski's avatar Marin Jankovski

Fix leftovers after middleware concept merge.

parent 43b75c8c
......@@ -16,7 +16,7 @@ import (
"time"
)
func handleGetArchive(w http.ResponseWriter, r *gitRequest, format string) (callback *gitRequest) {
func handleGetArchive(w http.ResponseWriter, r *gitRequest, format string) {
archiveFilename := path.Base(r.ArchivePath)
if cachedArchive, err := os.Open(r.ArchivePath); err == nil {
......
......@@ -12,7 +12,7 @@ import (
"strings"
)
func handleGetInfoRefs(w http.ResponseWriter, r *gitRequest, _ string) (callback *gitRequest) {
func handleGetInfoRefs(w http.ResponseWriter, r *gitRequest, _ string) {
rpc := r.URL.Query().Get("service")
if !(rpc == "git-upload-pack" || rpc == "git-receive-pack") {
// The 'dumb' Git HTTP protocol is not supported
......@@ -58,7 +58,7 @@ func handleGetInfoRefs(w http.ResponseWriter, r *gitRequest, _ string) (callback
return
}
func handlePostRPC(w http.ResponseWriter, r *gitRequest, rpc string) (callback *gitRequest) {
func handlePostRPC(w http.ResponseWriter, r *gitRequest, rpc string) {
var body io.ReadCloser
var err error
......
......@@ -23,7 +23,7 @@ var (
errSizeMismatch = errors.New("Content size does not match")
)
func handleStoreLfsObject(w http.ResponseWriter, r *gitRequest, rpc string) (callback *gitRequest) {
func handleStoreLfsObject(w http.ResponseWriter, r *gitRequest, rpc string) {
var body io.ReadCloser
urlPath := r.URL.Path
......@@ -42,63 +42,64 @@ func handleStoreLfsObject(w http.ResponseWriter, r *gitRequest, rpc string) (cal
storePath := filepath.Join(r.StoreLFSPath, transformKey(oid))
if _, err := os.Stat(storePath); os.IsNotExist(err) {
var err error
tmpPath := filepath.Join(r.StoreLFSPath, "tmp", oid)
// TODO try removing gzip, possibly not needed
// The client request body may have been gzipped.
if r.Header.Get("Content-Encoding") == "gzip" {
body, err = gzip.NewReader(r.Body)
if err != nil {
fail500(w, "Couldn't handle LFS upload request.", err)
return
if _, err := os.Stat(tmpPath); os.IsNotExist(err) {
// TODO try removing gzip, possibly not needed
// The client request body may have been gzipped.
if r.Header.Get("Content-Encoding") == "gzip" {
body, err = gzip.NewReader(r.Body)
if err != nil {
fail500(w, "Couldn't handle LFS upload request.", err)
return
}
} else {
body = r.Body
}
} else {
body = r.Body
}
defer body.Close()
defer body.Close()
// TODO maybe set dir permissions to 700
dir := filepath.Dir(tmpPath)
if err := os.MkdirAll(dir, 0750); err != nil {
fail500(w, "Couldn't create directory for storing LFS objects.", err)
return
}
// TODO maybe set dir permissions to 700
dir := filepath.Dir(tmpPath)
if err := os.MkdirAll(dir, 0750); err != nil {
fail500(w, "Couldn't create directory for storing LFS objects.", err)
return
}
// TODO use go library for creating TMP files
file, err := os.OpenFile(tmpPath, os.O_CREATE|os.O_WRONLY|os.O_EXCL, 0640)
if err != nil {
fail500(w, "Couldn't open tmp file for writing.", err)
return
}
// defer os.Remove(tmpPath)
defer file.Close()
// TODO use go library for creating TMP files
file, err := os.OpenFile(tmpPath, os.O_CREATE|os.O_WRONLY|os.O_EXCL, 0640)
if err != nil {
fail500(w, "Couldn't open tmp file for writing.", err)
return
}
// defer os.Remove(tmpPath)
defer file.Close()
hash := sha256.New()
hw := io.MultiWriter(hash, file)
hash := sha256.New()
hw := io.MultiWriter(hash, file)
written, err := io.Copy(hw, body)
if err != nil {
fail500(w, "Failed to save received LFS object.", err)
return
}
file.Close()
written, err := io.Copy(hw, body)
if err != nil {
fail500(w, "Failed to save received LFS object.", err)
return
}
file.Close()
sizeInt, err := strconv.ParseInt(size, 10, 64)
if err != nil {
fail500(w, "Couldn't read size: ", err)
return
}
sizeInt, err := strconv.ParseInt(size, 10, 64)
if err != nil {
fail500(w, "Couldn't read size: ", err)
return
}
if written != sizeInt {
fail500(w, "Inconsistent size: ", errSizeMismatch)
return
}
if written != sizeInt {
fail500(w, "Inconsistent size: ", errSizeMismatch)
return
}
shaStr := hex.EncodeToString(hash.Sum(nil))
if shaStr != oid {
fail500(w, "Inconsistent size: ", errSizeMismatch)
return
shaStr := hex.EncodeToString(hash.Sum(nil))
if shaStr != oid {
fail500(w, "Inconsistent size: ", errSizeMismatch)
return
}
}
}
// if err := os.Rename(tmpPath, path); err != nil {
......@@ -108,11 +109,11 @@ func handleStoreLfsObject(w http.ResponseWriter, r *gitRequest, rpc string) (cal
log.Printf("Received the LFS object from client, oid: %s", oid)
return r
return
}
func handleRetreiveLfsObject(w http.ResponseWriter, r *gitRequest, rpc string) (callback *gitRequest) {
func handleRetreiveLfsObject(w http.ResponseWriter, r *gitRequest, rpc string) {
log.Printf("I should download %s", r)
urlPath := r.URL.Path
......
......@@ -179,4 +179,3 @@ func looksLikeRepo(p string) bool {
}
return true
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment