aboutsummaryrefslogtreecommitdiff
path: root/routers/repo/http.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/http.go')
-rw-r--r--routers/repo/http.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/routers/repo/http.go b/routers/repo/http.go
index 31d8ab13..6ee0a532 100644
--- a/routers/repo/http.go
+++ b/routers/repo/http.go
@@ -364,14 +364,23 @@ func serviceRPC(h serviceHandler, service string) {
}
if h.cfg.OnSucceed != nil {
- input, err = ioutil.ReadAll(reqBody)
+ tmpfile, err := ioutil.TempFile("", "gogs")
if err != nil {
- log.GitLogger.Error(2, "fail to read request body: %v", err)
+ log.GitLogger.Error(2, "fail to create temporary file: %v", err)
h.w.WriteHeader(http.StatusInternalServerError)
return
}
+ defer os.Remove(tmpfile.Name())
+ defer tmpfile.Close()
- br = bytes.NewReader(input)
+ _, err = io.Copy(tmpfile, reqBody)
+ if err != nil {
+ log.GitLogger.Error(2, "fail to save request body: %v", err)
+ h.w.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+
+ br = tmpfile
} else {
br = reqBody
}