github.com/sagernet/sing@v0.2.6/common/network/handshake.go (about) 1 package network 2 3 import ( 4 "github.com/sagernet/sing/common" 5 E "github.com/sagernet/sing/common/exceptions" 6 ) 7 8 type HandshakeConn interface { 9 HandshakeFailure(err error) error 10 } 11 12 func HandshakeFailure(conn any, err error) error { 13 if handshakeConn, isHandshakeConn := common.Cast[HandshakeConn](conn); isHandshakeConn { 14 return E.Append(err, handshakeConn.HandshakeFailure(err), func(err error) error { 15 return E.Cause(err, "write handshake failure") 16 }) 17 } 18 return err 19 }