Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>

This commit is contained in:
arraykeys@gmail.com
2018-03-14 09:37:57 +08:00
parent bab4325414
commit 7f983152b7

View File

@ -11,7 +11,6 @@ import (
"snail007/proxy/utils"
"strconv"
"strings"
"sync"
"time"
"github.com/golang/snappy"
@ -23,9 +22,7 @@ type MuxServer struct {
udpChn chan MuxUDPItem
sc utils.ServerChannel
sessions utils.ConcurrentMap
userConns utils.ConcurrentMap
lockChn chan bool
closeLock *sync.Mutex
}
type MuxServerManager struct {
@ -123,8 +120,6 @@ func NewMuxServer() Service {
udpChn: make(chan MuxUDPItem, 50000),
lockChn: make(chan bool, 1),
sessions: utils.NewConcurrentMap(),
userConns: utils.NewConcurrentMap(),
closeLock: &sync.Mutex{},
}
}
@ -170,7 +165,6 @@ func (s *MuxServer) Start(args interface{}) (err error) {
}
}()
inConnRemoteAddr := inConn.RemoteAddr().String()
s.userConns.Set(inConnRemoteAddr, &inConn)
var outConn net.Conn
var ID string
for {
@ -185,7 +179,6 @@ func (s *MuxServer) Start(args interface{}) (err error) {
}
}
outConnRemoteAddr := outConn.RemoteAddr().String()
s.userConns.Set(outConnRemoteAddr, &outConn)
log.Printf("%s stream %s created", *s.cfg.Key, ID)
if *s.cfg.IsCompress {
@ -205,13 +198,9 @@ func (s *MuxServer) Start(args interface{}) (err error) {
}
outConn.Close()
inConn.Close()
s.userConns.Remove(inConnRemoteAddr)
s.userConns.Remove(outConnRemoteAddr)
log.Printf("%s stream %s released", *s.cfg.Key, ID)
} else {
utils.IoBind(inConn, outConn, func(err interface{}) {
s.userConns.Remove(inConnRemoteAddr)
s.userConns.Remove(outConnRemoteAddr)
log.Printf("%s stream %s released", *s.cfg.Key, ID)
})
}
@ -284,15 +273,6 @@ func (s *MuxServer) GetConn(index string) (conn net.Conn, err error) {
for {
if session.IsClosed() {
s.sessions.Remove(index)
s.closeLock.Lock()
if len(s.userConns) > 0 {
for _, k := range s.userConns.Keys() {
c, _ := s.userConns.Get(k)
(*(c.(*net.Conn))).Close()
s.userConns.Remove(k)
}
}
s.closeLock.Unlock()
break
}
time.Sleep(time.Second * 5)