Browse Source

prevent sending on a closed channel in vhost package, fix #502

fatedier 7 years ago
parent
commit
ad858a0d32
1 changed files with 7 additions and 1 deletions
  1. 7 1
      utils/vhost/vhost.go

+ 7 - 1
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 {