Prechádzať zdrojové kódy

Merge pull request #184 from fatedier/fatedier/udp

udp: fix privilege_mode not success for udp type
fatedier 8 rokov pred
rodič
commit
d7d2b72431

+ 2 - 1
src/models/client/client.go

@@ -55,9 +55,10 @@ func (pc *ProxyClient) StartUdpTunnelOnce(addr string, port int64) {
 				}
 				if err != nil {
 					log.Error("ProxyName [%s], udp tunnel connect to server [%s:%d] error, %v", pc.Name, addr, port, err)
-					time.Sleep(5 * time.Second)
+					time.Sleep(10 * time.Second)
 					continue
 				}
+				log.Info("ProxyName [%s], udp tunnel reconnect to server [%s:%d] success", pc.Name, addr, port)
 
 				nowTime := time.Now().Unix()
 				req := &msg.ControlReq{

+ 1 - 1
src/models/client/config.go

@@ -199,7 +199,7 @@ func LoadConf(confFile string) (err error) {
 					proxyClient.PrivilegeToken = PrivilegeToken
 				}
 
-				if proxyClient.Type == "tcp" {
+				if proxyClient.Type == "tcp" || proxyClient.Type == "udp" {
 					// remote_port
 					tmpStr, ok = section["remote_port"]
 					if ok {

+ 6 - 6
src/models/server/server.go

@@ -69,7 +69,7 @@ func NewProxyServerFromCtlMsg(req *msg.ControlReq) (p *ProxyServer) {
 	p.PrivilegeMode = req.PrivilegeMode
 	p.PrivilegeToken = PrivilegeToken
 	p.BindAddr = BindAddr
-	if p.Type == "tcp" {
+	if p.Type == "tcp" || p.Type == "udp" {
 		p.ListenPort = req.RemotePort
 	} else if p.Type == "http" {
 		p.ListenPort = VhostHttpPort
@@ -160,11 +160,6 @@ func (p *ProxyServer) Start(c *conn.Conn) (err error) {
 	p.Unlock()
 	metric.SetStatus(p.Name, p.Status)
 
-	// create connection pool if needed
-	if p.PoolCount > 0 {
-		go p.connectionPoolManager(p.closeChan)
-	}
-
 	if p.Type == "udp" {
 		// udp is special
 		p.udpConn, err = conn.ListenUDP(p.BindAddr, p.ListenPort)
@@ -191,6 +186,11 @@ func (p *ProxyServer) Start(c *conn.Conn) (err error) {
 			}
 		}()
 	} else {
+		// create connection pool if needed
+		if p.PoolCount > 0 {
+			go p.connectionPoolManager(p.closeChan)
+		}
+
 		// start a goroutine for every listener to accept user connection
 		for _, listener := range p.listeners {
 			go func(l Listener) {