From 9206d7a741e0dda02f048d8f9d8c7814b55c9dab Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Mon, 27 Feb 2017 21:34:35 +0100 Subject: [PATCH] fix sync issue in time calculation --- app/proxyman/inbound/worker.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/proxyman/inbound/worker.go b/app/proxyman/inbound/worker.go index 81730b4f6..3310a0627 100644 --- a/app/proxyman/inbound/worker.go +++ b/app/proxyman/inbound/worker.go @@ -89,9 +89,8 @@ func (w *tcpWorker) handleConnections(conns <-chan internet.Connection) { select { case <-w.ctx.Done(): w.hub.Close() - nconns := len(conns) L: - for i := 0; i < nconns; i++ { + for { select { case conn := <-conns: conn.Close() @@ -295,7 +294,7 @@ func (w *udpWorker) monitor() { nowSec := time.Now().Unix() w.Lock() for addr, conn := range w.activeConn { - if nowSec-conn.lastActivityTime > 8 { + if nowSec-atomic.LoadInt64(&conn.lastActivityTime) > 8 { delete(w.activeConn, addr) conn.cancel() }