Fix context in v2ray http transports

This commit is contained in:
世界
2025-03-14 17:07:17 +08:00
parent 3ae036e997
commit 68ce9577c6
5 changed files with 20 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ package v2rayhttp
import (
std_bufio "bufio"
"context"
"io"
"net"
"net/http"
@@ -10,6 +11,7 @@ import (
"sync"
"time"
"github.com/sagernet/sing-box/log"
"github.com/sagernet/sing/common"
"github.com/sagernet/sing/common/baderror"
"github.com/sagernet/sing/common/buf"
@@ -255,3 +257,11 @@ func (w *HTTP2ConnWrapper) Close() error {
func (w *HTTP2ConnWrapper) Upstream() any {
return w.ExtendedConn
}
func DupContext(ctx context.Context) context.Context {
id, loaded := log.IDFromContext(ctx)
if !loaded {
return context.Background()
}
return log.ContextWithID(context.Background(), id)
}

View File

@@ -132,7 +132,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
if requestBody != nil {
conn = bufio.NewCachedConn(conn, requestBody)
}
s.handler.NewConnectionEx(request.Context(), conn, source, M.Socksaddr{}, nil)
s.handler.NewConnectionEx(DupContext(request.Context()), conn, source, M.Socksaddr{}, nil)
} else {
writer.WriteHeader(http.StatusOK)
done := make(chan struct{})