Bladeren bron

fix: data races when accessing `github.com/fatedier/frp/client.(*Service).ctl` (#2891)

* fix: data race in client/service.go

* review fixes
Colin Adler 2 jaren geleden
bovenliggende
commit
6481870d03
1 gewijzigde bestanden met toevoegingen van 6 en 0 verwijderingen
  1. 6 0
      client/service.go

+ 6 - 0
client/service.go

@@ -356,6 +356,8 @@ func (svr *Service) ReloadConf(pxyCfgs map[string]config.ProxyConf, visitorCfgs
 	svr.visitorCfgs = visitorCfgs
 	svr.cfgMu.Unlock()
 
+	svr.ctlMu.RLock()
+	defer svr.ctlMu.RUnlock()
 	return svr.ctl.ReloadConf(pxyCfgs, visitorCfgs)
 }
 
@@ -365,8 +367,12 @@ func (svr *Service) Close() {
 
 func (svr *Service) GracefulClose(d time.Duration) {
 	atomic.StoreUint32(&svr.exit, 1)
+
+	svr.ctlMu.RLock()
 	if svr.ctl != nil {
 		svr.ctl.GracefulClose(d)
 	}
+	svr.ctlMu.RUnlock()
+
 	svr.cancel()
 }