Browse Source

Fix TProxy Process Logic

Shelikhoo 5 years ago
parent
commit
3e13d79af7
2 changed files with 4 additions and 2 deletions
  1. 1 1
      app/proxyman/inbound/worker.go
  2. 3 1
      proxy/dokodemo/dokodemo.go

+ 1 - 1
app/proxyman/inbound/worker.go

@@ -332,7 +332,7 @@ func (w *udpWorker) clean() error {
 	}
 
 	for addr, conn := range w.activeConn {
-		if nowSec-atomic.LoadInt64(&conn.lastActivityTime) > 8 {
+		if nowSec-atomic.LoadInt64(&conn.lastActivityTime) > 8 { //TODO Timeout too small
 			delete(w.activeConn, addr)
 			conn.Close() // nolint: errcheck
 		}

+ 3 - 1
proxy/dokodemo/dokodemo.go

@@ -188,7 +188,9 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn in
 		return nil
 	}
 
-	if err := task.Run(ctx, task.OnSuccess(requestDone, task.Close(link.Writer)), responseDone, tproxyRequest); err != nil {
+	if err := task.Run(ctx, task.OnSuccess(func() error {
+		return task.Run(ctx, requestDone, tproxyRequest)
+	}, task.Close(link.Writer)), responseDone); err != nil {
 		common.Interrupt(link.Reader)
 		common.Interrupt(link.Writer)
 		return newError("connection ends").Base(err)