Fix error usages

This commit is contained in:
世界
2025-06-20 12:47:19 +08:00
parent bea26198e7
commit 2121bc3f01
4 changed files with 10 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ package tun
import ( import (
"context" "context"
"errors"
"net" "net"
"os" "os"
"sync" "sync"
@@ -79,7 +80,7 @@ func (c *gLazyConn) HandshakeFailure(err error) error {
if c.handshakeDone { if c.handshakeDone {
return os.ErrInvalid return os.ErrInvalid
} }
c.request.Complete(err != ErrDrop) c.request.Complete(!errors.Is(err, ErrDrop))
c.handshakeDone = true c.handshakeDone = true
c.handshakeErr = err c.handshakeErr = err
return nil return nil

View File

@@ -4,6 +4,7 @@ package tun
import ( import (
"context" "context"
"errors"
"github.com/sagernet/gvisor/pkg/tcpip/stack" "github.com/sagernet/gvisor/pkg/tcpip/stack"
"github.com/sagernet/gvisor/pkg/tcpip/transport/tcp" "github.com/sagernet/gvisor/pkg/tcpip/transport/tcp"
@@ -37,7 +38,7 @@ func (f *TCPForwarder) Forward(r *tcp.ForwarderRequest) {
destination := M.SocksaddrFrom(AddrFromAddress(r.ID().LocalAddress), r.ID().LocalPort) destination := M.SocksaddrFrom(AddrFromAddress(r.ID().LocalAddress), r.ID().LocalPort)
pErr := f.handler.PrepareConnection(N.NetworkTCP, source, destination) pErr := f.handler.PrepareConnection(N.NetworkTCP, source, destination)
if pErr != nil { if pErr != nil {
r.Complete(pErr != ErrDrop) r.Complete(!errors.Is(pErr, ErrDrop))
return return
} }
conn := &gLazyConn{ conn := &gLazyConn{

View File

@@ -4,6 +4,7 @@ package tun
import ( import (
"context" "context"
"errors"
"math" "math"
"net/netip" "net/netip"
"os" "os"
@@ -59,7 +60,7 @@ func rangeIterate(r stack.Range, fn func(*buffer.View))
func (f *UDPForwarder) PreparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) { func (f *UDPForwarder) PreparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) {
pErr := f.handler.PrepareConnection(N.NetworkUDP, source, destination) pErr := f.handler.PrepareConnection(N.NetworkUDP, source, destination)
if pErr != nil { if pErr != nil {
if pErr != ErrDrop { if !errors.Is(pErr, ErrDrop) {
gWriteUnreachable(f.stack, userData.(*stack.PacketBuffer)) gWriteUnreachable(f.stack, userData.(*stack.PacketBuffer))
} }
return false, nil, nil, nil return false, nil, nil, nil

View File

@@ -2,6 +2,7 @@ package tun
import ( import (
"context" "context"
"errors"
"net" "net"
"net/netip" "net/netip"
"syscall" "syscall"
@@ -354,7 +355,7 @@ func (s *System) processIPv4TCP(ipHdr header.IPv4, tcpHdr header.TCP) (bool, err
} else { } else {
natPort, err := s.tcpNat.Lookup(source, destination, s.handler) natPort, err := s.tcpNat.Lookup(source, destination, s.handler)
if err != nil { if err != nil {
if err == ErrDrop { if errors.Is(err, ErrDrop) {
return false, nil return false, nil
} else { } else {
return false, s.resetIPv4TCP(ipHdr, tcpHdr) return false, s.resetIPv4TCP(ipHdr, tcpHdr)
@@ -441,7 +442,7 @@ func (s *System) processIPv6TCP(ipHdr header.IPv6, tcpHdr header.TCP) (bool, err
} else { } else {
natPort, err := s.tcpNat.Lookup(source, destination, s.handler) natPort, err := s.tcpNat.Lookup(source, destination, s.handler)
if err != nil { if err != nil {
if err == ErrDrop { if errors.Is(err, ErrDrop) {
return false, nil return false, nil
} else { } else {
return false, s.resetIPv6TCP(ipHdr, tcpHdr) return false, s.resetIPv6TCP(ipHdr, tcpHdr)
@@ -536,7 +537,7 @@ func (s *System) processIPv6UDP(ipHdr header.IPv6, udpHdr header.UDP) error {
func (s *System) preparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) { func (s *System) preparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) {
pErr := s.handler.PrepareConnection(N.NetworkUDP, source, destination) pErr := s.handler.PrepareConnection(N.NetworkUDP, source, destination)
if pErr != nil { if pErr != nil {
if pErr != ErrDrop { if !errors.Is(pErr, ErrDrop) {
if source.IsIPv4() { if source.IsIPv4() {
ipHdr := userData.(header.IPv4) ipHdr := userData.(header.IPv4)
s.rejectIPv4WithICMP(ipHdr, header.ICMPv4PortUnreachable) s.rejectIPv4WithICMP(ipHdr, header.ICMPv4PortUnreachable)