From d0911cec88b0966aa6c3169331746cf5a5cb952d Mon Sep 17 00:00:00 2001
From: Fangliding <Fangliding.fshxy@outlook.com>
Date: Fri, 27 Dec 2024 02:12:05 +0800
Subject: [PATCH] Set a short timeout for dns

---
 proxy/dokodemo/dokodemo.go | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/proxy/dokodemo/dokodemo.go b/proxy/dokodemo/dokodemo.go
index d5d7480b..05de7d53 100644
--- a/proxy/dokodemo/dokodemo.go
+++ b/proxy/dokodemo/dokodemo.go
@@ -114,7 +114,14 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn st
 
 	plcy := d.policy()
 	ctx, cancel := context.WithCancel(ctx)
-	timer := signal.CancelAfterInactivity(ctx, cancel, plcy.Timeouts.ConnectionIdle)
+
+	var timer *signal.ActivityTimer
+	// if dns req, set a short timeout value
+	if dest.Port == 53 {
+		timer = signal.CancelAfterInactivity(ctx, cancel, 10*time.Second)
+	} else {
+		timer = signal.CancelAfterInactivity(ctx, cancel, plcy.Timeouts.ConnectionIdle)
+	}
 
 	if inbound != nil {
 		inbound.Timer = timer