瀏覽代碼

frps: fix a panic bug caused by reading map

fatedier 8 年之前
父節點
當前提交
52fe721202
共有 2 個文件被更改,包括 9 次插入2 次删除
  1. 2 2
      src/cmd/frps/control.go
  2. 7 0
      src/models/server/config.go

+ 2 - 2
src/cmd/frps/control.go

@@ -94,7 +94,7 @@ func controlWorker(c *conn.Conn) {
 		return
 	}
 
-	s, ok := server.ProxyServers[cliReq.ProxyName]
+	s, ok := server.GetProxyServer(cliReq.ProxyName)
 	if !ok {
 		log.Warn("ProxyName [%s] does not exist now", cliReq.ProxyName)
 		return
@@ -212,7 +212,7 @@ func doLogin(req *msg.ControlReq, c *conn.Conn) (ret int64, info string) {
 		s  *server.ProxyServer
 		ok bool
 	)
-	s, ok = server.ProxyServers[req.ProxyName]
+	s, ok = server.GetProxyServer(req.ProxyName)
 	if req.PrivilegeMode && req.Type == consts.NewCtlConn {
 		log.Debug("ProxyName [%s], doLogin and privilege mode is enabled", req.ProxyName)
 	} else {

+ 7 - 0
src/models/server/config.go

@@ -392,3 +392,10 @@ func DeleteProxy(proxyName string) {
 	defer ProxyServersMutex.Unlock()
 	delete(ProxyServers, proxyName)
 }
+
+func GetProxyServer(proxyName string) (p *ProxyServer, ok bool) {
+	ProxyServersMutex.RLock()
+	defer ProxyServersMutex.RUnlock()
+	p, ok = ProxyServers[proxyName]
+	return
+}