Fix clash tracker timeout

This commit is contained in:
世界
2022-07-26 06:56:13 +08:00
parent 816d7b734c
commit 593799a988
9 changed files with 34 additions and 15 deletions

View File

@@ -101,12 +101,14 @@ func (s *Server) Close() error {
return s.httpServer.Close()
}
func (s *Server) RoutedConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext, matchedRule adapter.Rule) net.Conn {
return trafficontrol.NewTCPTracker(conn, s.trafficManager, castMetadata(metadata), s.router, matchedRule)
func (s *Server) RoutedConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext, matchedRule adapter.Rule) (net.Conn, adapter.Tracker) {
tracker := trafficontrol.NewTCPTracker(conn, s.trafficManager, castMetadata(metadata), s.router, matchedRule)
return tracker, tracker
}
func (s *Server) RoutedPacketConnection(ctx context.Context, conn N.PacketConn, metadata adapter.InboundContext, matchedRule adapter.Rule) N.PacketConn {
return trafficontrol.NewUDPTracker(conn, s.trafficManager, castMetadata(metadata), s.router, matchedRule)
func (s *Server) RoutedPacketConnection(ctx context.Context, conn N.PacketConn, metadata adapter.InboundContext, matchedRule adapter.Rule) (N.PacketConn, adapter.Tracker) {
tracker := trafficontrol.NewUDPTracker(conn, s.trafficManager, castMetadata(metadata), s.router, matchedRule)
return tracker, tracker
}
func castMetadata(metadata adapter.InboundContext) trafficontrol.Metadata {

View File

@@ -31,6 +31,7 @@ type Metadata struct {
type tracker interface {
ID() string
Close() error
Leave()
}
type trackerInfo struct {
@@ -75,6 +76,10 @@ func (tt *tcpTracker) Close() error {
return tt.Conn.Close()
}
func (tt *tcpTracker) Leave() {
tt.manager.Leave(tt)
}
func NewTCPTracker(conn net.Conn, manager *Manager, metadata Metadata, router adapter.Router, rule adapter.Rule) *tcpTracker {
uuid, _ := uuid.NewV4()
@@ -158,6 +163,10 @@ func (ut *udpTracker) Close() error {
return ut.PacketConn.Close()
}
func (ut *udpTracker) Leave() {
ut.manager.Leave(ut)
}
func NewUDPTracker(conn N.PacketConn, manager *Manager, metadata Metadata, router adapter.Router, rule adapter.Rule) *udpTracker {
uuid, _ := uuid.NewV4()