@@ -22,6 +22,7 @@ import (
22
22
"github.com/metacubex/mihomo/common/buf"
23
23
"github.com/metacubex/mihomo/common/pool"
24
24
tlsC "github.com/metacubex/mihomo/component/tls"
25
+ C "github.com/metacubex/mihomo/constant"
25
26
26
27
"golang.org/x/net/http2"
27
28
)
@@ -224,11 +225,9 @@ func (g *Conn) SetDeadline(t time.Time) error {
224
225
}
225
226
226
227
func NewHTTP2Client (dialFn DialFn , tlsConfig * tls.Config , Fingerprint string , realityConfig * tlsC.RealityConfig ) * TransportWrap {
227
- closed := & atomic.Bool {}
228
228
dialFunc := func (ctx context.Context , network , addr string , cfg * tls.Config ) (net.Conn , error ) {
229
- if closed .Load () {
230
- return nil , errors .New ("transport closed" )
231
- }
229
+ ctx , cancel := context .WithTimeout (ctx , C .DefaultTLSTimeout )
230
+ defer cancel ()
232
231
pconn , err := dialFn (ctx , network , addr )
233
232
if err != nil {
234
233
return nil , err
@@ -291,9 +290,12 @@ func NewHTTP2Client(dialFn DialFn, tlsConfig *tls.Config, Fingerprint string, re
291
290
DisableCompression : true ,
292
291
PingTimeout : 0 ,
293
292
}
293
+
294
+ ctx , cancel := context .WithCancel (context .Background ())
294
295
wrap := & TransportWrap {
295
296
Transport : transport ,
296
- closed : closed ,
297
+ ctx : ctx ,
298
+ cancel : cancel ,
297
299
}
298
300
return wrap
299
301
}
@@ -320,6 +322,7 @@ func StreamGunWithTransport(transport *TransportWrap, cfg *Config) (net.Conn, er
320
322
ProtoMinor : 0 ,
321
323
Header : defaultHeader ,
322
324
}
325
+ request = request .WithContext (transport .ctx )
323
326
324
327
conn := & Conn {
325
328
initFn : func () (io.ReadCloser , netAddr , error ) {
0 commit comments