From 106b628e6c2e7199be88ff4975159e205f5482a7 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sun, 30 Aug 2020 14:27:26 +0200 Subject: [PATCH] fix pprof closing --- main.go | 50 ++++++++++++++++++++++++++++++-------------------- pprof.go | 5 +++++ 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/main.go b/main.go index af51ba98..c730863a 100644 --- a/main.go +++ b/main.go @@ -248,25 +248,6 @@ func newProgram(args []string, stdin io.Reader) (*program, error) { return nil, err } - if p.metrics != nil { - go p.metrics.run() - } - - if p.pprof != nil { - go p.pprof.run() - } - - if _, ok := conf.protocolsParsed[gortsplib.StreamProtocolUdp]; ok { - go p.serverRtp.run() - go p.serverRtcp.run() - } - - go p.serverRtsp.run() - - for _, p := range p.paths { - p.onInit() - } - go p.run() return p, nil @@ -285,6 +266,28 @@ func (p *program) log(format string, args ...interface{}) { } func (p *program) run() { + if p.metrics != nil { + go p.metrics.run() + } + + if p.pprof != nil { + go p.pprof.run() + } + + if p.serverRtp != nil { + go p.serverRtp.run() + } + + if p.serverRtcp != nil { + go p.serverRtcp.run() + } + + go p.serverRtsp.run() + + for _, p := range p.paths { + p.onInit() + } + checkPathsTicker := time.NewTicker(5 * time.Second) defer checkPathsTicker.Stop() @@ -520,8 +523,11 @@ outer: p.serverRtsp.close() - if _, ok := p.conf.protocolsParsed[gortsplib.StreamProtocolUdp]; ok { + if p.serverRtcp != nil { p.serverRtcp.close() + } + + if p.serverRtp != nil { p.serverRtp.close() } @@ -534,6 +540,10 @@ outer: p.metrics.close() } + if p.pprof != nil { + p.pprof.close() + } + if p.logFile != nil { p.logFile.Close() } diff --git a/pprof.go b/pprof.go index 93180b8d..19185809 100644 --- a/pprof.go +++ b/pprof.go @@ -1,6 +1,7 @@ package main import ( + "context" "net" "net/http" _ "net/http/pprof" @@ -39,3 +40,7 @@ func (pp *pprof) run() { panic(err) } } + +func (pp *pprof) close() { + pp.server.Shutdown(context.Background()) +}