mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-08-22 09:36:49 +08:00
Compare commits
3 Commits
v25.7.26
...
dev-dokodn
Author | SHA1 | Date | |
---|---|---|---|
![]() |
56cd5643d8 | ||
![]() |
d0911cec88 | ||
![]() |
2782f13279 |
@@ -3,6 +3,7 @@ package dokodemo
|
||||
import (
|
||||
"context"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/xtls/xray-core/common"
|
||||
"github.com/xtls/xray-core/common/buf"
|
||||
@@ -114,7 +115,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
|
||||
@@ -180,7 +188,6 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn st
|
||||
return err
|
||||
}
|
||||
writer = NewPacketWriter(pConn, &dest, mark, back)
|
||||
defer writer.(*PacketWriter).Close()
|
||||
/*
|
||||
sockopt := &internet.SocketConfig{
|
||||
Tproxy: internet.SocketConfig_TProxy,
|
||||
@@ -219,6 +226,10 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn st
|
||||
responseDone := func() error {
|
||||
defer timer.SetTimeout(plcy.Timeouts.UplinkOnly)
|
||||
|
||||
if pw, ok := writer.(*PacketWriter); ok {
|
||||
defer pw.Close()
|
||||
}
|
||||
|
||||
if err := buf.Copy(link.Reader, writer, buf.UpdateActivity(timer)); err != nil {
|
||||
return errors.New("failed to transport response").Base(err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user