fix: safeConnClose not working

This commit is contained in:
wwqgtxx
2022-12-13 13:20:40 +08:00
parent 17cbbb5bf0
commit bffb0573a6
8 changed files with 51 additions and 17 deletions

View File

@ -127,7 +127,9 @@ func (t *Trojan) DialContext(ctx context.Context, metadata *C.Metadata, opts ...
}
tcpKeepAlive(c)
defer safeConnClose(c, err)
defer func() {
safeConnClose(c, err)
}()
c, err = t.StreamConn(c, metadata)
if err != nil {
@ -147,13 +149,17 @@ func (t *Trojan) ListenPacketContext(ctx context.Context, metadata *C.Metadata,
if err != nil {
return nil, fmt.Errorf("%s connect error: %w", t.addr, err)
}
defer safeConnClose(c, err)
defer func() {
safeConnClose(c, err)
}()
} else {
c, err = dialer.DialContext(ctx, "tcp", t.addr, t.Base.DialOptions(opts...)...)
if err != nil {
return nil, fmt.Errorf("%s connect error: %w", t.addr, err)
}
defer safeConnClose(c, err)
defer func() {
safeConnClose(c, err)
}()
tcpKeepAlive(c)
c, err = t.plainStream(c)
if err != nil {