diff options
-rw-r--r-- | routers/repo/http.go | 15 |
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 } |