From ad858a0d326e320c03dedac8b7516d8769d61c55 Mon Sep 17 00:00:00 2001 From: fatedier Date: Wed, 1 Nov 2017 10:51:30 +0800 Subject: [PATCH] prevent sending on a closed channel in vhost package, fix #502 --- utils/vhost/vhost.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/vhost/vhost.go b/utils/vhost/vhost.go index bb2b4ad..7e11d72 100644 --- a/utils/vhost/vhost.go +++ b/utils/vhost/vhost.go @@ -18,6 +18,7 @@ import ( "sync" "time" + "github.com/fatedier/frp/utils/errors" "github.com/fatedier/frp/utils/log" frpNet "github.com/fatedier/frp/utils/net" ) @@ -162,7 +163,12 @@ func (v *VhostMuxer) handle(c frpNet.Conn) { c = sConn l.Debug("get new http request host [%s] path [%s]", name, path) - l.accept <- c + err = errors.PanicToError(func() { + l.accept <- c + }) + if err != nil { + l.Warn("listener is already closed, ignore this request") + } } type Listener struct {