From 0e799c26ba322e8e1dd1e5acd1367341c0452987 Mon Sep 17 00:00:00 2001
From: zeripath <art27@cantab.net>
Date: Mon, 27 Apr 2020 01:01:06 +0100
Subject: [PATCH] Prevent panic during wrappedConn close at hammertime (#11219)

* Prevent panic during wrappedConn close at hammertime

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Update modules/graceful/server.go

* Fix extraneous debug in goldmark.go

Signed-off-by: Andrew Thornton <art27@cantab.net>
---
 modules/graceful/server.go          | 11 +++++++++++
 modules/markup/markdown/goldmark.go |  1 -
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/modules/graceful/server.go b/modules/graceful/server.go
index 09be933999..4d0d8677f0 100644
--- a/modules/graceful/server.go
+++ b/modules/graceful/server.go
@@ -250,6 +250,17 @@ type wrappedConn struct {
 
 func (w wrappedConn) Close() error {
 	if atomic.CompareAndSwapInt32(w.closed, 0, 1) {
+		defer func() {
+			if err := recover(); err != nil {
+				select {
+				case <-GetManager().IsHammer():
+					// Likely deadlocked request released at hammertime
+					log.Warn("Panic during connection close! %v. Likely there has been a deadlocked request which has been released by forced shutdown.", err)
+				default:
+					log.Error("Panic during connection close! %v", err)
+				}
+			}
+		}()
 		w.server.wg.Done()
 	}
 	return w.Conn.Close()
diff --git a/modules/markup/markdown/goldmark.go b/modules/markup/markdown/goldmark.go
index 8974504a79..6a40a86836 100644
--- a/modules/markup/markdown/goldmark.go
+++ b/modules/markup/markdown/goldmark.go
@@ -328,7 +328,6 @@ func (r *HTMLRenderer) renderIcon(w util.BufWriter, source []byte, node ast.Node
 func (r *HTMLRenderer) renderTaskCheckBoxListItem(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) {
 	n := node.(*TaskCheckBoxListItem)
 	if entering {
-		n.Dump(source, 0)
 		if n.Attributes() != nil {
 			_, _ = w.WriteString("<li")
 			html.RenderAttributes(w, n, html.ListItemAttributeFilter)