Преглед на файлове

Set a short timeout for dns

Fangliding преди 1 година
родител
ревизия
d0911cec88
променени са 1 файла, в които са добавени 8 реда и са изтрити 1 реда
  1. 8 1
      proxy/dokodemo/dokodemo.go

+ 8 - 1
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