Revert "refactor (remove TimeoutOnly)"

This reverts commit 723ef2b8e6.
This commit is contained in:
Meo597
2026-07-08 22:44:16 +08:00
parent 723ef2b8e6
commit 95c960977b
14 changed files with 71 additions and 14 deletions
+4
View File
@@ -214,6 +214,10 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, d internet.
}
}
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
ctx, cancel := context.WithCancel(ctx)
terminate := func() {
cancel()
+4
View File
@@ -388,6 +388,10 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte
defer conn.Close()
errors.LogInfo(ctx, "connection opened to ", destination, ", local endpoint ", conn.LocalAddr(), ", remote endpoint ", conn.RemoteAddr())
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
plcy := h.policy()
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, plcy.Timeouts.ConnectionIdle)
+4
View File
@@ -127,6 +127,10 @@ func (c *Client) Process(ctx context.Context, link *transport.Link, dialer inter
p = c.policyManager.ForLevel(user.Level)
}
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, p.Timeouts.ConnectionIdle)
+4
View File
@@ -67,6 +67,10 @@ func (c *Client) Process(ctx context.Context, link *transport.Link, dialer inter
defer conn.Close()
errors.LogInfo(ctx, "tunneling request to ", target, " via ", target.Network, ":", c.server.Destination.NetAddr())
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
sessionPolicy := c.policyManager.ForLevel(0)
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, sessionPolicy.Timeouts.ConnectionIdle)
+4
View File
@@ -95,6 +95,10 @@ func (c *Client) Process(ctx context.Context, link *transport.Link, dialer inter
}
request.User = user
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
sessionPolicy := c.policyManager.ForLevel(user.Level)
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, sessionPolicy.Timeouts.ConnectionIdle)
+4
View File
@@ -83,6 +83,10 @@ func (o *Outbound) Process(ctx context.Context, link *transport.Link, dialer int
return errors.New("failed to connect to server").Base(err)
}
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
if network == net.Network_TCP {
serverConn := o.method.DialEarlyConn(connection, singbridge.ToSocksaddr(destination))
var handshake bool
+4
View File
@@ -117,6 +117,10 @@ func (c *Client) Process(ctx context.Context, link *transport.Link, dialer inter
errors.LogInfoInner(ctx, err, "failed to clear deadline after handshake")
}
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, p.Timeouts.ConnectionIdle)
+4
View File
@@ -81,6 +81,10 @@ func (c *Client) Process(ctx context.Context, link *transport.Link, dialer inter
return errors.New("user account is not valid")
}
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
sessionPolicy := c.policyManager.ForLevel(user.Level)
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, sessionPolicy.Timeouts.ConnectionIdle)
+4
View File
@@ -294,6 +294,10 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte
ob.CanSpliceCopy = 3
}
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
sessionPolicy := h.policyManager.ForLevel(request.User.Level)
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, sessionPolicy.Timeouts.ConnectionIdle)
+4
View File
@@ -131,6 +131,10 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte
behaviorSeed := crc64.Checksum(hashkdf.Sum(nil), crc64.MakeTable(crc64.ISO))
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
session := encoding.NewClientSession(ctx, int64(behaviorSeed))
sessionPolicy := h.policyManager.ForLevel(request.User.Level)
+4
View File
@@ -165,6 +165,10 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte
return errors.New("invalid target ", ob.Target)
}
if session.TimeoutOnlyFromContext(ctx) {
ctx = context.WithoutCancel(ctx)
}
sessionPolicy := h.policyManager.ForLevel(0)
ctx, cancel := context.WithCancel(ctx)
timer := signal.CancelAfterInactivity(ctx, cancel, sessionPolicy.Timeouts.ConnectionIdle)