浏览代码

Merge pull request #284 from cnlh/master

pr merge to dev
ffdfgdfg 5 年之前
父节点
当前提交
674a178506
共有 7 个文件被更改,包括 15 次插入2 次删除
  1. 1 0
      bridge/bridge.go
  2. 2 0
      client/control.go
  3. 1 0
      client/local.go
  4. 1 0
      lib/common/util.go
  5. 2 1
      lib/mux/mux.go
  6. 6 1
      lib/mux/queue.go
  7. 2 0
      server/server.go

+ 1 - 0
bridge/bridge.go

@@ -342,6 +342,7 @@ func (s *Bridge) SendLinkInfo(clientId int, link *conn.Link, t *file.Tunnel) (ta
 
 func (s *Bridge) ping() {
 	ticker := time.NewTicker(time.Second * 5)
+	defer ticker.Stop()
 	for {
 		select {
 		case <-ticker.C:

+ 2 - 0
client/control.go

@@ -369,6 +369,7 @@ func sendP2PTestMsg(localConn *net.UDPConn, remoteAddr1, remoteAddr2, remoteAddr
 		}
 		logs.Trace("try send test packet to target %s", addr)
 		ticker := time.NewTicker(time.Millisecond * 500)
+		defer ticker.Stop()
 		for {
 			select {
 			case <-ticker.C:
@@ -394,6 +395,7 @@ func sendP2PTestMsg(localConn *net.UDPConn, remoteAddr1, remoteAddr2, remoteAddr
 						return
 					}
 					ticker := time.NewTicker(time.Second * 2)
+					defer ticker.Stop()
 					for {
 						select {
 						case <-ticker.C:

+ 1 - 0
client/local.go

@@ -117,6 +117,7 @@ func StartLocalServer(l *config.LocalServer, config *config.CommonConfig) error
 
 func handleUdpMonitor(config *config.CommonConfig, l *config.LocalServer) {
 	ticker := time.NewTicker(time.Second * 1)
+	defer ticker.Stop()
 	for {
 		select {
 		case <-ticker.C:

+ 1 - 0
lib/common/util.go

@@ -121,6 +121,7 @@ func ReadAllFromFile(filePath string) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
+	defer f.Close()
 	return ioutil.ReadAll(f)
 }
 

+ 2 - 1
lib/mux/mux.go

@@ -173,9 +173,9 @@ func (s *Mux) ping() {
 		s.sendInfo(common.MUX_PING_FLAG, common.MUX_PING, now)
 		// send the ping flag and get the latency first
 		ticker := time.NewTicker(time.Second * 5)
+    defer ticker.Stop()
 		for {
 			if s.IsClose {
-				ticker.Stop()
 				break
 			}
 			select {
@@ -198,6 +198,7 @@ func (s *Mux) ping() {
 			}
 			atomic.AddUint32(&s.pingOk, 1)
 		}
+    return
 	}()
 }
 

+ 6 - 1
lib/mux/queue.go

@@ -209,10 +209,15 @@ func NewListElement(buf []byte, l uint16, part bool) (element *common.ListElemen
 }
 
 type ReceiveWindowQueue struct {
-	lengthWait uint64
 	chain      *bufChain
 	stopOp     chan struct{}
 	readOp     chan struct{}
+	lengthWait uint64 // really strange ???? need put here
+	// https://golang.org/pkg/sync/atomic/#pkg-note-BUG
+	// On non-Linux ARM, the 64-bit functions use instructions unavailable before the ARMv6k core.
+	// On ARM, x86-32, and 32-bit MIPS, it is the caller's responsibility
+	// to arrange for 64-bit alignment of 64-bit words accessed atomically.
+	// The first word in a variable or in an allocated struct, array, or slice can be relied upon to be 64-bit aligned.
 	timeout    time.Time
 }
 

+ 2 - 0
server/server.go

@@ -109,6 +109,7 @@ func StartNewServer(bridgePort int, cnf *file.Tunnel, bridgeType string) {
 
 func dealClientFlow() {
 	ticker := time.NewTicker(time.Minute)
+	defer ticker.Stop()
 	for {
 		select {
 		case <-ticker.C:
@@ -430,6 +431,7 @@ func GetDashboardData() map[string]interface{} {
 
 func flowSession(m time.Duration) {
 	ticker := time.NewTicker(m)
+	defer ticker.Stop()
 	for {
 		select {
 		case <-ticker.C: