From f70712a1a31dedced2ae69e41dc6a057aaa3b3f4 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Mon, 26 Nov 2018 18:00:41 +0100 Subject: [PATCH] remove warning messages in quic --- transport/internet/quic/conn.go | 14 ++------- transport/internet/quic/dialer.go | 51 +++++-------------------------- transport/internet/quic/hub.go | 5 ++- 3 files changed, 13 insertions(+), 57 deletions(-) diff --git a/transport/internet/quic/conn.go b/transport/internet/quic/conn.go index f09682375..fc13abdd3 100644 --- a/transport/internet/quic/conn.go +++ b/transport/internet/quic/conn.go @@ -10,7 +10,6 @@ import ( "v2ray.com/core/common" "v2ray.com/core/common/buf" "v2ray.com/core/common/net" - "v2ray.com/core/common/signal/done" "v2ray.com/core/transport/internet" ) @@ -134,11 +133,9 @@ func (c *sysConn) SetWriteDeadline(t time.Time) error { } type interConn struct { - context *sessionContext - stream quic.Stream - done *done.Instance - local net.Addr - remote net.Addr + stream quic.Stream + local net.Addr + remote net.Addr } func (c *interConn) Read(b []byte) (int, error) { @@ -185,11 +182,6 @@ func (c *interConn) Write(b []byte) (int, error) { } func (c *interConn) Close() error { - if c.context != nil { - defer c.context.onInterConnClose() - } - - common.Must(c.done.Close()) c.stream.CancelRead(1) c.stream.CancelWrite(1) return nil diff --git a/transport/internet/quic/dialer.go b/transport/internet/quic/dialer.go index 315b7983f..169f6e325 100644 --- a/transport/internet/quic/dialer.go +++ b/transport/internet/quic/dialer.go @@ -8,27 +8,20 @@ import ( quic "github.com/lucas-clemente/quic-go" "v2ray.com/core/common" "v2ray.com/core/common/net" - "v2ray.com/core/common/signal/done" "v2ray.com/core/common/task" "v2ray.com/core/transport/internet" "v2ray.com/core/transport/internet/tls" ) type sessionContext struct { - access sync.Mutex - done *done.Instance - rawConn *sysConn - session quic.Session - interConns []*interConn + rawConn *sysConn + session quic.Session } var errSessionClosed = newError("session closed") func (c *sessionContext) openStream(destAddr net.Addr) (*interConn, error) { - c.access.Lock() - defer c.access.Unlock() - - if c.done.Done() { + if !isActive(c.session) { return nil, errSessionClosed } @@ -38,41 +31,14 @@ func (c *sessionContext) openStream(destAddr net.Addr) (*interConn, error) { } conn := &interConn{ - stream: stream, - done: done.New(), - local: c.session.LocalAddr(), - remote: destAddr, - context: c, + stream: stream, + local: c.session.LocalAddr(), + remote: destAddr, } - c.interConns = append(c.interConns, conn) return conn, nil } -func (c *sessionContext) onInterConnClose() { - c.access.Lock() - defer c.access.Unlock() - - if c.done.Done() { - return - } - - activeConns := 0 - for _, conn := range c.interConns { - if !conn.done.Done() { - activeConns++ - } - } - - if activeConns > 0 { - return - } - - c.done.Close() - c.session.Close() - c.rawConn.Close() -} - type clientSessions struct { access sync.Mutex sessions map[net.Destination][]*sessionContext @@ -96,10 +62,10 @@ func removeInactiveSessions(sessions []*sessionContext) []*sessionContext { continue } if err := s.session.Close(); err != nil { - newError("failed to close session").Base(err).AtWarning().WriteToLog() + newError("failed to close session").Base(err).WriteToLog() } if err := s.rawConn.Close(); err != nil { - newError("failed to close raw connection").Base(err).AtWarning().WriteToLog() + newError("failed to close raw connection").Base(err).WriteToLog() } } @@ -203,7 +169,6 @@ func (s *clientSessions) openConnection(destAddr net.Addr, config *Config, tlsCo context := &sessionContext{ session: session, rawConn: conn, - done: done.New(), } s.sessions[dest] = append(sessions, context) return context.openStream(destAddr) diff --git a/transport/internet/quic/hub.go b/transport/internet/quic/hub.go index eb11b4d07..4618a4225 100644 --- a/transport/internet/quic/hub.go +++ b/transport/internet/quic/hub.go @@ -25,7 +25,7 @@ func (l *Listener) acceptStreams(session quic.Session) { for { stream, err := session.AcceptStream() if err != nil { - newError("failed to accept stream").Base(err).AtWarning().WriteToLog() + newError("failed to accept stream").Base(err).WriteToLog() select { case <-session.Context().Done(): return @@ -40,7 +40,6 @@ func (l *Listener) acceptStreams(session quic.Session) { conn := &interConn{ stream: stream, - done: done.New(), local: session.LocalAddr(), remote: session.RemoteAddr(), } @@ -54,7 +53,7 @@ func (l *Listener) keepAccepting() { for { conn, err := l.listener.Accept() if err != nil { - newError("failed to accept QUIC sessions").Base(err).AtWarning().WriteToLog() + newError("failed to accept QUIC sessions").Base(err).WriteToLog() if l.done.Done() { break }