From 4593dceb105d85e966df8bb8359f32ebc999ff27 Mon Sep 17 00:00:00 2001
From: arm64v8a <48624112+arm64v8a@users.noreply.github.com>
Date: Sat, 20 Aug 2022 10:06:17 +0800
Subject: [PATCH] chore: enable quic sniffing

---
 .../nekohasekai/sagernet/fmt/ConfigBuilder.kt |  8 +++---
 libcore/tun.go                                | 27 ++++++++++++-------
 2 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt b/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt
index f92109a14..1b791f834 100644
--- a/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt
+++ b/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt
@@ -211,8 +211,8 @@ fun buildV2RayConfig(
                     enabled = true
                     destOverride = when {
                         useFakeDns && !trafficSniffing -> listOf("fakedns")
-                        useFakeDns -> listOf("fakedns", "http", "tls")
-                        else -> listOf("http", "tls")
+                        useFakeDns -> listOf("fakedns", "http", "tls", "quic")
+                        else -> listOf("http", "tls", "quic")
                     }
                     metadataOnly = useFakeDns && !trafficSniffing
                     routeOnly = true
@@ -261,8 +261,8 @@ fun buildV2RayConfig(
                         enabled = true
                         destOverride = when {
                             useFakeDns && !trafficSniffing -> listOf("fakedns")
-                            useFakeDns -> listOf("fakedns", "http", "tls")
-                            else -> listOf("http", "tls")
+                            useFakeDns -> listOf("fakedns", "http", "tls", "quic")
+                            else -> listOf("http", "tls", "quic")
                         }
                         metadataOnly = useFakeDns && !trafficSniffing
                         routeOnly = true
diff --git a/libcore/tun.go b/libcore/tun.go
index ede11d9bf..194c3e486 100644
--- a/libcore/tun.go
+++ b/libcore/tun.go
@@ -397,15 +397,24 @@ func (t *Tun2ray) NewPacket(source v2rayNet.Destination, destination v2rayNet.De
 
 	ctx := session.ContextWithInbound(context.Background(), inbound)
 
-	if !isDns && t.fakedns {
-		ctx = session.ContextWithContent(ctx, &session.Content{
-			SniffingRequest: session.SniffingRequest{
-				Enabled:                        true,
-				MetadataOnly:                   t.fakedns && !t.sniffing,
-				OverrideDestinationForProtocol: []string{"fakedns"},
-				RouteOnly:                      true,
-			},
-		})
+	if !isDns {
+		override := []string{}
+		if t.fakedns {
+			override = append(override, "fakedns")
+		}
+		if t.sniffing {
+			override = append(override, "quic")
+		}
+		if len(override) != 0 {
+			ctx = session.ContextWithContent(ctx, &session.Content{
+				SniffingRequest: session.SniffingRequest{
+					Enabled:                        true,
+					MetadataOnly:                   t.fakedns && !t.sniffing,
+					OverrideDestinationForProtocol: override,
+					RouteOnly:                      true,
+				},
+			})
+		}
 	}
 
 	workerN := 1