summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2022-02-06 19:28:25 +0000
committerGitHub <noreply@github.com>2022-02-06 20:28:25 +0100
commita6e657e99979f94d1d663a0bc2b7945f3c1018dc (patch)
treed378100e21399694eba7b3d51e7206fd186a5c30 /modules
parent3043eb36bfcd7ddf29202b958b91942826a8182b (diff)
downloadgitea-a6e657e99979f94d1d663a0bc2b7945f3c1018dc.tar.gz
gitea-a6e657e99979f94d1d663a0bc2b7945f3c1018dc.zip
If rendering has failed due to a net.OpError stop rendering (#18642)
When a net.OpError occurs during rendering the underlying connection is essentially dead and therefore attempting to render further data will only cause further errors. Therefore in serverErrorInternal detect if the passed in error is an OpError and if so do not attempt any further rendering. Fix #18629 Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'modules')
-rw-r--r--modules/context/context.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/modules/context/context.go b/modules/context/context.go
index 6c7f648519..887cffdbf9 100644
--- a/modules/context/context.go
+++ b/modules/context/context.go
@@ -9,9 +9,11 @@ import (
"context"
"crypto/sha256"
"encoding/hex"
+ "errors"
"html"
"html/template"
"io"
+ "net"
"net/http"
"net/url"
"path"
@@ -265,6 +267,12 @@ func (ctx *Context) ServerError(logMsg string, logErr error) {
func (ctx *Context) serverErrorInternal(logMsg string, logErr error) {
if logErr != nil {
log.ErrorWithSkip(2, "%s: %v", logMsg, logErr)
+ if errors.Is(logErr, &net.OpError{}) {
+ // This is an error within the underlying connection
+ // and further rendering will not work so just return
+ return
+ }
+
if !setting.IsProd {
ctx.Data["ErrorMsg"] = logErr
}