mirror of https://github.com/v2ray/v2ray-core
				
				
				
			remove warning messages in quic
							parent
							
								
									45fbf6f059
								
							
						
					
					
						commit
						f70712a1a3
					
				|  | @ -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 | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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 | ||||
| 			} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Darien Raymond
						Darien Raymond