Browse Source

frps: update

fatedier 8 years ago
parent
commit
90d1384bf7
2 changed files with 7 additions and 4 deletions
  1. 2 0
      src/models/server/config.go
  2. 5 4
      src/models/server/server.go

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

@@ -395,7 +395,9 @@ func CreateProxy(s *ProxyServer) error {
 		if oldServer.Status == consts.Working {
 			return fmt.Errorf("this proxy is already working now")
 		}
+		oldServer.Lock()
 		oldServer.Release()
+		oldServer.Unlock()
 		if oldServer.PrivilegeMode {
 			delete(ProxyServers, s.Name)
 		}

+ 5 - 4
src/models/server/server.go

@@ -276,10 +276,14 @@ func (p *ProxyServer) Start(c *conn.Conn) (err error) {
 }
 
 func (p *ProxyServer) Close() {
+	p.Lock()
+	defer p.Unlock()
+
+	oldStatus := p.Status
 	p.Release()
 
 	// if the proxy created by PrivilegeMode, delete it when closed
-	if p.PrivilegeMode {
+	if p.PrivilegeMode && oldStatus != consts.Closed {
 		// NOTE: this will take the global ProxyServerMap's lock
 		// if we only want to release resources, use Release() instead
 		DeleteProxy(p.Name)
@@ -287,9 +291,6 @@ func (p *ProxyServer) Close() {
 }
 
 func (p *ProxyServer) Release() {
-	p.Lock()
-	defer p.Unlock()
-
 	if p.Status != consts.Closed {
 		p.Status = consts.Closed
 		for _, l := range p.listeners {