From 17c5e12e6e66da987677384dc734da7c69d1104e Mon Sep 17 00:00:00 2001
From: Matthias Loibl <mail@matthiasloibl.com>
Date: Sun, 5 Feb 2017 14:06:25 +0100
Subject: [PATCH] Add ENABLE_PPROF to app.ini and start pprof if true on
 localhost:6060 (#801)

* Add ENABLE_PPROF to app.ini and start pprof if true on localhost:6060

* Add comment for golint to blank pprof import
---
 cmd/web.go                 | 7 +++++++
 modules/setting/setting.go | 4 +++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/cmd/web.go b/cmd/web.go
index 0af338ee21..edf8ccafe1 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -9,6 +9,7 @@ import (
 	"net"
 	"net/http"
 	"net/http/fcgi"
+	_ "net/http/pprof" // Used for debugging if enabled and a web server is running
 	"os"
 	"path"
 	"strings"
@@ -645,6 +646,12 @@ func runWeb(ctx *cli.Context) error {
 		log.Info("LFS server enabled")
 	}
 
+	if setting.EnablePprof {
+		go func() {
+			log.Info("%v", http.ListenAndServe("localhost:6060", nil))
+		}()
+	}
+
 	var err error
 	switch setting.Protocol {
 	case setting.HTTP:
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index 51f5c2a454..1cbb3eac0a 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -30,7 +30,7 @@ import (
 	_ "github.com/go-macaron/cache/redis"
 	"github.com/go-macaron/session"
 	_ "github.com/go-macaron/session/redis" // redis plugin for store session
-	"gopkg.in/ini.v1"
+	ini "gopkg.in/ini.v1"
 	"strk.kbt.io/projects/go/libravatar"
 )
 
@@ -79,6 +79,7 @@ var (
 	EnableGzip           bool
 	LandingPageURL       LandingPage
 	UnixSocketPermission uint32
+	EnablePprof          bool
 
 	SSH = struct {
 		Disabled            bool           `ini:"DISABLE_SSH"`
@@ -591,6 +592,7 @@ please consider changing to GITEA_CUSTOM`)
 	StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString(workDir)
 	AppDataPath = sec.Key("APP_DATA_PATH").MustString("data")
 	EnableGzip = sec.Key("ENABLE_GZIP").MustBool()
+	EnablePprof = sec.Key("ENABLE_PPROF").MustBool(false)
 
 	switch sec.Key("LANDING_PAGE").MustString("home") {
 	case "explore":