Skip to content

Commit e52e04f

Browse files
committed
Fix HandshakeFailure usages
1 parent 7f621fd commit e52e04f

3 files changed

Lines changed: 10 additions & 7 deletions

File tree

common/network/dialer.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ type Dialer interface {
1313
ListenPacket(ctx context.Context, destination M.Socksaddr) (net.PacketConn, error)
1414
}
1515

16-
type PayloadDialer interface {
17-
DialPayloadContext(ctx context.Context, network string, destination M.Socksaddr, payload [][]byte) (net.Conn, error)
18-
}
19-
2016
type ParallelDialer interface {
2117
Dialer
2218
DialParallel(ctx context.Context, network string, destination M.Socksaddr, destinationAddresses []netip.Addr) (net.Conn, error)

common/network/handshake.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,13 @@ func ReportHandshakeFailure(reporter any, err error) error {
3636
func CloseOnHandshakeFailure(reporter any, onClose CloseHandlerFunc, err error) error {
3737
if err != nil {
3838
if handshakeConn, isHandshakeConn := common.Cast[HandshakeFailure](reporter); isHandshakeConn {
39-
err = E.Append(err, handshakeConn.HandshakeFailure(err), func(err error) error {
39+
hErr := handshakeConn.HandshakeFailure(err)
40+
err = E.Append(err, hErr, func(err error) error {
41+
if closer, isCloser := reporter.(io.Closer); isCloser {
42+
err = E.Append(err, closer.Close(), func(err error) error {
43+
return E.Cause(err, "close")
44+
})
45+
}
4046
return E.Cause(err, "write handshake failure")
4147
})
4248
} else {

protocol/socks/lazy.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package socks
22

33
import (
44
"net"
5+
"os"
56

67
"github.com/sagernet/sing/common/buf"
78
"github.com/sagernet/sing/common/bufio"
@@ -48,7 +49,7 @@ func (c *LazyConn) ConnHandshakeSuccess(conn net.Conn) error {
4849

4950
func (c *LazyConn) HandshakeFailure(err error) error {
5051
if c.responseWritten {
51-
return nil
52+
return os.ErrInvalid
5253
}
5354
defer func() {
5455
c.responseWritten = true
@@ -130,7 +131,7 @@ func (c *LazyAssociatePacketConn) HandshakeSuccess() error {
130131

131132
func (c *LazyAssociatePacketConn) HandshakeFailure(err error) error {
132133
if c.responseWritten {
133-
return nil
134+
return os.ErrInvalid
134135
}
135136
defer func() {
136137
c.responseWritten = true

0 commit comments

Comments
 (0)