mirror of
https://github.com/SagerNet/sing.git
synced 2025-04-02 03:17:37 +03:00
Fix HandshakeFailure usages
This commit is contained in:
parent
7f621fdd78
commit
e52e04f721
3 changed files with 10 additions and 7 deletions
|
@ -13,10 +13,6 @@ type Dialer interface {
|
|||
ListenPacket(ctx context.Context, destination M.Socksaddr) (net.PacketConn, error)
|
||||
}
|
||||
|
||||
type PayloadDialer interface {
|
||||
DialPayloadContext(ctx context.Context, network string, destination M.Socksaddr, payload [][]byte) (net.Conn, error)
|
||||
}
|
||||
|
||||
type ParallelDialer interface {
|
||||
Dialer
|
||||
DialParallel(ctx context.Context, network string, destination M.Socksaddr, destinationAddresses []netip.Addr) (net.Conn, error)
|
||||
|
|
|
@ -36,7 +36,13 @@ func ReportHandshakeFailure(reporter any, err error) error {
|
|||
func CloseOnHandshakeFailure(reporter any, onClose CloseHandlerFunc, err error) error {
|
||||
if err != nil {
|
||||
if handshakeConn, isHandshakeConn := common.Cast[HandshakeFailure](reporter); isHandshakeConn {
|
||||
err = E.Append(err, handshakeConn.HandshakeFailure(err), func(err error) error {
|
||||
hErr := handshakeConn.HandshakeFailure(err)
|
||||
err = E.Append(err, hErr, func(err error) error {
|
||||
if closer, isCloser := reporter.(io.Closer); isCloser {
|
||||
err = E.Append(err, closer.Close(), func(err error) error {
|
||||
return E.Cause(err, "close")
|
||||
})
|
||||
}
|
||||
return E.Cause(err, "write handshake failure")
|
||||
})
|
||||
} else {
|
||||
|
|
|
@ -2,6 +2,7 @@ package socks
|
|||
|
||||
import (
|
||||
"net"
|
||||
"os"
|
||||
|
||||
"github.com/sagernet/sing/common/buf"
|
||||
"github.com/sagernet/sing/common/bufio"
|
||||
|
@ -48,7 +49,7 @@ func (c *LazyConn) ConnHandshakeSuccess(conn net.Conn) error {
|
|||
|
||||
func (c *LazyConn) HandshakeFailure(err error) error {
|
||||
if c.responseWritten {
|
||||
return nil
|
||||
return os.ErrInvalid
|
||||
}
|
||||
defer func() {
|
||||
c.responseWritten = true
|
||||
|
@ -130,7 +131,7 @@ func (c *LazyAssociatePacketConn) HandshakeSuccess() error {
|
|||
|
||||
func (c *LazyAssociatePacketConn) HandshakeFailure(err error) error {
|
||||
if c.responseWritten {
|
||||
return nil
|
||||
return os.ErrInvalid
|
||||
}
|
||||
defer func() {
|
||||
c.responseWritten = true
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue